要说明的是:附录11的算法与这里不完全相同.为保证收敛性,附录11的算法作了修正,采用了最佳个体保存方法(elitist model),具体内容将在后面给出介绍.
由初始群体的入选概率我们淘汰掉a3,再加入a2补足成与群体同样大小的种群得到newpop(1)如下:
newpop(1)={
<1101011101001100011110>, %% a1 <1000011001010001000010>, %% a2 <1000011001010001000010>, %% a2 <0110101001101110010101>} %% a4 (5)交叉
交叉也就是将一组染色体上对应基因段的交换得到新的染色体,然后得到新的染色体组,组成新的群体(Matlab程序参见附录9).
我们把之前得到的newpop(1)的四个个体两两组成一对,重复的不配对,进行交叉.(可以在任一位进行交叉)
<110101110 1001100011110>, <1101011101010001000010> 交叉得:
<100001100 1010001000010>, <1000011001001100011110>
<10000110010100 01000010>, <1000011001010010010101> 交叉得:
<01101010011011 10010101>, <0110101001101101000010>
通过交叉得到了四个新个体,得到新的群体jchpop (1)如下: jchpop(1)={
<1101011101010001000010>, <1000011001001100011110>, <1000011001010010010101>, <0110101001101101000010>}
这里采用的是单点交叉的方法,当然还有多点交叉的方法,不过有些烦琐,这里就不着重介绍了. (6)变异
变异也就是通过一个小概率改变染色体位串上的某个基因(Matlab程序参见附录10).
现把刚得到的jchpop(1)中第3个个体中的第9位改变,就产生了变异,得到了新的群体pop(2)如下:
pop(2)= {
<1101011101010001000010>, <1000011001001100011110>,
<1000011011010010010101>,
<0110101001101101000010> }
然后重复上述的选择、交叉、变异直到满足终止条件为止. (7)终止条件
145