选课问题数学建模Word文档格式.docx

上传人:b****3 文档编号:16615756 上传时间:2022-11-24 格式:DOCX 页数:13 大小:31.38KB
下载 相关 举报
选课问题数学建模Word文档格式.docx_第1页
第1页 / 共13页
选课问题数学建模Word文档格式.docx_第2页
第2页 / 共13页
选课问题数学建模Word文档格式.docx_第3页
第3页 / 共13页
选课问题数学建模Word文档格式.docx_第4页
第4页 / 共13页
选课问题数学建模Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

选课问题数学建模Word文档格式.docx

《选课问题数学建模Word文档格式.docx》由会员分享,可在线阅读,更多相关《选课问题数学建模Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

选课问题数学建模Word文档格式.docx

任选课课号

9

10

11

12

13

14

15

16

17

18

限选课课号

6

7

8

按学校规定,学生每个学期选修的总学分数不能少于20学分,因此该同学必须在上述18门课中至少选修18个学分,学校还规定学生每学期选修任选课的比例不能少于所修总学分(包括2个必修学分)的1/6,也不能超过所修总学分的1/3。

学院也规定,课号为5,6,7,8的课程必须至少选一门。

1)为了达到学校和院系的规定,该同学下学期最少应该选几门课?

应该选哪几门课?

2)若考虑在选修最少学分的情况下,该同学最多可以选修几门课?

选哪几门?

三.模型假设

(1)学生选修任何课程都是随机的,不存在主观意图。

实际生活中选课程是有主观意图的,但是本问题中不考虑这一点。

(2)学生只要选修某门课程,就认为他能够获得该门课程的学分,不考虑实际生活中的考试不及格得不到学分的情况。

(3)学校所给的课程,不管任何课程,都应当是做过调研,一般情况下学生只要选择,就能选上,而不会出现连选几门都选不上的局面。

也就是说选课所给的限制人数应当是合理的限制。

4.问题分析

根据提出的问题,学生要选修的课程必须同时满足下列四条:

(a)任何学生每个学期选修的总学分数不能少于20学分(包括2个必修学分),所以除了必修课程外,任何学生必须在上述18门课中至少选修18个学分

(b)学校规定,课号为5,6,7,8的课程必须至少选一门。

(c)同时选修的课必须同时选修,不能不选修。

例如某学生选9号课,那么他也必须同时选修8号课。

同时选修的矩阵是

(d)学校规定学生每学期选修任选课的比例不能少于所修总学分(包括2个必修学分)的1/6,也不能超过所修总学分的1/3。

注意,总修学分包括必修课的2学分。

两个个问题都需要选课方案。

比如第一个问题,“为了达到学校和院系的规定,该同学下学期最少应该选几门课?

”学校规定最少学分是20分,去掉2分的必修学分,那么要从剩下18门课程中选择至少18个学分。

问题问的是“最少应选几门课?

”按照最少18分的限制,从1门、2门、3门、4门、5门……收入来思考,发现至少应该选5门课,因为如果选4门课,要达到最少学分势必需要选那些学分值大的课,只能选1、2、3、4这四门课,这四门课的学分加了起来正好是18分,但虽然学分数满足了,可是并不满足其余的三条,所以这种选法是不对的。

选5门课就能得到要求。

例如选1、2、3、6、10、14就其中一种选课方案,它满足上述4条。

四条规定相互制约,错综复杂,单靠人力来一组一组的确定是不可能完成的。

5.模型建立

本问题的解答模型就是排列组合的知识。

首先说明一点,因为课程号码有的与学分值的数目相同,为了避免在计算机上处理过程中出现紊乱,我们统一把课程号码加上10,课号1-18,就变成了11-28。

假设这个同学在符合学校规定要求的前提下要选n门课,

第一步,首先把11-28门课程抽出n门课进行组合,共有

种。

利用Matlab的命令就是combntns([11:

28],n),这个命令产生的结果是一个矩阵,每一行就是n门课的一个组合。

令选课组合xkzuhe=combntns([11:

28],n)

第二步以下分四个模块,每个模块使用一个矩阵来存储该模块筛选合格的数据。

(a)第一个模块是判断每个n门课组合的学分总和是否大于18分,如果大于等于18分,就保留,并且把该条n门课组合添加到矩阵a中。

矩阵a用来存储满足了大于18分的n门课的组合。

(b)第二个模块是判断矩阵a中每个n门课的组合是否是含有5,6,7,8至少一门课。

如果是至少含有5,6,7,8至少一门课,就把该行记录添加到b矩阵里,矩阵b用来存储满足了含有5,6,7,8至少一门课的组合

(c)第三个模块是c模块,用来存放满足同时选修要求的n门课的组合数据。

先分析以下同时选修的要求,在一个n门课的组合中,比如有15号课,就必须有11号课;

有17号课,就必须有12号课;

有19号课,就必须有18号课等等。

一方面,要判断任意一个n门课组合是不是符合上述要求,比如它含有15号课,又同时含有11号课,那么就保留这个n门课组合;

另一方面,经过上述的判断保留,b矩阵就删除了一部分不符合要求的,但是保留的却也不是都适合,比如一个记录,含有15号课且含有11号课,保留下来了,但是如果这个记录同时含有17号课且不含有12号课,那么这个记录就不适合,需要再次删除。

因此,第三个模块需要分成两个子模块来判断,就是上面的两个方面。

第一个子模块先大范围的保留基本适合的,8对同时选修课,只要含有至少一对就保留。

第二个模块是分别对每对选修课进行检验,含有15号课不含有11号课的或者含有17号课不含有12号课的或者含有19号课不含有18号课的或者含有20号课不含有16号课的……等等,都全部删除。

经过这两个子模块的判断,剩下的数据给c矩阵。

(d)第四个模块是判断上述c矩阵内的数据是否适合

的规定。

适合的就保留下来给d矩阵。

最后的d矩阵就是符合要求的n门课的组合。

6.模型求解

一、第一个问题“为了达到学校和院系的规定,该同学下学期最少应该选几门课?

答:

应该选5门课,在筛选程序内给定n=5,可得到应该选的5门的组合:

1261014

1461011

2461011

选修最少学分的情况下,该同学最多可以选修几门课?

把程序里面的s>

=18改成s=18,然后依次把选课门数改成5、6、7、8等,可以看出最多选8门课,8门课的组合是:

1351215161718

1361415161718

1451215161718

1461415161718

156812151617

156812151618

156812151718

156812161718

156814151617

156814151618

156814151718

156814161718

2361415161718

237815161718

2371315161718

2461415161718

247815161718

2471315161718

267813151617

267813151618

267813151718

267813161718

267814151617

267814151618

267814151718

267814161718

346814151617

346814151618

346814151718

346814161718

七.模型分析与改进

1.模型分析与检验:

本题主要采用的是排列组合的方法,首先把11-28门课程抽出n门课进行组合,共有

28],n)。

再将其分四个模块,每个模块使用一个矩阵来存储该模块筛选合格的数据。

不断筛选满足要求的矩阵,最后剩余的矩阵即为符合要求的n门课的组合。

2.模型评价

2.1模型优点:

能够很快的解决简单的筛选问题。

2.2模型缺点:

对于条件比较多的筛选问题则很难快速的解决。

3模型改进和推广:

1.还可以参照最小费用最大流算法适当地进行建模。

2.也可以使用多次背包算法,先把给出的图用拓扑排序算法构建成树,在树里面的每个结点使用背包算法,计算出当前点以下用一定时间能得到的最大学分,多个背包向父亲结点背包。

3.本文建立的模型可推广到各种复杂的筛选问题。

八.建模心得

数学建模,对于我们专业的大二学生来说是一个完全陌生的课程,然而在本学期末的课程设计中却开设了数学模型,这才使我们初步了解了什么叫做数学建模。

使我们在学习之中,锻炼了我们的能力,获益非浅。

真正用到了数学的理论知识去解决我们在实际生活上的一些问题。

从最初的“建模”简介,我们了解到数学在实际生活中的应用之广、之深、之切。

小到日常的衣食住行,大到科技进步,人类生存。

庞大的数学知识体系良好地规范我们的生活,与我们每个人都息息相关,并随着科技的进步,数学与我们的关系也越来越密切。

终于明白了,为什么数学是真正的科学工具,是人类发展进步的基础学科,它既能规范现在,又能预测未来。

在这次实践中,我们组选择的是关于学生选课模型,这个模型说说简单也简单,说难也难,关键看如何灵活的建立模型,并借助计算机软件的优势,巧妙的解决此问题。

在确立了题目之后,我们两个就开始着手分头行动,经过多天的努力模型基本建成。

通过这次合作完成任务,我们感觉到团队精神是数学建模是否取得好成绩的最重要的因素,只有将大家的智慧集中到一起,才能做出更加完美的成果!

参考文献:

[1]费浦生数学建模及其基础知识详解,武汉大学出版社

[2周义仓数学建模实验西安交通大学出版社1999年

[3]韩明数学实验(Matlab)同济大学出版社2009年

附录:

Matlab筛选程序如下:

n=input('

请输入选课的门数:

'

'

s'

);

xk=[111213141516171819202122232425262728;

554433323332221111];

xkzuhe=combntns([11:

28],n);

[hang,lie]=size(xkzuhe);

a=zeros(1,lie);

fori=1:

hang

s=0;

forj=1:

lie

[xkhang,xklie]=find(xk==xkzuhe(i,j));

s=s+xk(2,xklie);

end;

ifs>

=18

a=[a;

xkzuhe(i,:

)];

end;

[ahang,alie]=size(a);

a=a(2:

1:

ahang,:

*************以上第一模块

b=zeros(1,alie);

ahang

p=0;

alie

ifa(i,j)==15||a(i,j)==16||a(i,j)==17||a(i,j)==18

p=p+1;

ifp>

=1

b=[b;

a(i,:

[bhang,blie]=size(b);

b=b(2:

bhang,:

*************以上第二模块

c=zeros(1,blie);

bhang

p1=-1;

p2=-2;

p3=-1;

p4=-2;

p5=-1;

p6=-2;

p7=-1;

p8=-2;

p9=-1;

p10=-2;

p11=-1;

p12=-2;

p13=-1;

p14=-2;

p15=-1;

p16=-2;

p17=-1;

p18=-2;

blie

ifb(i,j)==15

p1=1;

ifb(i,j)==10

p2=1;

ifb(i,j)==17

p3=1;

ifb(i,j)==12

p4=1;

ifb(i,j)==19

p5=1;

ifb(i,j)==18

p6=1;

ifb(i,j)==20

p7=1;

ifb(i,j)==16

p8=1;

ifb(i,j)==21

p9=1;

ifb(i,j)==14

p10=1;

ifb(i,j)==22

p11=1;

p12=1;

ifb(i,j)==23

p13=1;

p14=1;

ifb(i,j)==24

p15=1;

p16=1;

ifp1==p2||p3==p4||p5==p6||p7==p8||p9==p10||p11==p12||p13==p14||p15==p16

c=[c;

b(i,:

[chang,clie]=size(c);

c=c(2:

chang,:

…………..以上第三模块的第一子模块

i=1;

whilei<

=chang

p1=0;

p2=0;

p3=0;

p4=0;

p5=0;

p6=0;

p7=0;

p8=0;

p9=0;

p10=0;

p11=0;

p12=0;

p13=0;

p14=0;

p15=0;

p16=0;

p17=0;

p18=0;

clie

ifc(i,j)==15

ifc(i,j)==11

ifc(i,j)==17

ifc(i,j)==12

ifc(i,j)==19

ifc(i,j)==18

ifc(i,j)==20

ifc(i,j)==16

ifc(i,j)==21

ifc(i,j)==14

ifc(i,j)==22

ifc(i,j)==23

ifc(i,j)==24

if(p1==1&

p2==0)||(p3==1&

p4==0)||(p5==1&

p6==0)||(p7==1&

p8==0)||(p9==1&

p10==0)||(p11==1&

p12==0)||(p13==1&

p14==0)||(p15==1&

p16==0)

c(i,:

)=[];

[chang,clie]=size(c);

i=i-1;

i=i+1;

****************以上第三模块的第二子模块

d=zeros(1,clie);

chang

zxf=0;

zrxf=0;

[h,l]=find(xk==c(i,j));

zxf=zxf+xk(2,l);

ifc(i,j)>

=19

zrxf=zrxf+xk(2,l);

ifzrxf>

=(zxf+2)/6&

&

zrxf<

=(zxf+2)/3

d=[d;

c(i,:

[dhang,dlie]=size(d);

d=d(2:

dhang,:

f=ones(size(d));

zh=d-f*10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1