Algorithm 什么类别的算法可用于时间表?

Algorithm 什么类别的算法可用于时间表?,algorithm,language-agnostic,artificial-intelligence,genetic-algorithm,dynamic-programming,Algorithm,Language Agnostic,Artificial Intelligence,Genetic Algorithm,Dynamic Programming,是的,像这样的问题有很多。我发现遗传算法是最常见的答案 及 然而,我担心GA的这些特性 程序的终止条件很难定义 不能轻易逃脱局部极大值 我预计该程序会被用户推到相互冲突的标准和不可能的解决方案 因此我想要一个 是否具有决定性-保证达到接近最优的情况或报告算法不会达到解决方案 可以接受硬限制(不可侵犯)和软限制 优雅地接受用户输入约束;如果用户输入不起作用,可以将其添加到代码中,而不会破坏它 有100000个详尽的时间表 我四处寻找,发现like是个不错的候选人。动态规划算法呢 对于

是的,像这样的问题有很多。我发现遗传算法是最常见的答案


然而,我担心GA的这些特性

  • 程序的终止条件很难定义
  • 不能轻易逃脱局部极大值
我预计该程序会被用户推到相互冲突的标准和不可能的解决方案

因此我想要一个

  • 是否具有决定性-保证达到接近最优的情况报告算法不会达到解决方案
  • 可以接受硬限制(不可侵犯)和软限制
  • 优雅地接受用户输入约束;如果用户输入不起作用,可以将其添加到代码中,而不会破坏它
有100000个详尽的时间表


我四处寻找,发现like是个不错的候选人。动态规划算法呢

对于这样的数据集,蛮力方法可以吗


什么是符合标准的好算法

对于小输入,只有100000种可能性-我会选择一个简单的暴力解决方案:只需检查所有可能性,并从中选择最好的。对于现代机器,在100000大小的输入上运行评分函数在计算上并不困难,而且很可能只需要几秒钟

GA和其他人工智能算法通常用于更大的输入[数十亿和更多的可能性],因此在您的情况下,它们可能不是最佳解决方案

与任何其他解决方案不同,蛮力解决方案将确保您获得最佳解决方案,并在用尽所有可能的解决方案时终止


(*)注:您可以修改GA和最陡上升,以克服您提到的第二个问题[逃逸局部极大值],方法是在解决方案没有改善k步时强制执行,但同样-您将不知道在每个点上离最佳解决方案有多近。

如果只有100000个可能的时间表,在计算上,使用蛮力并检查所有这些并不是很难。。当可能的时间表多得多[有时几十亿甚至更多]时,通常使用遗传算法或其他人工智能工具。蛮力解决方案不会花费太长时间来输入100000个可能的时间表,并且显然会得到最佳结果。您可以通过放弃不可能比您已有的最佳解决方案更好的解决方案来改进蛮力搜索。100000个可能性实际上非常小。如果你在两个房间的5个时间段内有10节课,你就有10万种可能性。看看怎么做(也可能是品牌和绑定)。@GeoffreyDeSmet:OP特别要求少量的可能性。虽然在一般情况下没有用处,但在这个特定问题中,蛮力解决方案非常适合。在我看来,在OP所示的如此小的数据集上使用GA或其他AI算法(如爬山)将是一种过火的行为。