选课算法
发布时间: 2025-05-09 17:44:38
⑴ 数学建模选课问题完整解答
这个问题应该算是一个0-1背包问题吧。18个学分算是背包容量,每门课的学分是物体体积,物品收益都相同,是1.
第一问属于背包的最少收益问题,第二问是最大收益问题。
然后这个问题应该就可以用经典背包问题求解算法了。比如动态规划:
对课程1,考虑选择它和不选择它
如果选择它,就只需要再选择13个学分,然后这个问题会简化为要选择13个学分,少了课程1后的课程选择问题,问题还是原先的问题,但是问题的规模小了点,剩下的继续递归。
如果不选择它,就需要选择18个学分,,问题简化为18个学分,但是没有课程1,剩下的也递归下去。
两种选择,哪种优选择哪一个。
当进行递归的时候,如果碰到选择方案不能满足约束条件,即任选课大约1/6小于1/3,则该方案返回0值,如果还有同修要求的,比如限选课6,如果开始选择的是不选课程1,那么对于课程6,就不存在选择和不选择问题了,必然是不选择,如果开始第一步选择了课程1,当递归到课程6的时候才有选择和不选两种选择。
最终会得到一组第一问和第二问的最优解,则第三问结果也有了。
另外,附赠一个思路:可以查一下关键词【演化算法】,不用确定性算法,而是用智能优化算法,将所有的课用一个二进制位进行编码,0表示不选,1表示选择。每一种01串表示一种课程选择策略,对应一个学分,还对应一个对各种约束的满足程度,将对约束的违反当做罚函数。然后进行演化算法的选择交叉变异就开始搞,反正演化算法不能说来话长,如果感兴趣自己看看。
热点内容