选课问题、数学建模

合集下载

数学建模选课策略问题推广

数学建模选课策略问题推广

数学建模选课策略问题推广数学建模作为一种实用的数学工具,已经广泛应用于各个领域。

在选课策略问题上,数学建模同样发挥着重要的作用。

本文将从不同角度探讨数学建模在选课策略中的应用。

数学建模可以帮助学生制定合理的选课计划。

在选课时,学生需要根据自己的兴趣、专业要求和个人能力来选择适合自己的课程。

数学建模可以通过分析历史数据和学术成绩,预测不同课程的难度和挑战程度,帮助学生做出明智的选择。

同时,数学建模还可以考虑到课程之间的关联性,避免选修了内容相似或冲突的课程,从而提高学习效果和学业成绩。

数学建模可以优化选课方案。

在大学选课中,学生通常会面临时间冲突、课程容量限制等问题。

数学建模可以通过建立数学模型,考虑到不同课程的时间安排和教室容量,找到最优的选课方案。

这样可以最大程度地满足学生的需求,避免时间冲突和选不上的情况,提高选课效率。

数学建模还可以考虑到学生的个体差异,制定个性化的选课策略。

每个学生都有自己的学习特点和目标,因此在选课时需要考虑到个体差异。

数学建模可以根据学生的学习能力、兴趣爱好和未来发展方向,制定个性化的选课策略。

通过分析学生的历史数据和学术成绩,预测不同课程的适应程度和发展前景,帮助学生做出更明智的选择。

在选课策略中,数学建模还可以考虑到学生的多样化需求。

随着社会的发展和人才需求的变化,学生对于课程的需求也在不断变化。

数学建模可以通过分析大量的数据和信息,预测不同课程的受欢迎程度和发展趋势,为学生提供更多元化的选课选择。

同时,数学建模还可以考虑到不同课程的培养目标和综合能力要求,帮助学生在选课时更好地发展自己的综合能力。

总的来说,数学建模在选课策略中的应用具有重要意义。

通过分析历史数据和学术成绩,制定合理的选课计划;通过建立数学模型,优化选课方案;考虑到学生的个体差异和多样化需求,制定个性化的选课策略。

这些都可以帮助学生更好地选择适合自己的课程,提高学习效果和学业成绩。

因此,数学建模在选课策略问题上的推广具有重要的意义。

数学建模 选修课策略模型

数学建模  选修课策略模型

黑龙江科技大学题目:选课策略数学模型班级:姓名:学号:摘要本问题要求我们为了解决学生最优选课问题,本文利用0-1规划模型先找出目标函数,再列出约束条件,分三步得出对最终问题逐层分析化多目标规划为单目标规划,从而建立模型,模型建立之后,运用LINGO软件求解,得到最优解,满足同学选修课程的数量少,又能获得的学分多。

特点:根据以上分析,特将模型分成以下几种情况,(1)考虑获得最多的学分,而不考虑所选修的课程的多少;(2)考虑课程最少的情况下,使得到的学分最多;(3)同时考虑学分最多和选修科目最少,并且所占比例三七分。

在不同的情况下建立不同的模型,最终计算出结果。

关键词 0-1规划选修课要求多目标规划模型一:同时要求课程最少而且获得的学分最多,并按3:7的重要性建立模型。

模型二:要求选修课的课程最少,学分忽略;约束条件只有,每人至少学习2门数学,3门运筹学,2 门计算机,和先修课的要求建立模型一。

模型三:要求科目最少的情况下,获得的学分尽可能最多,只是目标函数变了,约束条件没变。

一.问题的重述某学校规定,运筹学专业的学生毕业时必须至少学过两门数学课,三门运筹学课,两门计算机。

这些课程的编号,名称,学分,所属类别和选修课的要求如表所示。

那么,毕业时最少可以学习这些课程中的哪些课程。

如果某个学生即希望选修课程的数量最少,又希望所获得的学分最多,他可以选修哪些课程?二.模型的假设及符号说明1.模型假设1)学生只要选修就能通过;2)每个学生都必须遵守规定;2. 符号说明1)xi:表示选修的课程(xi=0表示不选,xi=1表示选i=1,2,3,4,5,6,7,8,9);三.问题分析对于问题一,在忽略所获得学分的高低,只考虑课程最少,分析题目,有先修课要求,和最少科目限制,建立模型一,计算求出结果;对于问题二,在模型一的条件下,考虑分数最高,把模型一的结果当做约束条件,建立模型二,计算求出结果;对于问题三,同时考虑两者,所占权重比一样,建立模型三;四.模型的建立及求解模型一目标函数:min=0.7*(x1+x2+x3+x4+x5+x6+x7+x8+x9)-0.3*(5*x1+4*x2+4*x3+3*x4+4*x5+3*x6+2*x 7+2*x8+3*x9)约束条件:x1+x2+x3+x4+x5>=2;x3+x5+x6+x8+x9>=3;x4+x6+x7+x9>=2;2*x3-x1-x2<=0;x4-x7<=0;2*x5-x1-x2<=0;x6-x7<=0;x8-x5<=0;2*x9-x1-x2<=0;模型的求解:输入:min=0.7*(x1+x2+x3+x4+x5+x6+x7+x8+x9)-0.3*(5*x1+4*x2+4*x3+3*x4+4*x5+3*x6+2*x 7+2*x8+3*x9;x1+x2+x3+x4+x5>=2;x3+x5+x6+x8+x9>=3;x4+x6+x7+x9>=2;2*x3-x1-x2<=0;x4-x7<=0;2*x5-x1-x2<=0;x6-x7<=0;x8-x5<=0;2*x9-x1-x2<=0;@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);@bin(x7);@bin(x9); 输出:Global optimal solution found.Objective value: -2.800000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX1 1.000000 -0.8000000X2 1.000000 -0.5000000X3 1.000000 -0.5000000X4 1.000000 -0.2000000X5 1.000000 -0.5000000X6 1.000000 -0.2000000X7 1.000000 0.1000000X8 0.000000 0.1000000X9 1.000000 -0.2000000Row Slack or Surplus Dual Price1 -2.800000 -1.0000002 3.000000 0.0000003 1.000000 0.0000004 2.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 1.000000 0.00000010 0.000000 0.0000001.模型二:目标函数:min z=x1+x2+x3+x4+x5+x6+x7+x8+x9约束条件:X1+x2+x3+x4+x5>=2X3+x5+x6+x8+x9>=3X4+x6+x7+x9>=22*x3-x1-x2<=0x4-x7<=02*x5-x1-x2<=0x6-x7<=0x8-x5<=02*x9-x1-x2<=0模型的求解本文运用lingo运算球的结果:输入min=x1+x2+x3+x4+x5+x6+x7+x8+x9;x1+x2+x3+x4+x5>=2;x3+x5+x6+x8+x9>=3;x4+x6+x7+x9>=2;2*x3-x1-x2<=0;x4-x7<=0;2*x5-x1-x2<=0;x6-x7<=0;x8-x5<=0;2*x9-x1-x2<=0;@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);@bin(x7);@bin(x9);输出:Global optimal solution found.Objective value: 6.000000Extended solver steps: 0Total solver iterations: 1Variable Value Reduced CostX1 1.000000 1.000000X2 1.000000 1.000000X3 1.000000 1.000000X4 0.000000 1.000000X5 0.000000 1.000000X6 1.000000 1.000000X7 1.000000 1.000000X8 0.000000 1.000000X9 1.000000 1.000000Row Slack or Surplus Dual Price1 6.000000 -1.0000002 1.000000 0.0000003 0.000000 0.0000004 1.000000 0.0000005 0.000000 0.0000006 1.000000 0.0000007 2.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.000000模型三:目标函数:Max W=5*x1+4*x2+4*x3+3*x4+4*x5+3*x6+2*x7+2*x8+3*x9;约束条件:X1+x2+x3+x4+x5>=2X3+x5+x6+x8+x9>=3X4+x6+x7+x9>=22*x3-x1-x2<=0x4-x7<=02*x5-x1-x2<=0x6-x7<=0x8-x5<=02*x9-x1-x2<=0x1+x2+x3+x4+x5+x6+x7+x8+x9=6运用lingo解题:输入:max=5*x1+4*x2+4*x3+3*x4+4*x5+3*x6+2*x7+2*x8+3*x9;x1+x2+x3+x4+x5>=2;x3+x5+x6+x8+x9>=3;x4+x6+x7+x9>=2;2*x3-x1-x2<=0;x4-x7<=0;2*x5-x1-x2<=0;x6-x7<=0;x8-x5<=0;2*x9-x1-x2<=0;x1+x2+x3+x4+x5+x6+x7+x8+x9=6;@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);@bin(x7);@bin(x9); 输出:Global optimal solution found.Objective value: 22.00000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX1 1.000000 -3.000000X2 1.000000 -2.000000X3 1.000000 -2.000000X4 0.000000 -1.000000X5 1.000000 -2.000000X6 1.000000 -1.000000X7 1.000000 0.000000X8 0.000000 0.000000X9 0.000000 -1.000000Row Slack or Surplus Dual Price1 22.00000 1.0000002 2.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 1.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 1.000000 0.00000010 2.000000 0.00000011 0.000000 2.000000五.结果的检验与分析经过检验输入式子正确,结果多次验证一样。

数学建模选课分班问题

数学建模选课分班问题

数学建模选课分班问题
数学建模选课分班问题是指在学校的数学建模选修课程中,需要将学生分配到不同的班级中。

这个问题涉及到多个因素,包括学生的兴趣、能力水平、性别等,以及班级的容量和教师资源等。

在解决数学建模选课分班问题时,可以采用以下几种方法:
1.基于规则的分班方法:根据一些规则和标准,将学生分配到班级中。

例如,可以根据学生的兴趣和能力水平将他们分为不同的班级,以便更好地满足他们的学习需求。

2.基于优化算法的分班方法:利用数学建模中的优化算法,通过最小化某个目标函数来确定最佳的分班方案。

例如,可以将学生的分班问题建模为一个最小化总班级差异的问题,然后使用遗传算法或线性规划等方法求解最优解。

3.基于机器学习的分班方法:利用机器学习算法,通过学习历史数据和模式来预测学生在数学建模中的表现,并根据预测结果将学生分配到适合他们的班级。

这种方法可以根据学生的个性化需求和特点来进行分班。

在实际应用中,数学建模选课分班问题需要综合考虑多个因素,并进
行权衡和平衡。

例如,要避免班级之间的差异过大,同时也要注意班级容量和教师资源的合理分配。

为了更好地解决数学建模选课分班问题,可以采用多种方法的组合,例如先利用基于规则的方法进行初步分班,然后利用优化算法和机器学习算法进行微调和优化。

总之,数学建模选课分班问题是一个复杂的问题,需要综合考虑多个因素,并运用合适的方法进行求解。

通过合理的分班方案,可以更好地满足学生的学习需求,并提高数学建模课程的教学效果。

个性化课程数学建模Ⅰ、Ⅱ、Ⅲ选课说明

个性化课程数学建模Ⅰ、Ⅱ、Ⅲ选课说明

数学建模Ⅰ、Ⅱ、Ⅲ选课说明个性化课程数学建模Ⅰ、Ⅱ、Ⅲ主要内容是给学生讲基础数学建模的内容,为以后参加全国大学生数学建模竞赛做准备。

要求:
1、必须学习高等数学、线性代数之后才能选此课程(本校文科学院和艺术学院的学生慎选)。

2、此三门选修课具有一定的衔接性和连续性,故要求只能从数学建模Ⅰ开始按顺序选课,只有数学建模Ⅰ做基础才能选数学建模Ⅱ,有前两个做基础才能选数学建模Ⅲ,如果跳跃性选课可能会对学习效果有一定的影响。

3、此三门课程的后续课程为48学时的《数学建模》,该课程是全国大学生数学建模竞赛的培训课程,在数学建模Ⅰ、Ⅱ、Ⅲ的基础上有很大程度的提高。

望同学们慎重选课。

数学建模选课问题

数学建模选课问题

1.问题提出对于问题一,我们必须考虑在学校和院系的规定的条件下对同学选课最少进行求解。

所以我们先从已知条件入手,把他们转化为约束条件,然后建立0-1整数优化模型,利用LINGO软件对其进行求解。

对于问题二,我们同样考虑在选修学分最少的情况下对同学选课最多进行求解。

但两者不能同时都满足,所以我们必须把这个双优化模型转化为单优化模型,然后再利用LINGO对其进行求解。

问题三则是考虑了选修课程限选人数的问题,所以必须针对不同的学生类型设计相应的选择方案。

同时考虑到选修的课程能否如愿选上,需要在已只知不同课程限选人数的情况下,利用对不同目标加权的方法对问题进行优化。

2符号说明与模型假设2.1符号说明表2:符号说明表注:其它符号在文中另加说明2.2模型假设(1):各个同学在选修课程时不受其他因素影响,只受学分和选修课程门数影响。

(2):学生选课是独立的,相互之间不影响。

(3):选课的学生有两种类型,一类是对这门课真正感兴趣的,另一类是“混学分”的,且这两类各占选课学生人数的一半。

(4):学生的信息是不公开的。

(5):问题三中没有提到的课程表示人数没有限制。

3模型建立和求解3.1问题一的解决3.1.1模型的建立用xi表示选修表中按照编号顺序的18门课程的选择(i=1,2,…18),其中xi 取值为1或者0。

其定义如下:采用目标规划的方法,考虑到学校的各种约束条件,将约束条件用数学表达式表示为一下几点:1:要使选修课程的总学分数不少于18,既有下面的不等式:2:任选课程的比例不能少于所修总学分的1/6,也不能超过1/3:3:课程号为5、6、7、8的课程必须至少选一门:4:选修某些课程必须同时选修其他课程,可以表示为:在达到以上要求的情况下,只考虑选修课程最少的情况,相应的目标函数为:在Lingo[1]中可以对该目标函数进行优化,其中约束条件为①②③④,由于上述条件中有大于关系,可以在两边乘以—1将约束条件全部转换成小于关系,这样便于在Lingo中求解.最后本文建立了如下的优化模型3.1.2模型的求解利用LINGO软件求解可以得到3.1.3问题一的结果最后本文得到了在学校和院系的要求下选课最少是选五门,选择方案是选择课程1,2,6,10,14。

数学建模选课实验报告(3篇)

数学建模选课实验报告(3篇)

第1篇一、实验背景随着社会的发展和科技的进步,数学建模作为一种解决实际问题的有效方法,被广泛应用于各个领域。

为了提高学生的数学建模能力和实际操作能力,我校开设了数学建模选修课程。

本实验旨在通过数学建模选课实验,探讨如何选择适合学生兴趣和实际需求的数学建模课程,以提高学生的学习效果。

二、实验目的1. 了解数学建模课程体系,明确课程设置原则;2. 掌握数学建模选课方法,提高学生选课的科学性;3. 分析数学建模课程对学生实际能力的培养效果。

三、实验方法1. 调查法:通过问卷调查、访谈等方式,了解学生对数学建模课程的需求和兴趣;2. 比较分析法:对比不同数学建模课程的教学内容、教学方法和考核方式,分析课程特点;3. 统计分析法:对实验数据进行分析,得出数学建模选课的科学方法。

四、实验步骤1. 收集数据:通过问卷调查、访谈等方式,收集学生对数学建模课程的需求和兴趣数据;2. 整理数据:对收集到的数据进行分析和整理,形成课程设置和选课建议的依据;3. 比较分析:对比不同数学建模课程的教学内容、教学方法和考核方式,分析课程特点;4. 制定选课方案:根据课程特点和学生的需求,制定数学建模选课方案;5. 实施选课方案:引导学生根据选课方案进行选课;6. 跟踪调查:对选课后的学生进行跟踪调查,了解选课效果。

五、实验结果与分析1. 学生需求分析根据问卷调查和访谈结果,学生普遍认为数学建模课程应具备以下特点:(1)课程内容与实际应用紧密结合;(2)教学方法多样化,注重学生动手能力和创新能力的培养;(3)考核方式合理,注重过程评价和结果评价相结合。

2. 课程设置分析根据学生需求,我校开设了以下数学建模课程:(1)基础数学建模;(2)应用数学建模;(3)高级数学建模;(4)数学建模竞赛辅导。

3. 选课方案制定根据课程特点和学生的需求,制定以下选课方案:(1)基础数学建模:面向所有学生,作为公共选修课;(2)应用数学建模:面向有一定数学基础的学生,作为专业选修课;(3)高级数学建模:面向对数学建模有浓厚兴趣的学生,作为选修课;(4)数学建模竞赛辅导:面向有意参加数学建模竞赛的学生,作为辅导课程。

数学建模选修课

数学建模选修课

数学建模选修课学院:电气与信息工程学院姓名:学号:专业班级:通信11-1班数学建模基础内容选学数学建模首先要了解什么是数学建模当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究、了解对象信息、做出简化假设、分析内在规律等工作的基础上,用数学的符号和语言,把它表述为数学式子,也就是数学模型,然后用通过计算得到的模型结果来解释实际问题,并接受实际的检验。

这个建立数学模型的全过程就称为数学建模。

近半个多世纪以来,随着计算机技术的迅速发展,数学的应用不仅在工程技术、自然科学等领域发挥着越来越重要的作用,而且以空前的广度和深度向经济、管理、金融、生物、医学、环境、地质、人口、交通等新的领域渗透,所谓数学技术已经成为当代高新技术的重要组成部分。

数学模型是一种模拟,是用数学符号、数学式子、程序、图形等对实际课题本质属性的抽象而又简洁的刻划,它或能解释某些客观现象,或能预测未来的发展规律,或能为控制某一现象的发展提供某种意义下的最优策略或较好策略。

数学模型一般并非现实问题的直接翻版,它的建立常常既需要人们对现实问题深入细微的观察和分析,又需要人们灵活巧妙地利用各种数学知识。

这种应用知识从实际课题中抽象、提炼出数学模型的过程就称为数学建。

不论是用数学方法在科技和生产领域解决哪类实际问题,还是与其它学科相结合形成交叉学科,首要的和关键的一步是建立研究对象的数学模型,并加以计算求解(通常借助计算机)。

数学建模和计算机技术在知识经济时代的作用可谓是如虎添翼。

数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象、简化建立能近似刻画并"解决"实际问题的一种强有力的数学手段。

数学建模就是用数学语言描述实际现象的过程。

这里的实际现象既包涵具体的自然现象比如自由落体现象,也包含抽象的现象比如顾客对某种商品所取的价值倾向。

这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释实际现象等内容。

数学建模 选课问题

数学建模 选课问题

选课问题声明:本人自做,仅作参考,不得商用,责任自负。

1 问题的提出课程选修是大学学分制教育制度的一个重要内容。

课程一般分为必修课、限选课、任选课、同时选修课等四类,各类大学都规定了学生必须完成的学分制。

现在有为同学要选修下一学期的课程,他发现可供选修的限定选修课(限选课)有8门,任意选修课(任选课)有10门。

由于有些课程之间相互关联,所以可能在选修某门课程时必须同时选修其他某门课程,课程信息见下表:按学校规定,学生每个学期选修的总学分数不能少于20学分,因此该同学必须在上述18门课中至少选修18个学分,学校还规定学生每学期选修任选课的比例不能少于所修总学分(包括2个必修学分)的1/6,也不能超过所修总学分的1/3。

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

1)为了达到学校和院系的规定,该同学下学期最少应该选几门课?应该选哪几门课?2)若考虑在选修最少学分的情况下,该同学最多可以选修几门课?选哪几门?3)若考虑到选修时课程能否如愿选上的问题,请多准备几套选择方案。

已知课程限选人数为1,2,3,4限选人数最多,5,6,7,8次之,13、17、18限选人数最少。

请考虑选课时的先后顺序(先选者先录,人满停选)。

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

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

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

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

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

3 符号约定用xk表示2*18的选修课与对应的学分的矩阵,即⎥⎦⎤⎢⎣⎡111122233323334455181716151413121110987654321 用xk ()j i ,表示第i 行第j 列交叉点的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 门课进行组合,共有nC 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 141 4 6 10 112 4 6 10 11选修最少学分的情况下,该同学最多可以选修几门课?选哪几门?把程序里面的s>=18改成s=18,然后依次把选课门数改成5、6、7、8等,可以看出最多选8门课,8门课的组合是:1 3 5 12 15 16 17 181 3 6 14 15 16 17 181 4 5 12 15 16 17 181 4 6 14 15 16 17 181 5 6 8 12 15 16 171 5 6 8 12 15 16 181 5 6 8 12 15 17 181 5 6 8 12 16 17 181 5 6 8 14 15 16 171 5 6 8 14 15 16 181 5 6 8 14 15 17 181 5 6 8 14 16 17 182 3 6 14 15 16 17 182 3 7 8 15 16 17 182 3 7 13 15 16 17 182 4 6 14 15 16 17 182 4 7 8 15 16 17 182 4 7 13 15 16 17 182 6 7 8 13 15 16 172 6 7 8 13 15 16 182 6 7 8 13 15 17 182 6 7 8 13 16 17 182 6 7 8 14 15 16 172 6 7 8 14 15 16 182 6 7 8 14 15 17 182 6 7 8 14 16 17 183 4 6 8 14 15 16 173 4 6 8 14 15 16 183 4 6 8 14 15 17 183 4 6 8 14 16 17 18七.模型分析与改进1.模型分析与检验:本题主要采用的是排列组合的方法,首先把11-28门课程抽出n门课进行种。

利用Matlab的命令就是combntns([11:28],n),这个命令产组合,共有nC18生的结果是一个矩阵,每一行就是n门课的一个组合。

令选课组合xkzuhe=combntns([11:28],n)。

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

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

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

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

3 模型改进和推广:1.还可以参照最小费用最大流算法适当地进行建模。

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

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

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

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

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

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

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

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

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

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

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

通过这次合作完成任务,我们感觉到团队精神是数学建模是否取得好成绩的最重要的因素,只有将大家的智慧集中到一起,才能做出更加完美的成果!参考文献:[1]费浦生数学建模及其基础知识详解,大学[2周义仓数学建模实验交通大学 1999年[3]明数学实验(Matlab)同济大学 2009年附录:Matlab筛选程序如下:n=input('请输入选课的门数:','s');xk=[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28;5 5 4 4 3 3 3 2 3 3 3 2 2 2 1 1 1 1];xkzuhe=combntns([11:28],n);[hang,lie]=size(xkzuhe);a=zeros(1,lie);for i=1:hangs=0;for j=1:lie[xkhang,xklie]=find(xk==xkzuhe(i,j));s=s+xk(2,xklie);end;if s>=18a=[a;xkzuhe(i,:)];end;end;[ahang,alie]=size(a);a=a(2:1:ahang,:);*************以上第一模块[ahang,alie]=size(a);b=zeros(1,alie);for i=1:ahangp=0;for j=1:alieif a(i,j)==15||a(i,j)==16||a(i,j)==17||a(i,j)==18 p=p+1;end;end;if p>=1b=[b;a(i,:)];end;end;[bhang,blie]=size(b);b=b(2:1:bhang,:);*************以上第二模块[bhang,blie]=size(b);c=zeros(1,blie);for i=1:bhangp1=-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;for j=1:blieif b(i,j)==15p1=1;end;if b(i,j)==10p2=1;end;if b(i,j)==17p3=1;end;if b(i,j)==12p4=1;end;if b(i,j)==19p5=1;end;if b(i,j)==18p6=1;end;if b(i,j)==20p7=1;end;if b(i,j)==16p8=1;end;if b(i,j)==21p9=1;end;if b(i,j)==14p10=1;end;if b(i,j)==22p11=1;end;if b(i,j)==15p12=1;end;if b(i,j)==23p13=1;end;if b(i,j)==17p14=1;end;if b(i,j)==24p15=1;end;if b(i,j)==16p16=1;end;end;if p1==p2||p3==p4||p5==p6||p7==p8||p9==p10||p11==p12||p13==p14||p15==p16 c=[c;b(i,:)];end;end;[chang,clie]=size(c);c=c(2:1:chang,:);…………..以上第三模块的第一子模块[chang,clie]=size(c);i=1;while i<=changp1=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;for j=1:clieif c(i,j)==15p1=1;end;if c(i,j)==11p2=1;end;if c(i,j)==17p3=1;end;if c(i,j)==12p4=1;end;if c(i,j)==19p5=1;end;if c(i,j)==18p6=1;end;if c(i,j)==20p7=1;end;if c(i,j)==16p8=1;end;if c(i,j)==21p9=1;end;if c(i,j)==14p10=1;end;if c(i,j)==22p11=1;end;if c(i,j)==15p12=1;end;if c(i,j)==23p13=1;end;if c(i,j)==17p14=1;end;if c(i,j)==24p15=1;end;if c(i,j)==16p16=1;end;end;if(p1==1&p2==0)||(p3==1&p4==0)||(p5==1&p6==0)||(p7==1&p8==0)||(p9==1&p10==0)||(p1 1==1&p12==0)||(p13==1&p14==0)||(p15==1&p16==0)c(i,:)=[];[chang,clie]=size(c);i=i-1;end;i=i+1;end;****************以上第三模块的第二子模块[chang,clie]=size(c);d=zeros(1,clie);for i=1:changzxf=0;zrxf=0;for j=1:clie[h,l]=find(xk==c(i,j));zxf=zxf+xk(2,l);if c(i,j)>=19zrxf=zrxf+xk(2,l);end;end;if zrxf>=(zxf+2)/6&&zrxf<=(zxf+2)/3 d=[d;c(i,:)];end;end;[dhang,dlie]=size(d);d=d(2:1:dhang,:);f=ones(size(d));zh=d-f*10。

相关文档
最新文档