📄 mutation2.m
字号:
function pop=mutation2(pmutation,crosspop)
%%%%%%%%%% 逆转策略变异法 %%%%%%%%%
%crosspop=[1,2,3,4,1,2; %测试用例
% 2,3,1,4,1,2;
% 3,4,1,1,2,2;
% 1,2,1,4,3,2];
%pmutation=0.8;
[mpop,npop]=size(crosspop);
for i=1:mpop
temp=rand;
if pmutation>temp
j1 = rand_function(1,npop); %随机选取数串的变异区域
j2 = rand_function(1,npop);
while j1==j2
j1 = rand_function(1,npop);
j2 = rand_function(1,npop);
end
if j1>j2 %调整数串的变异区域起止位置标号
j_int=j2;
j2=j1;
j1=j_int;
end
p=crosspop(i,:);
p_cho=p(j1:j2); %取出数串
k=j2-j1+1;
for j=j1:j2
crosspop(i,j)=p_cho(k); %逆序后放进原来数串的位置
k=k-1;
end
end
end
pop=crosspop;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -