我一直在重新审视具有编码,优化和解码的遗传算法。我的第一次尝试是有序交叉的旅行推销员,效果很好。我找到了一篇文章,试图优化更复杂的基因组,同时优化二维包装问题。
作者使用反向抛光表示法对问题进行编码。它使用零件组合和V或H作为操作者。
即34H5V
解码堆栈必须解析为一个堆栈元素,这是我的最终布局。话虽如此,直到某一点的操作员数量必须比直到同一点的部件数量少1。然后作者说他通过在部件上使用有序交叉并为操作员使用二进制交叉来使用混合交叉。
我仔细考虑了这一点,但我无法理解他是如何在交叉之前分离部件和操作员,然后在评估性能之前重新组合它们并且它们提供的细节很少。如果二进制交叉发生用“X”替换零件以保持相对位置,那么它们可以在交叉之后重新组合,但操作符和零件之间的关系不成立。
是否有人可能拥有处理类似情况的资源,或者可能已成功使用此资源。
答案 0 :(得分:0)
这看起来比实际上更困难。生成原始填充时,您需要遵守后缀表示法所规定的限制。当发生交叉时,您只需构建父级的掩码
即xxxxooxoxx
其中x是对象,o是操作。一旦你有掩码保持位置,你可以创建一个只有操作符和一个对象的sting。操作符可以使用二进制交叉和对象作为部分地图交叉来完成。完成后,按照它们在每个组中出现的顺序为掩码填充值。由于面具有效,后代也是有效的。
唯一的问题是我得到所有可能的安排,因为没有它,它将全部限于面具。他通过做出由突变率决定的交换突变来解决这个问题。