📄 crossover.m
字号:
function population=crossover(population,pc,M,L,fitness)% 交换操作 (选择交换个体的方法也是轮盘法)%顺序累计群体内各个体的适应度,得相应的累计值s(i),最后一个累计值为s(M)s(1)=fitness(1);for i=2:M s(i)=s(i-1)+fitness(i);endfor j=1:2:M*pc r1=rand*s(M); %在[0,s(M)]区间内产生均匀分布的随机数 r1 while 1 r2=rand*s(M); if r2~=r1 break end end %在[0,s(M)]区间内产生均匀分布的随机数 r2 且 r2~=r1 ii=1; jj=1; for i=1:M if s(i)>=r1 ii=i; break; end %依次用s(i)与r1,比较,第一个出现s(i)大于或等于r1的个体i被选为交换对象, if s(i)>=r2 jj=i; break; end %依次用s(i)与r2,比较,第一个出现s(i)大于或等于r2的个体i被选为交换对象, end swappoint=ceil(rand*(L-1)); %在[1,L-1]区间产生均匀分布的随机整数,作为交换点位置 temp=population(ii,swappoint+1:L); population(ii,swappoint+1:L)= population(jj,swappoint+1:L); population(jj,swappoint+1:L)= temp; %执行交换 end%return population;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -