📄 ymmutation.m
字号:
function newP3=ymmutation(newP2,m,n,d,Xlu,O)
Pm=0.03;
Mm=20;
Mp=1/Mm;
sum=0;
M=newP2;
newP3=zeros(size(newP2));
M1=[];
for i=1:m-1
Mr1=unidrnd(m);
M1=M(Mr1,:);
[m1,m2]=min(M1);
Mr=rand;
if Mr<=Pm
s=round(3+(m2-1-2-1-3)*rand);
if s<=0
break
end
xl=Xlu(s,1);
xu=Xlu(s,2);
for j=1:Mm
ar=rand;
if ar<Mp
a=1;
else
a=0;
end
sum=sum+a/2^(j-1);
end
Mr2=unidrnd(2);
if Mr2==1
M1(s+1)=M1(s+1)+0.5*(xu-xl)*sum;
else
M1(s+1)=M1(s+1)-0.5*(xu-xl)*sum;
end
M(Mr1,:)=M1;
end
end
newP3=M;
%检测变异产生的个体是否超出变量范围
for i=1:m
for j=1:18*n+20
xl=Xlu(j,1);
xu=Xlu(j,2);
if newP3(i,j+1)<xl
newP3(i,j+1)=xl;
end
if newP3(i,j+1)>xu
newP3(i,j+1)=xu;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -