如何在遗传算法中强制基因的依赖/链接?



对于当前的项目,我想使用遗传算法 - 目前我查看了jenetics库。

我怎样才能强制某些基因相互依赖?我想在基因上映射CSS,例如我有基因指示是否显示图像,如果它也是各自的高度和宽度。所以我想把这些基因作为一个群体,因为在交叉之后,染色体会指示"没有图像"之类的东西是没有意义的 - 高度 100px - 宽度 0px。

有没有办法这样做?或者也许是另一个支持此功能的库(在 java中(?

非常感谢!

您希望将更多知识嵌入到系统中以减少搜索空间。

如果是关于解决方案结构的知识,我建议看看语法演变(GE(。你的知识似乎更多的是关于密码子的有效组合,所以GE不容易应用。

可以将一些特征组合成一个密码子,但这可能是不希望和/或不可行的(例如,由于大量可能的组合(。

但实际上你在这里没有问题:

  • 拥有无意义的基因型是可以的——由于选择压力,它们将被移除
  • 拥有无意义的密码子序列是可以的——它被称为"膨胀";膨胀在一些进化算法中很常见(通常在遗传编程的上下文中讨论(,严格来说并不坏;过多地与膨胀作斗争会降低搜索性能

如果你知道你的基因组是如何编码的——也就是说,你知道哪些染色体序列形成了群体——那么你就可以扩展(因为你提到了jenetics(io.jenetics.MultiPointCrossover以避免分裂群体。 (源代码可在 GitHub 上找到。

它可以像存储基因组一样简单,如果其中一个随机切割索引将一个组分开,则形成组,将索引调整到组的最接近的一端。 (当然,这会导致在统计上更高的组末端切割的可能性;最好生成一个新的随机位置,直到它不与组相交。

但正如皮特所指出的(基于其他基因的基因没有意义(被忽略(也是有效的;如果这种组合是反生存的,它将被选中。

相关内容

  • 没有找到相关文章

最新更新