遗传算法

dan*_*els 6 mathematical-optimization genetic-algorithm

我正在尝试实现一种遗传算法来计算Rastrigin功能的最小值,我遇到了一些问题.
我需要将染色体表示为二进制字符串,并且Rastrigin函数将数字列表作为参数,如何将染色体解码为数字列表?
Rastrigin还希望列表中的元素为-5.12 <= x(i)<= 5.12如果生成染色体时会发生什么,它会产生不在该区间内的数字?

小智 6

您正在寻求实施遗传算法.您的实现应该适用于任何通用的最小化(或最大化)问题,而不仅仅是Rastrigin函数.您可以决定实施二进制编码GA或Real编码GA.两者都有自己的用途和利基应用.但对你而言,我建议实施Real编码GA.根据你的问题,如果生成的变量值超出[-5.12:5.12],真实编码的GA和二进制编码的GA将以不同的方式处理它们.

在开始实现自己的版本之前,拥有参考代码总是很好.如果您正在寻找C实现,实验室的源部分有一个Real Coded GA实现,我们和其他人广泛使用它来进行我们的研究工作.我建议你玩它并尝试一些简单的优化问题.

Pyevolve是一个用于遗传算法和遗传编程的Python库.

现在,我们已经谈到了实施的内容,您的GA理解是否明确?如果没有,请参阅本教程,该教程从优化的角度介绍了GA.请注意,二进制编码GA的交叉和变异的解释不会自动转移到Real Coded GA.真正的编码GA有自己的复杂性,你需要时间阅读一些论文并理解它们.没有匆忙,但有了全职的努力,你应该能够轻松上手.