141/ 3 遗传算法的计算步骤例 1:设2( )20.5f xxx,求max( ),[ 1,2]f xx.(1)编码和产生初始群体首先第一步要确定编码的策略, 也就是说如何把1到 2 这个区间内的数用计算机语言表示出来.编码时要注意以下三个原则:完备性:问题空间中所有点(潜在解)都能成为GA 编码空间中的点(染色体位串)的表现型;健全性: GA 编码空间中的染色体位串必须对应问题空间中的某一潜在解;非冗余性:染色体和潜在解必须一一对应.这里我们通过采用二进制的形式来解决编码问题,将某个变量值代表的个体表示为一个 {0 ,1} 二进制串.当然,串长取决于求解的精度.如果要设定求解精度到六位小数,由于区间长度为2( 1)3,则必须将闭区间[ 1,2] 分为63 10等分.因为21622209715223 1024194304所以编码的二进制串至少需要22 位.将一个二进制串 (b21b20b19⋯b1b0)转化为区间 [ 1,2] 内对应的实数值很简单,只需采取以下两步:1)将一个二进制串( b21b20b19⋯b1b0)代表的二进制数化为10 进制数:2121 2019102100()(2 )'iiib b bb bbx2)'x对应的区间 [ 1,2] 内的实数:12)1(2'122xx例如,一个二进制串a=<1000101110110101000111>表示实数 0.637197.'x =(1000101110110101000111)2=2288967 637197.01232288967122x二进制串 <0000000000000000000000>,<1111111111111111111111>,则分别表示区间的两个端点值 -1 和 2.利用这种方法完成了遗传算法的第一步——编码,这种二进制编码的方法完全符合上述的编码的三个原则.首先我们来随机的产生一个个体数为4 个的初始群体如下:pop(1)={ <1101011101001100011110>,%% a1 <1000011001010001000010>,%% a2 <0001100111010110000000>,%% a3 <0110101001101110010101>} %% a4 化成十进制的数分别为:pop(1)={ 1.523032,0.574022 ,-0.697235 ,0.247238 } 接下来我们就要解决每个染色体个体的适应值问题了.(2)定义适应函数和适应值由于给定的目标函数2( )20.5f xxx在[1,2] 内的值有正有负,所以必142/ 3 须通过建立适应函数与目标函数的映射关系,保证映射后的适应值非负, 而且目标函数的优化方向应对应于适应值增大的方向,也为以后计算各个体的入选概率打下基础.对于本题中的最大化问题,定义适应函数( )g x ,采用下述方法:minmin( ),( )0( )0,f xFf xFg x若其他式中minF既可以是特定的输入值,也可以是当前所有代或...