我正在使用遗传算法研究旅行商问题解决方案。 有些染色体含有最短的方法,但它们仍然不合适。
例如,推销员必须在下午6点到达A市,但是使用染色体的解决方案,他将在晚上7点到达那里。因此,这种解决方案不正确。
我应该怎么处理这个问题?
首先,我可以改变这些染色体。但是我怎么能这样做呢?
其次,我可以保留它们。那我该怎么做呢?
第三,我可以替换它们,但我不知道应该用什么代替。
您能帮助我或向我推荐一些有用的信息吗?
英语不是我的母语,如果我说错了就很抱歉。
答案 0 :(得分:0)
在我看来,最简单的解决办法就是让携带这些染色体的样本不受重视。
这意味着,在遗传算法的每次迭代中,携带该染色体的可能解决方案“死亡”。这将确保携带该染色体的群体将保持极小,并且不能为下一代“繁殖”,并且不会成为问题 - 因为具有该染色体的样本不能在群体中占优势。
答案 1 :(得分:0)
如果没有必要,不要杀死染色体。 只有当人口变得太大时才杀死染色体。 简单地使用交叉和变异算子,可能采用精英采样策略。
PS: 你读过Zbigniew Michalewicz关于遗传算法的书吗? 我很确定它包含一个推销员问题的例子
答案 2 :(得分:0)
您正在处理约束问题。使用GAs来解决这些问题可能很棘手,但通常有四种可能性来处理约束:
最后一个选项非常有效,但您需要能够衡量违反约束的多少。如果这是可能的,在我看来它是在你的情况下 - 你可以只是总结访问的期望和实际时间之间的差异,然后这个约束违规的度量只是成为另一个目标,你优化原始目标和新的同时。这种方法使算法能够在所有个体中利用有用信息,即使它们是无效的。