我如何构建大学课程表生成器

我如何构建大学课程表生成器

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

我在2023年开发了UniFil的自动排课系统,利用Timefold Solver应对教授工作量不固定、课程多样和教室限制等挑战。经过多次调整,最终在12小时内生成了可行的课程表,显著缩短了原本一个月的时间。未来计划进一步改进系统和约束条件。

🎯

关键要点

  • 在2023年开发了UniFil的自动排课系统,利用Timefold Solver应对教授工作量不固定、课程多样和教室限制等挑战。
  • 经过多次调整,最终在12小时内生成了可行的课程表,显著缩短了原本一个月的时间。
  • UniFil面临的挑战包括教授工作量不固定、课程数量多、教室种类多样及其限制。
  • 最初研究了现有解决方案,发现FET Timetable不适合,最终选择了Timefold Solver。
  • 在初步实施中,发现多个约束条件实现不当,使用ScoreExplanation功能进行调试。
  • 通过优化约束条件,改进了系统性能,采用集合而非列表以提高访问速度。
  • 在基准测试中发现OptaPlanner过时,迁移到Timefold Solver后执行时间得到改善。
  • 尽管进行了改进,仍面临用户界面不友好和搜索空间过大的挑战。
  • 通过减少搜索空间和调整执行策略,最终在约6小时内生成了可行的课程表。
  • 未来计划进一步改进系统,重新评估约束条件,并在Timefold上实现超启发式层。

延伸问答

UniFil的自动排课系统是如何应对教授工作量不固定的挑战的?

该系统利用Timefold Solver来处理教授工作量不固定的问题,通过优化约束条件和调整执行策略来生成可行的课程表。

开发UniFil课程表生成器的主要技术是什么?

主要技术是Timefold Solver,它允许开发者构建自定义问题模型并优化排课过程。

在开发过程中遇到了哪些主要挑战?

主要挑战包括用户界面不友好、搜索空间过大以及约束条件实现不当。

如何优化课程表生成的执行时间?

通过减少搜索空间、调整执行策略以及迁移到Timefold Solver,执行时间得到了显著改善。

UniFil的课程表生成器在多长时间内生成可行的课程表?

经过优化后,系统在约6小时内生成了可行的课程表,最终在12小时内完成了生产准备。

未来对UniFil课程表生成器有哪些改进计划?

未来计划进一步改进系统,重新评估约束条件,并在Timefold上实现超启发式层。

➡️

继续阅读