0

我正在尝试实现一种遗传算法,它将通过定位、调整大小和着色 1000 个圆圈来重新创建给定的图像。但是,我发现当适应度达到某个值(在我的情况下约为 0.37)时,它会停止增加。换句话说,它只是收敛于值。

我想不出改善这个的方法

在此处输入图像描述

一些细节

人口规模:50

突变率:0.025

每个孩子的基因是一个 1000 元素的数组,元素类型为CircleData,其中包含圆的大小、颜色和位置

健身功能

我遍历目标图像上的每个像素和算法绘制的画布。对于每个像素,我将 RGB 值映射到 3D 空间中的一个点并计算两点之间的距离。然后将对每个像素的距离求和并归一化以获得 [0, 1] 中的适应度值,其中 1 表示每个像素都是相同的。最后我取值pow(fitness, 2)作为最终的适应度值。

选择

我根据孩子们的健康状况对他​​们进行分类,并把最差的 2/3 降下来。对于剩下的孩子,我使用Fitness Proportionate Selection选择两个父母

分频器

我使用一个点交叉点和随机交叉点


更新

我怀疑问题是由于local maximum,仍在尝试解决该问题...

关于GA中局部最大值的一些SO问题:

如何防止遗传算法收敛于局部最小值?

如何防止我的程序卡在局部最大值(前馈人工神经网络和遗传算法)

Max Fitness 在遗传算法实现中停留在局部最大值

4

0 回答 0