数学建模-选课问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选课问题
小组成员:李桥鸽李嘉仪陈清珂
一、摘要
大学生在学习中常会遇到选课问题,既要使自己所选择的课程符合自己的兴趣,又要用最少的课程达到最好的效果,最重要是满足学校所修课程的要求以达到毕业,有些课程必须在具备基础科目学习经历的前提下才能进行选择,,在这多种因素引导下选课过程往往发生矛盾。
因此只有对各种因素进行周密考虑,最终方可得出最优化的结果。
选课所得到的结果必然为整数,因此本题可以可归结为整数线性规划的最优化问题。
二.问题重述
某学校规定,其运筹学专业的学生想要毕业,就至少要修过两门数学课,三门运筹学课和两门计算机课。
而其备选课程供有9种,按1到9编号,都有其各自对应的学分,以及对于先修课程的要求。
在满足题设要求的前提下,提出问题:
1.学生毕业时最少可以学习哪些课程;
2.学生选择哪些课程可以使自己选修的课程数量少而所获总学分多?
3. 对课程数目和学分具不同的比例偏好的人,如何选择?
(以偏好比例课程数比总学分=7:3为例)
三、问题分析
根据题目要求,学生选修课程必须同时满足下列条件:
(1)任何一个学生所选择的所有课程中,至少应包括两门属于数学类的课程,三门属于运筹学类的课程以及两门属于计算机类的课程;
(2)课程编号为3、4、5、6、8、9的六门课选修前都必须先学过其他几门课。
要选3号或5号、9号课程就必须先学1、2号课程,要选4号或6号课程就必须先学7号课程,要学8号课程就必须先学5号课程。
因此,针对目标一,要求所选符合上述要求的课程数量最少,我们选择了以下方案首先选择1,2再选择课程5,8,其次选择课程课程7,6;如此来看这样只用选择六个课程就可以完成所也需要的要求,粗略的估计出选择1,2,5,8,7,6这几个课程是最好的结果;针对目标二,要求选择的符合要求的课程数量最少的同时其累计学分最多,我们也认为这个方案可以获得的学分为22分即是最好的结果。
但这都是主观上的判断,难免有偏差。
由于本题研究的是选课过程的最优化结果,因此首先必须根据所给条件,分析出各个课程之间的关系,并用清晰的数学表达式描述。
因此,我们建立0-1型整数线性规划模型,对结果进行分别预测后通过Matlab求解多目标规划模型,并将之前预测结果和求解结果进行比较,得到选课结果的最优化组合。
四.模型假设
1.假设各个同学在选修课程中不受其他因素影响,只受学分和课程门数影响。
2.假设学生选课时已经提前达到了先修课要求,如在选“最优化方法”时已经考虑带先选了“微积分”和“线性代数”。
3.假设学生的信息是不公开的,且学生选课不受其他同学的影响,根据自己的需求进行选课。
4.各个同学可以选课数目最少并且能够获得最高的学分,达到以较少课时换取较高学分的要求。
5.假设在选课过程中选课都能选上,且能一次性通过该课程的考核并获得相应的学分。
五.变量及符号说明
1.Xi表示选课表中第i门课程的选择
2.Xi=1(0)表示选修(不选)题目表中编号顺序的9门课程的第i 门
3.minZ表示选课中获得的最低学分
4.max w表示选课中获得的最高学分
5.第三问中:Z选课数量,M:学分多少,
Y为学分数和课程数的综合目标
令 x i=1 代表选修课程号为i 的课程
x i=0 代表不选择选修课程号为i 的课程
六.模型建立与求解
(一)问题一:用x i=1(0)表示选修(不选)按上表中编号顺序的9门
课程的第i门课.
问题①决策目标为选修课程门数最少,即
min z=∑j=19x i.
即min z=x1+x2+x3+x4+x5+x6+x7+x8+x9; 其约束条件包括:
首先,每人最少要选2门数学课,3门运筹学课和2门计算机课,其次,某些课有先修课的要求,例如,数据结构的先修课是计算机编程,这意味着x4=1蕴涵x7=1,这个条件可表示为x4≤x7或 x4-x7≤0.同理,最优化方法的先修课是微积分和线性代数的条件可表示为x3≤x1,x3≤x2,此二式可合并为一个不等式,2x3≤x1+x2;
综上,按表中课程类别划分可将此约束表示为
x1+x2+x3+x4+x5≥2;
x3+ x5+x6+ x8+x9≥3;
x4+ x6+x7 +x9≥2;
x1+x2-2x3≥0;
x1+x2-2x5≥0;
x7-x4≥0;
x7-x6≥0;
x5-x8≥0;
x1+x2-2x9≥0;
xi=0 or 1 (i=0,…,9);
将其转化为matlab标准型为:
min z=x1+x2+x3+x4+x5+x6+x7+x8+x9;
-1 -1 -1 -1 -1 0 0 0 0 X1 -2
0 0 -1 0 -1 -1 0 -1 -1 X2 -3
0 0 0 -1 0 -1 -1 0 -1 X3 -2
-1 -1 2 0 0 0 0 0 0 X4 0
0 0 0 1 0 0 -1 0 0 X5 ≦ 0
-1 -1 0 0 2 0 0 0 0 X6 0
0 0 0 0 0 1 -1 0 0 X7 0
0 0 0 0 1 0 0 -1 0 X8 0
-1 -1 0 0 0 0 0 0 2 X9 0
Matlab程序及结果:
>> z=[5,4,4,3,4,3,2,2,3];f=[1;1;1;1;1;1;1;1;1];
a=[1,1,1,1,1,0,0,0,0;0,0,1,0,1,1,0,1,0;0,0,0,1,0,1,1,0,1;1, 1,-2,0,0,0,0,0,0;1,1,0,0,-2,0,0,0,0;0,0,0,-1,0,0,1,0,0;0,0, 0,0,0,-1,1,0,0;0,0,0,0,1,0,0,-1,0;1,1,0,0,0,0,0,0,-2];
b=[2;3;2;0;0;0;0;0;0];
[x,y]=bintprog(f,-a,-b,[],[]);x,y,c=z*x
Optimization terminated.
x =
1
1
1
1
1
1
y =
6
c =
20
由屏幕最后显示结果得: 最优解 x1=x2=x5=x6=x7=x8=1, x3=x4=x9=0 目标函数最小值 z=6。
即应该选修微积分,线性代数,应用统计,计算机模拟,计算机编程,预测理论等6门课,最小选课门数是6,获得学分为20.
问题二:数学模型为:
约束条件基本类似于问题一,但在二中我们将选择的六门课程作为固定指标,看是否存在更优的选择在选课少的情况下,使得目标函数总学分最大化。
max w=5x1+4x2+4x3+3x4+4x5+3x6+2x7+2x8+3x9;
x1+x2+x3+x4+x5≥2;
x3+ x5+x6+ x8+x9≥3;
x4+ x6+x7 +x9≥2;
x1+x2-2x3≥0;
x1+x2-2x5≥0;
x7-x4≥0;
x7-x6≥0;
x5-x8≥0;
x1+x2-2x9≥0;
x1+x2+x3+x4+x5+x6+x7+x8+x9=6;
xi=0 or 1 (i=0,…,9);
将其转化为matlab标准型为:
min w’= - (5x1+4x2+4x3+3x4+4x5+3x6+2x7+2x8+3x9); -1 -1 -1 -1 -1 0 0 0 0 X1 -2 0 0 -1 0 -1 -1 0 -1 -1 X2 -3 0 0 0 -1 0 -1 -1 0 -1 X3 -2 -1 -1 2 0 0 0 0 0 0 X4 0 0 0 0 1 0 0 -1 0 0 X5 ≦ 0 -1 -1 0 0 2 0 0 0 0 X6 0
0 0 0 0 0 1 -1 0 0 X7 0
0 0 0 0 1 0 0 -1 0 X8 0 -1 -1 0 0 0 0 0 0 2 X9 0
X1
X2
X3
X4
(1 1 1 1 1 1 1 1 1 ) X5 ≒ 6
X6
X7
X8
X9
Matlab程序及结果:
>> f=[5;4;4;3;4;3;2;2;3];
a=[1,1,1,1,1,0,0,0,0;0,0,1,0,1,1,0,1,0;0,0,0,1,0,1,1,0,1;1, 1,-2,0,0,0,0,0,0;1,1,0,0,-2,0,0,0,0;0,0,0,-1,0,0,1,0,0;0,0, 0,0,0,-1,1,0,0;0,0,0,0,1,0,0,-1,0;1,1,0,0,0,0,0,0,-2];
b=[2;3;2;0;0;0;0;0;0];aeq=[1,1,1,1,1,1,1,1,1];beq=[6]; [x,y]=bintprog(-f,-a,-b,aeq,beq);x,y=-y
Optimization terminated.
x =
1
1
1
1 1 1 0 0 y =
22
由屏幕最后显示结果得:
最优解 x 1=x 2=x 3=x 5=x 6=x 7=1, x 4=x 8=x 9=0
在同样选择六门课的前提下,目标函数最大值 z=22.也就是最大学分为22分。
故应按此种方法进行选课。
由上述两个问题得出的结果可以看出,22学分的课程组合与20分的课程组合相比是用课程3-最优化方法替换了课程8-预测理论,是因为它们都属于运筹学范畴,不同的是课程3同时属于数学范畴,并且学分多于课程8.而没有在第一问求解中就选择课程3也是因为它所代表的类别多于课程8,相对于选修课程最少这一条件,它显然不是最优的。
故而我们认为所作出的结果是合理的,与前期预测也较相符。
(三)问题三:对学分数和课程数加权形成一个目标,如三七开。
W
Z W Z Y Min 3.07.021-=-=λλ
∑==9
1i i
x Z
最优解: x 1 = x 2 = x 3 = x 4 = x 5 = x 6 = x 7 = x 9 =1, 其它为0 总学分28 七、拓展
八.模型评价
本文研究了选课问题的最优化选择,充分考虑了实际情况,不失一般性,我们讨论了多种课程选择分配的方案并对每一种方案进行了预算通过课程的数量对比以及可以获得的学分的总和对比最终选择出一个选课数量最少且获得学分最多的方案,建立了0-1型整数线性规划模型,对结果进行分别预测后通过Matlab 求解多目标规划模型,并将之前预测结果和求解结果进行比较,得到选课结果的最优化组
9
8765
4321322343445x x x x x x x x x W ++++++++=
合。
通过上述实例从模型优化后的计算结果可以看出:在选课情况正常的条件下,对于课程的选择可以达到最优化,可以尽可能选数量少的课程获得尽量多的学分,从而达到要求。
上述例子的计算结果充分表明了该模型的有效性,上述例子中的变量Xi的引入使得实际问题能够与数学关系进行合理的转化,并且对各个变量进行一定的线性表示,将条件带入使得实际要求转化为数学表达式,这样一来,将一个复杂的实际问题转化为简单的数学问题并利用Matlab求解了多目标规划模型。