📄 mutation.m
字号:
function newP3=mutation(newP2,m,n,d,Xlu,O)
Pm=0.03;
Mm=20;
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
a=rand;
sum=sum+a;
end
M1(s+1)=(xl+xu)/2+(xu-xl)/6*(sum-0.5*Mm);
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 + -