想写一个排课功能,请教大佬们

28 天前
 yy306525121

因为媳妇高中需要排课,享用程序给她写一个, 之前试了 timefold ,写出来之后由于规模太大, 两三个老师还能拍出来,数量一多之后连着跑了一两天也没跑出来,想问一下,除了 timefold 这种问题求解器之外, 还有什么简单的方法做这种排课程序,遗传算法是不是最简单的方式?

7776 次点击
所在节点    程序员
135 条回复
HFX3389
28 天前
排课不能冲突,而且还有如果老师突然生病、有急事或者希望调课不知道是否又要重新计算
tywtyw2002
28 天前
@HFX3389 #60 这个不是需求吧。 要调课自己找别的老师去调,实在不行找年级组长。大不了让学生上自习被,高中不都是这么过来的吗
snylonue
28 天前
就是暴力解方程组吧,指数级的复杂度
性能不够可以上 hpc
ZZZZone
28 天前
经典护士排班问题+1
两种思路:
小范围可以整数规划精确求解 :
比如 google 开源的 or-tools
https://developers.google.com/optimization/service/scheduling/nurse_scheduling_example
范围大的只能求局部最优, 各种搜索算法
比如推荐看一下: http://scis.scichina.com/cn/2016/N112015-00284.pdf
SenLief
28 天前
高中属于搭班的,不知道你们那里是不是,如果采用搭班架的形式是很容易排课的。
chaoxu
28 天前
@yy306525121 "和 or-tool 这些其实是一类工具, 都是问题求解器, 但是他们都是基于一个原理, 把所有可能的组合全部排列出来,然后找出最优解,这种框架会有一个问题, 就是当你的问题或者叫排课里面的教师和班级数量上来之后问题规模会成指数倍增长,家用计算机跑一天都跑不出来"

不是把所有组合排列出来,会有大量的剪枝操作。一般人自己写的系统是比不过的。

你整个帖子都没有一个正确的数学上的描述。只要能描述出来,就能找做运筹的人写出来。
Huelse
28 天前
我之前设计的排课系统就是按周循环的排列组合,一个老师在一个时间上的课为一个单位,多个老师组合即可。
LaurelHarmon
28 天前
这应该是个刚需,难道没有成熟解决方案吗?
这种问题暴力搜索肯定不可取,代码怎么写不重要,算法才是关键,需要专业的复杂度优化策略,自己鼓捣性价比太低。
还是好好挣钱吧,有这时间多赚点钱,让老婆冲个 VIP 就解决了,手搓不可取,个人意见
w16311
28 天前
整数规划问题,可以试试匈牙利算法,多项式复杂度。OP 最好还是用现成的,这个自己写不值当,算法上几乎不可能有提升,做到无非是把业务给的数据变成算法输入的数据。
zjb861107488
28 天前
我爸是高中数学老师,之前上学的时候看他排过。先用数学这一科去排,把各种复杂因素都考虑进去。然后语文、外语等,最后用副科做填空题。
记得当时不到 20 个班级半天就排好了,然后看有特殊需要照顾的(比如刚生完小孩需要早点下班)的微调一下。不要追求满足所有人的需求,有要调整的老师们可以私下换课,或者改成周末、晚自习。
HFX3389
28 天前
@tywtyw2002 #62 只是有这个想法,万一老师想全部在系统上搞定,让学生以系统的课时上课为准,或者说未来计算课时费等场景时以排课系统为准的话,就会有这种情况。

甚至于老师突发请产假,调休,突发外派到其他地方几个星期等等。

不然校领导一句话“你这系统是死的呀,灵活度不够啊,只适合开学前用一次然后导出 Excel 表再贴到在线文档就足够了,没有持续使用的必要”,那就真成义务劳动了
yy306525121
28 天前
@ZZZZone 好的,谢谢大佬
yy306525121
28 天前
@HFX3389 对,其实我媳妇他们学校现在就是按照课表上的来算课时的,有临时调整的话算玩之后再在 excel 表里面加减
yy306525121
28 天前
@w16311 谢谢大佬给的思路,我去看一下
yy306525121
28 天前
@LaurelHarmon 嗯嗯, 这是最终解决方案了, 手搓不出来就只能去冲 vip 了
xiaogu2014
28 天前
如果熟悉 gurobi 的话可以用这个来做计算。高性能来解决优化问题的。
比如这个例子:
https://github.com/carloalbe/A-nurse-scheduling-problem-solved-with-Gurobi
cxsz
28 天前
围观一下,买过 水晶排课 的会员
yy306525121
28 天前
@xiaogu2014 这个好像也是问题求解器的一种,和 or-tools 和 timefold 一样的东西, 但是好像是收费的, 可以用我妹妹的学生申请一个资格试试😄
yy306525121
28 天前
@cxsz 好用吗?
cxsz
28 天前
@yy306525121 #79 用来排初中课程的,感觉还行,整体先出一版,然后特殊情况手动调整

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX