Algorithm 给定约束条件下的时间表计算算法

Algorithm 给定约束条件下的时间表计算算法,algorithm,language-agnostic,genetic-algorithm,Algorithm,Language Agnostic,Genetic Algorithm,我正在考虑一个假设问题,并从算法的角度寻找如何解决问题的指导 问题: 以一所大学为例。您有以下对象: 教学人员。每位工作人员教授一篇或多篇论文 学生们。每个学生拿一张或多张试卷 房间。房间容纳一定数量的学生,并包含一定类型的设备 文件。需要某种类型的设备,每周需要一定的时间 给定报名信息(即,每篇论文报名人数,以及分配给每篇论文授课的人员),我如何计算遵守以下限制的时间表: 工作人员一次只能教一件事 学生一次只能参加一篇论文 房间只能容纳一定数量的学生 需要某种类型设备的文件只能存放在提供该

我正在考虑一个假设问题,并从算法的角度寻找如何解决问题的指导

问题:

以一所大学为例。您有以下对象:

  • 教学人员。每位工作人员教授一篇或多篇论文
  • 学生们。每个学生拿一张或多张试卷
  • 房间。房间容纳一定数量的学生,并包含一定类型的设备
  • 文件。需要某种类型的设备,每周需要一定的时间
给定报名信息(即,每篇论文报名人数,以及分配给每篇论文授课的人员),我如何计算遵守以下限制的时间表:

  • 工作人员一次只能教一件事
  • 学生一次只能参加一篇论文
  • 房间只能容纳一定数量的学生
  • 需要某种类型设备的文件只能存放在提供该类型设备的房间内
  • 运营时间为周一至周五、8-12和1-5
  • 讨论:

    事实上,我并不太关心上述情况——这是我好奇的一般问题。乍一看,这似乎很适合遗传算法,但这种算法的适应度函数会非常复杂

    解决这种约束满足问题的好方法是什么


    我想可能没有办法完美地解决这个问题,因为学生们很可能会把论文组合起来,导致不可能的情况,特别是随着学生和论文数量的增加。

    这个问题的一个非常有限的版本是NP完全问题

    考虑一下这样的情况,只有一个学生可以拿一篇论文

    现在,对于给定的时间段(假设论文是全天教授的),你可以构建一个包含房间、论文和学生的三部分图,如果学生愿意,在论文和学生之间留一条边。还可以在纸张和可能的房间之间添加边

    我们现在看到的是您的问题的一个例子:您需要为特定的时间段选择一个不重叠的(学生、论文、房间)组合

    对于一般的问题,你可能最好使用一些启发式方法。对不起,我帮不了你


    希望能有所帮助。

    继续使用遗传算法,我不认为这方面的适应度函数会非常复杂,恰恰相反

    基本上,您只需检查每个约束的候选解决方案(无论编码是什么)(您只有5个)并为其分配权重,以便在约束不满足时,将权重添加到可以表示适合度的总分中

    在这种情况下,您只需最小化适应度函数(因为最佳适应度可能为0,这意味着所有约束都得到满足),然后让GA处理这些数字


    编码需要一点时间,但一旦完成,它应该是简单的,除非我遗漏了什么,当然:)

    我想有些人不喜欢NP难问题:-)…你可能是。虽然只有5个限制,但可能有数千名学生、数百份论文、数百间教室和数百名员工。我认为,将所有这些约束相互检查的复杂性是最初的问题——我们现在只是将其向前推进。我的观点是,我不会仅仅因为适应度函数很复杂就放弃GAs,因为你必须以任何方式(通过利用给定的形式化方法或其他方式)处理这种复杂性,GAs与否。