我有学校安排问题。
问题描述: 将每门课程安排在一个时间段内。 (ps:不需要进房间)。
硬约束:
一个班的同一门课需要连续。课程的连续长度为2。例如A班的数学课程,可能需要一门连续长度为1的课程和另一门连续长度为2的课程。所以A班有两门数学课程,即数学的总时隙需要的是 3。
不同班级、同一老师的同一课程需要一起学习。例如,A班和B班的音乐课,音乐课的老师是同一个安老师。当A班音乐课程时隙为slotA时,B班音乐课程时隙必须为slotA。
我的解决方案是使用内置硬约束构建一个模型来处理硬约束。
还有其他有效的方法可以解决这个问题吗?
学校时间表可能包含许多限制。 Timefold Quickstarts 存储库 已经有一些预先实现的内容,因此我建议查看这些内容以获得进一步的灵感。
根据您的问题:
“班级中的同一门课程需要连续”:您可以采用我上面喜欢的文件中的studentGroupSubjectVariety约束并将其反转(因为现在它的作用与您想要的相反)+将其更改为硬约束。您也可以将其保留为软约束并查看结果。
“不同班级的同一门课程需要一起学习。”:这是一个更棘手的请求,因为在更大的数据集上,您应该考虑其他问题:
当尝试对第二部分进行建模时,您遇到了在课程/时间段和学生组/班级之间引入多对多关系的问题。看看建模指南,这不是一个好的策略。我还没有一个明确的答案,但我会看看我能想出什么。