我正在研究大学排课问题,并使用简单的遗传算法来解决。实际上,它能很好地优化目标函数值,在一个小时内从0%优化到90%(左右)。但之后其过程会急剧减缓,需要几天时间才能得到最佳解。我看了很多论文,发现将其他算法与遗传算法混合使用是有道理的。请您给我一些建议,哪些算法可以与遗传算法混用以加速求解过程?主要的问题是如何将启发式应用于这样复杂的问题中?比如贪心启发式,我不知道该如何应用。谢谢各位提前帮助!
问题描述:
我正在构建一份大学课表,其中课程没有间隔、重叠和散布在不同地点,适用于不同的小组和教授。
适应度函数非常简单:适应度= -1000*重叠数量-1000*分散的课程数量-20*间隔数量(或类似的公式,我们可以在变量前简单地更改系数)。
一开始我会随机将课程安排在房间、时间和日期中。突变和交叉如上所述,非常平凡:
问题描述:
- 我有:
- 由ScheduleSlot对象填充的数组
- 由Lesson对象填充的数组
- 我做了以下工作:
- 标准两点交叉
- 突变(将随机的课程移动到随机位置)
- 粗略选择(仅选择n个最佳个体进入下一个种群)
我正在构建一份大学课表,其中课程没有间隔、重叠和散布在不同地点,适用于不同的小组和教授。
适应度函数非常简单:适应度= -1000*重叠数量-1000*分散的课程数量-20*间隔数量(或类似的公式,我们可以在变量前简单地更改系数)。
一开始我会随机将课程安排在房间、时间和日期中。突变和交叉如上所述,非常平凡:
- 交叉-取两个亲代课表,随机选择交叉点和交叉范围,交换亲代课表部分,生成两个子代课表。
- 突变-取一个子代课表,并将n个随机课程移动到随机位置。