选课问题、数学建模

选课问题、数学建模
选课问题、数学建模

2013-2014第一学期

数学建模课程设计

题目:学生选课

:金星

班级:网络工程\

2014年1月6日—1月10日

一.模型摘要

摘要:对于习惯了中小学课程(所有的课程由学校统一安排,而且科目从小学

到高中有连续性)的大学新生来说,大学的课程多得令他们眼花缭乱,课程分类也比较复杂,因此选课对他们而言还是一件新鲜而陌生的事物。但大学的学习与选课有莫大的关系,必须了解它,才能掌握主动权。而要了解选课制,首先要对大学的课程设置有所认识。

大学的课程按大类来说一般分为必修课和选修课。必修一般指学校或院系规定学生必须修习某课程,学校对必修课程一般有统一的要求和安排。选修是指根据学生个人兴趣或专业需要自由选择修习某课程。简言之,必修就是必须修读,选修就是选择性修读。一般来说,基础性的知识都作为必修课程。有些知识不是基础性的,与兴趣和研究方向有关,这部分知识可以选择。这是大学与中学最大的不同之处。

本文针对关于大学生选课时所需要考虑到的问题,根据学校规定的要求达到的学分与每门课的学分多少,运用排列组合的知识建立模型,通过分析输出各种情况下所需的选课方案

关键字:matlab,矩阵,排列组合

二.问题重述

某同学考虑下学期的选课,其中必修课只有一门(2学分),可供选修的限定选修课(限选课)有8门,任意选修课(任选课)有10门。由于有些课程之间相

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

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

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

三.模型假设

(1)学生选修任何课程都是随机的,不存在主观意图。实际生活中选课程是有主观意图的,但是本问题中不考虑这一点。

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

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

四.问题分析

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

(a )任何学生每个学期选修的总学分数不能少于20学分(包括2个必修学分),所以除了必修课程外,任何学生必须在上述18门课中至少选修18个学分 (b )学校规定,课号为5,6,7,8的课程必须至少选一门。

(c )同时选修的课必须同时选修,不能不选修。例如某学生选9号课,那么他

也必须同时选修8号课。同时选修的矩阵是??

????675468211413121110975 (d )学校规定学生每学期选修任选课的比例不能少于所修总学分(包括2个必修学分)的1/6,也不能超过所修总学分的1/3。即36总修学分任选课学分总修学分≤≤。注意,总修学分包括必修课的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条。

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

本问题的解答模型就是排列组合的知识。首先说明一点,因为课程有的与学分值的数目相同,为了避免在计算机上处理过程中出现紊乱,我们统一把课程加上10,课号1-18,就变成了11-28。

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

第一步,首先把11-28门课程抽出n 门课进行组合,共有n C 18种。利用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 门课的组合数

据。同时选修的矩阵是??

????16171514161812112413222120191715。先分析以下同时选修的要求,在一个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 矩阵的数据是否适合36总修学分任选课学分总修学分≤≤的规定。注意,总修学分包括必修课的2学分。适

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

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

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

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

1 2 6 10 14

1 4 6 10 11

2 4 6 10 11

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

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

1 3 5 1

2 15 16 17 18

1 3 6 14 15 16 17 18

1 4 5 1

2 15 16 17 18

1 4 6 14 15 16 17 18

1 5 6 8 1

2 15 16 17

1 5 6 8 1

2 15 16 18

1 5 6 8 1

2 15 17 18

1 5 6 8 1

2 16 17 18

1 5 6 8 14 15 16 17

1 5 6 8 14 15 16 18

1 5 6 8 14 15 17 18

1 5 6 8 14 16 17 18

2 3 6 14 15 16 17 18

2 3 7 8 15 16 17 18

2 3 7 13 15 16 17 18

2 4 6 14 15 16 17 18

2 4 7 8 15 16 17 18

2 4 7 1

3 15 16 17 18

2 6 7 8 1

3 15 16 17

2 6 7 8 1

3 15 16 18

2 6 7 8 1

3 15 17 18

2 6 7 8 1

3 16 17 18

2 6 7 8 14 15 16 17

2 6 7 8 14 15 16 18

2 6 7 8 14 15 17 18

2 6 7 8 14 16 17 18

3 4 6 8 14 15 16 17

3 4 6 8 14 15 16 18

3 4 6 8 14 15 17 18

3 4 6 8 14 16 17 18

七.模型分析与改进

1.模型分析与检验:

本题主要采用的是排列组合的方法,首先把11-28门课程抽出n门课进行种。利用Matlab的命令就是combntns([11:28],n),这个命令产组合,共有n

C

18

生的结果是一个矩阵,每一行就是n门课的一个组合。令选课组合xkzuhe=combntns([11:28],n)。再将其分四个模块,每个模块使用一个矩阵来存储该模块筛选合格的数据。不断筛选满足要求的矩阵,最后剩余的矩阵即为符合要求的n门课的组合。

2.模型评价

2.1 模型优点:能够很快的解决简单的筛选问题。

2.2 模型缺点:对于条件比较多的筛选问题则很难快速的解决。

3 模型改进和推广:

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

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

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

八.建模心得

数学建模,对于我们专业的大二学生来说是一个完全陌生的课程,然而在本学期末的课程设计中却开设了数学模型,这才使我们初步了解了什么叫做数学建模。使我们在学习之中,锻炼了我们的能力,获益非浅。真正用到了数学的理论知识去解决我们在实际生活上的一些问题。从最初的“建模”简介,我们了解到数学在实际生活中的应用之广、之深、之切。小到日常的衣食住行,大到科技进步,人类生存。庞大的数学知识体系良好地规我们的生活,与我们每个人都息息相关,并随着科技的进步,数学与我们的关系也越来越密切。终于明白了,为

相关主题
相关文档
最新文档