情况如下。
我是一名有数十名学生的私人教师。我对我的时间有一些限制(例如我星期五下午不能教),学生也有很多时间限制。基于此,我正在努力创建我的议程,以尽可能多的私人课程,同时优化我的时间。理想情况下,它甚至会考虑到我与学生之间的距离(其中一些人在另一个城市)。类也具有可变持续时间。理想情况下,我希望能够设置我可以教授的时间(一周中的每一天),并设置每个学生可以上课的时间(一周中的每一天),他希望课程持续多长时间和频率(即每周2次。
我相信已有算法,但我找不到这个问题的名称。我认为这不是稳定婚姻的情况,也不是这一情况:Teacher time schedule algorithm
如果有人能指出我可以研究的算法或材料,以便在不存在的情况下尝试详细说明,我会非常感激。
非常感谢你,祝你有愉快的一天!
答案 0 :(得分:3)
为了应用一些好的多项式时间解决方案,问题似乎太复杂了。例如,如果您不关心学生所在的位置,不关心时间碎片等,您可以使用一些最大流算法来解决它。但是,这可能不会导致您最满意的计划。如果你想模拟现实世界的情况,假设你的学生数量很少(例如<10)并且你可以获得少量的小时数(例如<40),你应该backtracking,(也就是说,蛮力)为了尝试不同的任务并优化你拥有的任何约束。由于运行时是指数级的,因此最终可能需要进行一些Branch and Bound优化。
无论采用何种方法,您都必须以更具体的方式简化或指定问题。例如,如果您确定类始终在2,4,6或8点开始,那么解决问题将更加容易。您还需要定义一个公式,以提供解决方案的质量(例如总时间教学减去总时间旅行)。像这样建模问题和编写解决方案通常很有趣,特别是如果你是编程或算法爱好者。