我正在实施 NSGA II 遗传算法来为我的大学制定一套时间表。我在解决方案的变化方面遇到问题。
我的算法在初始化、变异和交叉中运行良好,但在最后一代审查我的解决方案后它们都是相同的,例如我一代有 200 个,也许其中 64 个彼此相同,54 个相同其他等
我的问题是什么可能导致这种情况?交叉和突变的最佳形式是什么?
代大小、代数、突变率和交叉率是否也有规范?
目前它像这样运行:
- 随机生成300个解决方案
- 计算适应度和排名
- 挑选 200 个最佳解决方案
- 使其中的 5% 发生变异并产生 80 个孩子
- 再次计算和排名
- 挑选出最好的 300 人,传给下一代
- 重复