![](https://csdnimg.cn/release/download_crawler_static/87108184/bg4.jpg)
选择过程:选择过程是以旋转赌轮 pop-size 次为基础,每次旋转都为新的种群选择一个染
色体。赌轮是按每个染色体的适应度进行选择染色体的。
step1 、对每个染色体 vi,计算累计概率 qi,q0=0;qi=σeval(vj) j=1,…,i;i=1,…
pop-size.
step2、从区间(0,pop-size)中产生一个随机数 r;
step3、若 qi-1<r<qi,则选择第 i 个染色体 ;
step4、重复 step2 和 step3 共 pop-size 次,这样可以得到 pop-size 个复制的染色体。
grefenstette 编码:由于常规的交叉运算和变异运算会使种群中产生一些无实际意义的染
色体,本文采用 grefenstette 编码《遗传算法原理及应用》可以避免这种情况的出现。所
谓的 grefenstette 编码就是用所选队员在未选(不含淘汰)队员中的位置,如:
8 15 2 16 10 7 4 3 11 14 6 12 9 5 18 13 17 1
对应:
8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1。
交叉过程:本文采用常规单点交叉。为确定交叉操作的父代,从 到 pop-size 重复以下过
程
:从[0,1]中产生一个随机数 r,如果 r<pc ,则选择 vi 作为一个父代。
将所选的父代两两组队,随机产生一个位置进行交叉,如:
8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1
6 12 3 5 6 8 5 6 3 1 8 5 6 3 3 2 1 1
交叉后为:
8 14 2 13 8 6 3 2 5 1 8 5 6 3 3 2 1 1
6 12 3 5 6 8 5 6 3 7 3 4 3 2 4 2 2 1
变异过程:本文采用均匀多点变异。类似交叉操作中选择父代的过程,在 r<pm 的标准下
选
择多个染色体 vi 作为父代。对每一个选择的父代,随机选择多个位置,使其在每位置按均
匀变异(该变异点 xk 的取值范围为[ukmin,ukmax],产生一个[0,1]中随机数 r,该点变
异为
x'k=ukmin+r(ukmax-ukmin))操作。如:
8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1
变异后:
8 14 2 13 10 6 3 2 2 7 3 4 5 2 4 1 2 1
反 grefenstette 编码:交叉和变异都是在 grefenstette 编码之后进行的,为了循环操作
和
返回最终结果,必须逆 grefenstette 编码过程,将编码恢复到自然编码。
循环操作:判断是否满足设定的带数 xzome,否,则跳入适应度 f 的计算;是,结束遗传
操
作,跳出。
function [bestpop,trace]=ga(d,termops,num,pc,cxops,pm,alpha)
%
%————————————————————————
%[bestpop,trace]=ga(d,termops,num,pc,cxops,pm,alpha)