Algorithm 预约调度算法

Algorithm 预约调度算法,algorithm,language-agnostic,mathematical-optimization,Algorithm,Language Agnostic,Mathematical Optimization,我有以下问题要解决,也许你可以给我一些关于解决问题方法的想法: 有: 8间教室 16名教师 201名学生 149名家长 241次预约(大多数家长需要见多位老师,要么因为孩子不止一个,要么因为一个孩子由两位或两位以上的老师教) 2天 每天: 7间教室每天开放20小时 一间教室每天开放10小时 每个教师占用一间教室 每次约会持续一小时 进一步限制: -对于每位家长,所有预约都必须是连续的(最多暂停1小时) -每位家长只需访问学校一天。 -对于每位教师,一天内的所有预约必须是连续的(最多暂停2

我有以下问题要解决,也许你可以给我一些关于解决问题方法的想法:

有:

  • 8间教室
  • 16名教师
  • 201名学生
  • 149名家长
  • 241次预约(大多数家长需要见多位老师,要么因为孩子不止一个,要么因为一个孩子由两位或两位以上的老师教)
  • 2天

  • 每天:

    • 7间教室每天开放20小时
    • 一间教室每天开放10小时
  • 每个教师占用一间教室

  • 每次约会持续一小时
进一步限制: -对于每位家长,所有预约都必须是连续的(最多暂停1小时) -每位家长只需访问学校一天。 -对于每位教师,一天内的所有预约必须是连续的(最多暂停2小时) -在16名教师中,3名只能在两天中的一天出席


我试图找到一种方法来制定预约时间表,显然不必计算所有可能的变化,直到所有的要求都得到满足。有什么想法吗?

您需要进一步定义约束条件;i、 例如,学生和老师之间的关系是什么?学生和家长之间的关系是什么?家长必须单独预约,还是允许一个学生的家长与一个老师一起见面

我会用一种初始(在测试中)天真的方法来处理这个问题;只需选择受约束程度最高的资源(看起来像是两天中只能出现一天的教师),安排使用第一个可用资源的教师,然后继续浏览资源集,使用与约束条件匹配的第一个可用资源安排他们,并查看是否可以安排整个资源集。如果没有,您需要找到您的有限资源,并对匹配应用一些启发式方法,以找到优化这些有限资源的最佳方法


这是一个有点棘手的问题;玩得开心

看看ITC2007的课程轨迹及其在或unitime中的实施情况。这两种方法都使用禁忌搜索和模拟退火等元启发式方法。

关于您的问题,我的数据分为四个表:教师(id,姓名)、家长(id,姓名)、学生(id,姓名,家长id)和学生教师(学生id,家长id)。我不认为我能像你建议的那样解决这个问题,因为根本没有空闲时间:所有教师预约的总小时数等于教室可用的总小时数。@anax:那么听起来你的老师就是你必须开始优化的地方。将教师分配到教室,然后使用递归算法将预约分配给教师;当您遇到“无法调度”的情况时,请备份递归树,直到找到一个自由路径,然后向下迭代该路径。这就是我的想法。我只希望这该死的事情在“合理”的时间内完成。