遗传算法。群体包含不执行条件的染色体。我该怎么办?

时间:2015-04-03 11:46:37

标签: algorithm genetic-algorithm

我正在使用遗传算法研究旅行商问题解决方案。 有些染色体含有最短的方法,但它们仍然不合适。

例如,推销员必须在下午6点到达A市,但是使用染色体的解决方案,他将在晚上7点到达那里。因此,这种解决方案不正确。

我应该怎么处理这个问题?
首先,我可以改变这些染色体。但是我怎么能这样做呢?
其次,我可以保留它们。那我该怎么做呢?
第三,我可以替换它们,但我不知道应该用什么代替。

您能帮助我或向我推荐一些有用的信息吗?

英语不是我的母语,如果我说错了就很抱歉。

3 个答案:

答案 0 :(得分:0)

在我看来,最简单的解决办法就是让携带这些染色体的样本不受重视。

这意味着,在遗传算法的每次迭代中,携带该染色体的可能解决方案“死亡”。这将确保携带该染色体的群体将保持极小,并且不能为下一代“繁殖”,并且不会成为问题 - 因为具有该染色体的样本不能在群体中占优势。

答案 1 :(得分:0)

如果没有必要,不要杀死染色体。 只有当人口变得太大时才杀死染色体。 简单地使用交叉和变异算子,可能采用精英采样策略。

PS: 你读过Zbigniew Michalewicz关于遗传算法的书吗? 我很确定它包含一个推销员问题的例子

答案 2 :(得分:0)

您正在处理约束问题。使用GAs来解决这些问题可能很棘手,但通常有四种可能性来处理约束:

  1. 使用此类表示使解决方案始终有效。
  2. 不要使用任何约束保留表示,而是引入一些校正运算符,从而使有效解决方案无效。
  3. 惩罚(或杀死)无效的解决方案。
  4. 使用多目标算法(例如NSGA-II,我最喜欢的算法)并将约束转化为目标。
  5. 最后一个选项非常有效,但您需要能够衡量违反约束的多少。如果这是可能的,在我看来它是在你的情况下 - 你可以只是总结访问的期望和实际时间之间的差异,然后这个约束违规的度量只是成为另一个目标,你优化原始目标和新的同时。这种方法使算法能够在所有个体中利用有用信息,即使它们是无效的。