我正在研究大学调度问题并为此使用简单的遗传算法。实际上它工作得很好,并将目标函数值从 0% 优化到 90%(大约)1 小时。但是随后该过程会急剧变慢,并且需要数天才能获得最佳解决方案。我看到很多论文认为将其他算法与基因混合是合理的。请你给我一些建议,告诉我什么算法可以与遗传算法混合,以及如何应用这种算法来加快求解过程。主要问题是如何将任何启发式方法应用于这种复杂结构的问题?我不知道如何在那里应用,例如贪婪启发式。
提前感谢大家!非常感谢您的帮助!
问题描述:
我有:
- 由 ScheduleSlot 对象填充的数组
- 由课程对象填充的数组
我愿意:
- 标准两点分频器
- 突变(将随机课程移动到随机位置)
- 粗选(仅选择 n 个最佳个体进入下一个种群)
@Dougal和@izomorphius的附加信息:
我正在尝试构建一个大学时间表,该课程表在课程、重叠和针对团体和教授的地理分布课程之间没有中断。
适应度函数非常简单:适应度 = -1000*numberOfOverlaps - 1000*numberOfDistrebutedLessons - 20*numberOfBreaks。(或类似的东西,我们可以简单地改变变量的系数)
在开始的时候,我生成我的个人只是将课程放在随机的房间、时间和日期。
如上所述,突变和交叉非常简单:
- 交叉- 取父调度,随机选择交叉点和交叉范围,只交换父调度的部分,生成两个子调度。
- 突变 - 采用儿童时间表并将 n 个随机课程移动到随机位置。