我正在尝试实现一种遗传算法,它将通过定位,调整和着色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问题:
How to prevent genetic algorithm from converging on local minima?
Max Fitness stuck at local maxima in genetic algorithm implementation