6

最近在做课程表的排课,涉及很复杂的计算,有没有算法大牛能给点建议或者提示吗?

 1 year ago
source link: https://www.v2ex.com/t/877476
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  问与答

最近在做课程表的排课,涉及很复杂的计算,有没有算法大牛能给点建议或者提示吗?

  klo424 · 5 小时 32 分钟前 · 615 次点击

给学校开发自动排课的工具,会有很多规则限制,计算起来相当复杂。网上搜到了遗传算法,但是加了繁多的规则后计算就会很慢,可能计算 1 个小时都没有个完美的结果,所以特来请教一下 V 站大佬们有没有好的算法?

规则有很多,列出几个 K12 必须要有的:

  • 禁止排课:设置一些班级星期几的第几节课不能排某个课程,例如每天的前两节不能排体育课。
  • 必须排课:设置一些班级星期几的第几节课必须排某个课程,例如周一的第一节课必须排数学课。
  • 课时分散:保证课程在每天平均分配课时,使课程尽量分散不在同一天上 2 节课,例如该班语文课一周共有 5 个课时,就要把这 5 个课时分配到每天 1 个课时,如果是只有 3 个课时,则每个课要隔一天在排,即周一 /周三 /周五。
  • 教案齐头:保证每个教师的教的每个班级最好连着上课,例如教师 A 教 1 班和 2 班两个班级,如果 A 在周一 3 节教 1 班,则在周一 4 节教 2 班,尽量不要分成两天教,方便教师备课。

我不知道对这几个规则理解的是不是到位,但大致上差不多是这样的。

就这 4 个规则就很复杂了,用遗传算法要算好久,求帮助!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK