urealcross.m

来自「自编遗传算法程序」· M 代码 · 共 23 行

M
23
字号
function x=URealCross(x,Pc)
[m,n]=size(x);
x1=x(1:m/2,:);
x2=x(m/2+1:end,:);

a=0.3;

r=rand(m,1)<Pc;
r=repmat(r,1,n);

%for i=1:m/2
%    if rand<Pc
%        x(i,:)=(a.*x2(i,:)+(1-a).*x1(i,:));
%    end
%end
%for i=m/2+1:m
%    if rand<Pc
%        x(i,:)=(a.*x1(i,:)+(1-a).*x2(i,:));
%    end
%end

x(1:m/2,:)=(a.*x2+(1-a).*x1).*r(1:m/2,:)+x1.*(~r(1:m/2,:));
x(m/2+1:end,:)=(a.*x1+(1-a).*x2).*r(m/2+1:end,:)+x2.*(~r(m/2+1:end,:));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?