uniformcross.asv

来自「经典遗传算法」· ASV 代码 · 共 26 行

ASV
26
字号
function [Chorm]=ucross(Chorm,Pc)
[m,n]=size(Chorm);
k=floor(m/2);
A=Chorm((1:k),:);
B=Chorm((k+1:2*k),:);
for j=1:k
    if rand<Pc 
        for i=1:n
           if floor(2*rand)==0   %采用均匀交叉方法,即随机数值是0的位交叉,1的不交叉 
               A(j,i)=B(j,i);
               B(j,i)=A(j,i);
           end
        end
    end
end
%[m,n]=size(Chorm);
%k=floor(m/2);
%p=randperm(m);%取1-m的随机全排列
%A=Chorm(p(1:k),:);
%B=Chorm(p(k+1:2*k),:);

%W=floor(2*rand(k,n));%交叉掩码
%W(rand(k,1)>Pc,:)=0; %按概率1-Pc设置掩码为0

%Chorm(p(1:k),:)=(A&~W)|(B&W);
%Chorm(p(k+1:2*k),:)=(B&~W)|(A&W);

⌨️ 快捷键说明

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