最佳拟合调度算法

sti*_*eta 25 algorithm scheduling genetic-programming genetic-algorithm

我正在编写一个带有困难编程问题的调度程序.有几个事件,每个事件都有多个会议时间.我需要找到会议时间的安排,以便每个时间表包含任何给定事件一次,使用每个事件的多个会议时间之一.

显然我可以使用蛮力,但这很少是最好的解决方案.我猜这是一个相对基本的计算机科学问题,一旦我开始学习计算机科学课程,我就会学到这些问题.与此同时,我更喜欢任何我可以阅读的链接,甚至只是我可以谷歌的名字.

Bet*_*moo 11

我认为你应该使用遗传算法,因为:

  • 它最适合大型问题实例.
  • 它可以降低不准确答案价格的时间复杂度(不是最好的)
  • 您可以通过调整不符合条件的适合性惩罚来轻松指定约束和首选项.
  • 您可以指定程序执行的时间限制.
  • 解决方案的质量取决于您打算花多少时间来解决该计划.

    遗传算法定义

    遗传算法教程

    GA的班级调度项目


nie*_*sle 5

做这件事有很多种方法

一种方法是进行约束编程.这是feanor建议的动态编程的一个特例.使用可以为您进行边界和分支的专用库是很有帮助的.(Google用于"gecode"或"comet-online"查找库)

如果您在数学上倾向于那么您也可以使用整数编程来解决问题.这里的基本思想是将您的问题转化为一组线性不等式.(谷歌为"整数编程安排"找到许多现实生活中的例子,谷歌为"Abacus COIN-OR"找到一个有用的库)

我的猜测是约束编程是最简单的方法,但如果你想在某些时候在你的问题中包含实变量,那么整数编程很有用.