2014-09-27 51 views
-3

我想为我的大学开发一个时间表发生器软件。显然它需要大量的约束满足,也就是说我需要满足很多规则才能生成一堆类不冲突的时间表。在做了一些研究和阅读this article后,我觉得我需要在其中使用一些AI。现在,我是AI的一名完全新手。任何人都可以告诉我哪种算法在我的情况下效果最好?时间表发生器软件的AI

+0

我坦率地不认为这是一个广泛的问题! – 2014-09-27 15:51:09

回答

1

您可以用于此问题的最简单的算法是遗传算法(或任何其他进化算法)。使用GA解决这个问题非常简单,但却很有效。有很多论文和代码使用这种方法来解决这个问题。

如果您没有什么规则和约束条件,您可能希望使用像CSP启发式回溯这样的简单直接技术来加快速度,但如果有很多类和约束,我建议使用遗传算法。

+0

感谢您的回复。你能不能扩大一点......可能举个例子。 – 2014-09-27 07:24:52

+0

当然 你应该先看看算法本身。这非常简单,你可以在一段时间内学习。 该算法尝试生成所有可能的解决方案并评估其适用性。 考虑到你已经学会了如何使用遗传算法,这就是你应该做的时间表: 1.创建你的染色体(这里每个染色体是一个可能的解决方案) 2.培养GA 3.使用具有最佳拟合度的染色体上一代 您可以使用关键词进行搜索,例如使用遗传算法解决大学时间表问题。在网上有很多关于此的例子和论文 祝您好运:-) – MSH 2014-09-27 07:32:17

+0

非常感谢!你的回答真的让我对这个项目感到乐观! :) – 2014-09-27 07:45:27

1

那么,确实不是一件小事。像这样的问题很难解决。

在这里,我可以推荐你两件事情:

  1. 使用现有的CSP/COP解算器,并描述其语言的限制。这些求解器非常好,快速和调整,正在开发多年。
  2. 在离散优化领域进行教育(在coursera.org上有一门课程,名字很好)。只有在掌握了这些事情的基础知识之后,才能尝试编写自己的求解器。但让你受到警告!离散优化是痛苦和痛苦:-)。

这绝不是一个合适的地方告诉你CSP/COP如何工作。这是一个非常广泛和困难的领域。

祝你好运!

+0

谢谢!所以,你不同意遗传算法的东西不会很难,正如MSH所建议的那样? – 2014-09-27 07:43:52

+0

不,我绝对同意!我在演化算法方面正在攻读博士学位,基本概念很容易理解。但从我的经验来看,使用最简单形式的普通遗传算法往往不够好。如果你的问题不是黑盒子,大多数情况下使用专门的解算器会更好。 – zegkljan 2014-09-27 08:01:46