%OX顺序交叉策略
Pc=0.9;
for i=1:2:N
[n,m]=size(pop);
while n>=20
break;
end
cross_P=rand; %随机产生一个数,以比较交叉概率
if cross_P<=Pc %交叉概率为Pc
P1=pop(i,:);
P2=pop(i+1,:);
X=floor(rand*k)+2;
Y=floor(rand*k)+2;
if X<Y
change1=P1(X:Y);
change2=P2(X:Y);
%开始修复 Order Crossover
%1.列出基因
p1=[P1(Y+1:end),P1(1:X-1),change1];
p2=[P2(Y+1:end),P2(1:X-1),change2];
%2.1删除已由基因 P1
for j=1:length(change2)
p1(p1==change2(j))=[];
end
%2.2删除已由基因 P2
for j=1:length(change1)
p2(p2==change1(j))=[];
end
%3.1修复 P1
P1=[p1(k+3-Y+1:end),change2,p1(1:k+3-Y)];
%3.1修复 P2
P2=[p2(k+3-Y+1:end),change1,p2(1:k+3-Y)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
change1=P1(Y:X);
change2=P2(Y:X);
%开始修复 Order Crossover
%1.列出基因
p1=[P1(X+1:end),P1(1:Y-1),change1];
p2=[P2(X+1:end),P2(1:Y-1),change2];
%2.1删除已由基因 P1
for j=1:length(change2)
p1(p1==change2(j))=[];
end
%2.2删除已由基因 P2
for j=1:length(change1)
p2(p2==change1(j))=[];
end
%3.1修复 P1
P1=[p1(k+3-X+1:end),change2,p1(1:k+3-X)];
%3.1修复 P2
P2=[p2(k+3-X+1:end),change1,p2(1:k+3-X)];
[np1,mp1]=size(P1);
[np2,mp2]=size(P2);
if mp1==9
P1=[0,P1,0];
end
if mp2==9
P2=[0,P2,0];
end
P1=adjust(P1);
P2=adjust(P2);
P1=adjust(P1);
P2=adjust(P2);
end
end
new_pop=[pop;P1;P2];
pop=new_pop;
end
clear X;
clear Y;
clear i;
clear j;
clear f;
clear I;
VRP遗传算法的Matlab代码.rar
需积分: 50 112 浏览量
2021-11-09
12:00:17
上传
评论 10
收藏 7KB RAR 举报
毛栗子201105
- 粉丝: 106
- 资源: 4
最新资源
- 采用P-f和Q-V滞控的去中心化逆变器型交流微电网的模拟(Simulink仿真实现)
- 彩虹聚合二级域名DNS管理系统源码v1.3
- 【TOF相机笔记3】Simulink使用方法
- 算法部署-基于C++和Python使用ONNXRuntime部署RT-DETR目标检测算法-附项目源码-优质项目实战.zip
- Bitree.cpp
- 改变浏览器大小,图片(img)内容居中显示
- 全景分割-基于FAIR-DETR对Cityscapes数据集进行微调实现全景分割-附项目源码-优质项目实战.zip
- Tru master.m4a
- 基于ELMAN神经网络的用气量预测,基于ELMAN的天然气消费量预测(代码完整,数据齐全)
- 基于Vue3+ThreeJS实现机械臂控制和预览+源码+开发文档+代码解析(高分优秀项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0