【问题标题】:AI for time table generator software [closed]用于时间表生成器软件的 AI [关闭]
【发布时间】:2014-09-27 07:09:55
【问题描述】:

我正在尝试为我的大学开发一个时间表生成器软件。显然,它需要大量的约束满足,即我需要满足很多规则才能生成一堆类不冲突的时间表。在做了一些研究和阅读this article 之后,我觉得我需要在其中使用一些人工智能。现在,我是一个完全的 AI 新手。谁能告诉我哪种算法最适合我的情况?

【问题讨论】:

  • 坦率地说,我不认为这是一个如此广泛的问题!

标签: c++ artificial-intelligence


【解决方案1】:

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

如果您的规则和约束很少,您可能希望使用精确直接的技术(例如使用 CSP 启发式回溯)来加快速度,但如果有很多类和约束,我建议使用遗传算法。

【讨论】:

  • 感谢您的回复。能否请您稍微扩展一下...可能举个例子。
  • 当然你应该先看看算法本身。它非常简单,您可以在短时间内学会它。该算法试图生成所有可能的解决方案并评估它们的适应度。考虑到你已经学会了如何使用遗传算法,你应该这样做来制定时间表: 1. 创建你的染色体(这里每个染色体都是一个可能的解决方案) 2. 训练遗传算法 3. 使用上一代最适合的染色体 你可以使用关键字搜索,例如使用遗传学算法解决大学时间表。网上有很多关于这个的例子和论文祝你好运:-)
  • 非常感谢!你的回答真的让我看好这个项目! :)
【解决方案2】:

嗯,这确实不是一项简单的任务。像这样的问题很难解决。

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

  1. 使用现有的 CSP/COP 求解器并用其语言描述您的约束。这些求解器非常好,快速且经过调整,已开发多年。
  2. 在离散优化领域自学(在 coursera.org 上有一门同名的课程非常棒)。只有在你掌握了这些东西如何工作的基础知识之后,你才能尝试编写自己的求解器。但是让你被警告!离散优化是痛苦的:-)。

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

祝你好运!

【讨论】:

  • 谢谢!那么,您不同意遗传算法的事情不会像 MSH 建议的那样非常困难吗?
  • 不,我绝对同意!我正在攻读进化算法的博士学位,基本概念很容易掌握。但是根据我的经验,以最简单的形式使用简单的遗传算法通常还不够好。如果您的问题不是黑匣子,大多数时候使用专门的求解器会更好。
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多