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

2024 年 8 月 22 日
 yy306525121

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

15876 次点击
所在节点    程序员
138 条回复
yy306525121
2024 年 8 月 22 日
@8355 嗯,这种问题程序确实很难做,我其实也是前前后后拖了一年,我媳妇天天念叨自己排课费劲才又想着看看能不能做一个呢哈哈
tywtyw2002
2024 年 8 月 22 日
@yy306525121 #31 你这个连堂课不就是 6+2 嘛

每天拍一节可,然后找 2 天在这节课前面和后面插一节课就行了。

rule base 就行了,python 写个一天就能出来了。

不用上什么强化学习之类的。。。。。

你手动拍一次课表你就明白 这个排课的逻辑了。
yy306525121
2024 年 8 月 22 日
@tywtyw2002 我大概好像有点理解你的意思了, 感谢大佬, 我再仔细琢磨一下,
Volekingsg
2024 年 8 月 22 日
之前帮人写过,直接整数线性规划一把梭了
guguji5
2024 年 8 月 22 日
https://console.flashcat.cloud/oncall

感觉跟我们做的排班一样。
xuanbg
2024 年 8 月 22 日
排课没那么复杂,就是把每个班的周课表排出来,唯一约束是老师的时间不能冲突。周课表就是一个 3 维数组,然后把你有限的对象(老师)一个个放进这个数组就完了。假设 A 老师每周 3 节课,就有对象 T1{"name": "A"}、T2{"name": "A"}、T3{"name": "A"}。如果老师有跨年级跨学科的,就要给老师这个对象加上年级和学科属性,最后排的时候,要求数组在时间维度上,每个对象的每个属性都是唯一的就行。
aeron
2024 年 8 月 22 日
meeop
2024 年 8 月 22 日
https://genwebapp.com/apps?appId=HhbxiqyFE6HE-USj

看看 genwebapp.com
用 ai 帮你写了一个,看看能不能用,不满意还可以让 ai 改
yy306525121
2024 年 8 月 22 日
@xuanbg 是啊,大脑想起来挺简单的,但是写起来感觉挺难的
yy306525121
2024 年 8 月 22 日
@aeron 好的,谢谢大佬,我去看看学习一下
yy306525121
2024 年 8 月 22 日
@meeop 牛哇大佬,我看一下
yy306525121
2024 年 8 月 22 日
@meeop 能给老师指定班级吗? 例如李四教高三 1 班的语文,并且课程安排是 4+2 这样,4 节普通课时,每天一节,2 次连堂课, 每天一次连堂课
gegewu0927
2024 年 8 月 22 日
meeop
2024 年 8 月 22 日
@yy306525121 应该可以,不过这种细节修改得你自己让 ai 改拉,试一下吧,开发过程的 prompt 我都截图展示了
meeop
2024 年 8 月 22 日
@yy306525121 代码的话网页查看源代码,在 html 代码基础上让 ai 改就行
meeop
2024 年 8 月 22 日
或者干脆重新开发一个,也就几句话的事
yy306525121
2024 年 8 月 22 日
@gegewu0927 感谢大佬, 我看看
yy306525121
2024 年 8 月 22 日
@meeop 好的大佬
Les1ie
2024 年 8 月 22 日
很多年以前写过排班的,具体咋写的忘了,好像是固定了一些限定条件之后用最大流算法。随机生成再排除冲突方案大概率是不行的,效率奇低。
yy306525121
2024 年 8 月 22 日
@Les1ie 是的, 效率太低也不行

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

https://study.congcong.us/t/1066877

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

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

© 2021 V2EX