⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ymcrossover.m

📁 规则障碍物环境下的机器人路径规划matlab源码!
💻 M
字号:
function newP2=ymcrossover(newP1,m,n,Xlu)
Pc=0.6;     %交叉概率


%交叉方式1:种群中相邻的个体进行交叉
PrePop=[];
P11=[];
P12=[];
P21=[];
P22=[];
if fix(m/2)==m/2
    PrePop=newP1;
else
    j=unidrnd(m);
    if j==m
        for i=1:m-1
            PrePop(i,:)=newP1(i,:);
        end
    else
        for i=1:j
            PrePop(i,:)=newP1(i,:);
        end
        for i=j+1:m-1
            PrePop(i,:)=newP1(i,:);
        end
    end
end
for i=1:m/2
    a=round(1+(m-1)*rand);
    b=round(1+(m-1)*rand);
    P11=PrePop(a,:);
    P12=P11;
    P21=PrePop(b,:);
    P22=P21;
    [k1,k2]=min(P11);
    [k3,k4]=min(P21);
    k=min(k2-1,k4-1);
    c=round(4+(k-6)*rand);
    if c<=0
        break
    end
    Cr=rand;
    if Cr<=Pc
       P12(2:c)=P11(2:c);
       P12(c+1:end)=P21(c+1:end);
       P22(2:c)=P21(2:c);
       P22(c+1:end)=P11(c+1:end);  
    end
        PrePop(a,:)=P12;
        PrePop(b,:)=P22;
    end
newP2=PrePop;
%检测交叉产生的个体是否超出变量范围
for i=1:m
    for j=1:18*n+20
        xl=Xlu(j,1);
        xu=Xlu(j,2);
        if newP2(i,j+1)<xl
            newP2(i,j+1)=xl;
        end
        if newP2(i,j+1)>xu
            newP2(i,j+1)=xu;
        end
    end
end

⌨️ 快捷键说明

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