
Python
最近,妻子负责为学校年级安排课程,我用
Python 编写了一套排课程序,基本能够满足各种约束条件和优化目标。为此,我还专门写了一篇文章介绍这套方案:PPDM:
Python 实现年级排课和优化。在开发过程中,我使用了
谷歌的 OR-Tools 库对排课问题进行建模和求解,这大大简化了整体流程。当然,自己实现算法会更有趣,但从实际效果来看,遗传算法可能并不太适合这种场景。排课问题涉及大量约束条件,而遗传算法更适合约束较少的情况。当约束较多时,会产生大量不符合要求的子代解,需要生成海量子代才能筛选出少量可行解。此时,遗传算法可能会退化成一种近似随机搜索的方法。尽管可以通过暴力手段让子代全部符合约束,但这通常会导致效率低下。综合考虑,对于排课问题,其他算法可能更为适用,例如: