求解一元函数的最大值:
f(x)=x sin(10π*x)+2.0,x∈[-1,2]
一元函数图像如图8-2所示。
图8-2 函数图像
1.问题的提出
首先用微分法求解f(x)的最大值:
即
解有无穷多个:
式中,εi(i=1,2,…,-1,-2,…)是一个接近于0的实数递减序列。
当i为奇数时,xi对应局部极大值点;i为偶数时,xi对应局部极小值值。x19即区间[-1,2]内的最大值点:
2.编码
表现型:x作为实数,可以视为遗传算法的表现型形式。
串长与精度之间的关系:若要求求解精度到6位小数,区间长度为2-(-1)=3,即需将区间分为3/0.000 001=3×106等份。所以编码的二进制串长应为22位。
3.产生随机种群
产生的方式:随机。
产生的结果:长度为22的二进制串。
产生的数量:种群的大小(规模)指种群中个体的数目,如30,50…(www.xing528.com)
4.计算适应度
不同的问题有不同的适应度计算方法,本例中,直接用目标函数作为适应度函数。
(1)将某个体转化为[-1,2]区间的实数:
s=<1000101110110101000111>→x=0.637 197
(2)计算x的函数值(适应度):
f(x)=x sin(10π*x)+2.0
=2.586 345
5.遗传操作
选择:轮盘赌选择法。
交叉:单点交叉。
变异:小概率变异。
6.模拟结果
设置的参数:种群大小50;交叉概率0.75;变异概率0.05;最大迭代数200。遗传算法优化结果如表8-3所示,得到的最佳个体:
表8-3 遗传算法优化结果
smax=<1111001100111011111100>
xmax=1.850 6
f(xmax)=3.850 3
历代适应度变化如图8-3所示。
图8-3 历代适应度变化
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。