我一直在用编码、优化和解码重新审视遗传算法。我的第一次尝试是带有有序交叉的旅行推销员,效果很好。我发现一篇文章试图在优化 2d 打包问题的同时优化更复杂的基因组。
作者使用有意义的反向波兰符号对问题进行编码。它使用部分组合和 V 或 H 作为操作符。
即34H5V
解码堆栈必须解析为一个堆栈元素,这是我的最终布局。话虽如此,直到某一点的操作员数量必须比直到同一点的零件数量少 1。然后作者指出,他通过在零件上使用有序交叉和对运算符使用二进制交叉来使用混合交叉。
我仔细考虑了这一点,但我不明白他是如何在交叉之前分离零件和操作员,然后在评估性能之前重新组合它们的,而且它们提供的细节很少。如果发生二进制交叉,则用“X”替换零件以保持相对位置,以便它们可以在交叉后重新组合,但操作员和零件之间的关系不成立。
是否有人可能拥有处理过类似情况或成功使用过的资源。