【发布时间】:2012-04-27 12:44:19
【问题描述】:
我正在研究大学调度问题并为此使用简单的遗传算法。实际上它工作得很好,并将目标函数值从 0% 优化到 90%(大约)1 小时。但是随后该过程会急剧变慢,并且需要数天才能获得最佳解决方案。我看到很多论文认为将其他算法与基因混合是合理的。请你给我一些建议,告诉我什么算法可以与遗传算法混合,以及如何应用这种算法来加快求解过程。主要问题是如何将任何启发式方法应用于这种复杂结构的问题?我不知道如何在那里应用,例如贪婪启发式。
提前感谢大家!非常感谢您的帮助!
问题描述:
-
我有:
- 由 ScheduleSlot 对象填充的数组
- 由课程对象填充的数组
-
我愿意:
- 标准两点交叉
- 变异(将随机课程移动到随机位置)
- 粗略选择(仅选择 n 个最佳个体进入下一个种群)
@Dougal 和 @izomorphius 的其他信息:
我正在尝试制定一个大学时间表,该课程表在课程、重叠和针对团体和教授的地理分布课程之间没有中断。
适应度函数非常简单:适应度 = -1000*numberOfOverlaps - 1000*numberOfDistrebutedLessons - 20*numberOfBreaks。 (或类似的东西,我们可以简单地改变变量前面的系数)
在最开始时,我生成我的个人只是在随机的房间、时间和日期放置课程。
如上所述,变异和交叉,非常简单:
- Crossover - 带到父 schedule,随机选择交叉的点和范围,只交换父 schedule 的部分,生成两个子 schedule。
- 突变 - 采用子计划并将 n 个随机课程移动到随机位置。
【问题讨论】:
-
这不是我以前做过的事情,也不知道是否是标准的,但你可以考虑运行 GA 一段时间,让一个体质良好的人群,然后使用这些点作为波束搜索的起点或使用标准本地搜索技术的东西。
-
我已经成功地将遗传算法与动态规划、神经网络甚至一些数据挖掘算法相结合。但是如果不知道更多关于你尝试做什么、你的拟合函数是什么、你如何创造个体以及你如何变异的信息,我认为我无法就如何将这些应用于你的问题给你任何建议。
-
@izomorphius,请在更正的主题中找到更多信息,提前感谢您的帮助
-
@Dougal,请在更正的主题中找到更多信息,提前感谢您的帮助
-
如果在 X 次迭代后适应度未能提高,您可以尝试添加模拟退火(可能尊重前 N 个个体):增加热量,然后进行调整。
标签: algorithm scheduling heuristics hybrid genetic