📄 combination.m
字号:
function xpop=combination(mutax,emigx,fristx,pop,res_flg,gk,hk,cmax,emig_ratio,n,tpop,tmax)
% 染色体重组算子,把变异后的群体mutax和混沌移民染色体emigx重组得到子代,
% 以便于送入下一轮作为父代进行进化操作。fristx为上一代中的最优染色体,
% 直接进入xpop实现最优染色体保护策略,确保本算法收敛到全局最优解。
%++++++++++++++++++++++++++++++++++++++++++++
[xa,xb]=size(emigx);
ga_k=pop+xa;
ga_xpop=zeros(ga_k,n);
ga_xpop=[mutax;emigx];
for i=1:ga_k % 计算mutax的适应值。
fitFx(i)=fitfunction(ga_xpop(i,:),res_flg,gk,hk,cmax,tpop,tmax);
end
chxx=zeros(1,n);
for i=1:ga_k-1 % 冒泡法排升序
nm=ga_k-i;
for j=1:nm
if fitFx(j)>fitFx(j+1)
chxx(1,:)=ga_xpop(j,:);
ga_xpop(j,:)=ga_xpop(j+1,:);
ga_xpop(j+1,:)=chxx(1,:);
end
end
end
%++++++++++++++++++++++++++++++++++++++++++++++
finalk=ga_k-pop+2;
for k=ga_k:-1:finalk % 从ga_xpop中选取适应值较大的pop-1个染色体进入xpop.
pp=(ga_k-k)+1;
xpop1(pp,:)=ga_xpop(k,:);
end
% 重组xpop,染色体总数为pop。
xpop=[fristx;xpop1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -