close all
clear
clc
%edit
% 2021-3-15
city=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556;...
3238,1229;4196,1004;4312,790;4386,570;3007,1970;2562,1756;2788,1491;...
2381,1676;1332,695;3715,1678;3918,2179;4061,2370;3780,2212;3676,2578;4029,2838;...
4263,2931;3429,1908;3507,2367;3394,3201;3439,3201;2935,3240;3140,3550;2545,2357;2778,2826;2370,2975];
city_num=size(city,1);
%计算两两城市之间的距离
for i=1:city_num
for j=1:city_num
distance(i,j)=sqrt((city(i,1)-city(j,1))^2 + (city(i,2)-city(j,2))^2);
end
end
%相比于其他算法,迭代次数略长
NP=20;
NG=2000;
F=0.6;
CR=0.5;
pop=zeros(NP,city_num);
x_old=zeros(NP,city_num);
x_new=zeros(NP,city_num);
pi_old=zeros(NP,city_num);
pi_new=zeros(NP,city_num);
for i=1:NP
for j=1:city_num
pop(i,j)=5*rand();
end
end
k=1;
x_old=pop;
while k<=NG
%将实数编码转换成工件顺序编码
for i=1:NP
x_old_decode(i,:)=LOVdecode(x_old(i,:));
end
%----find the best value--------------%
ind_best = x_old(1,:);
for i=2:NP
pi_best=LOVdecode(ind_best);
if CalLength(distance,pi_best)>CalLength(distance,x_old_decode(i,:))
ind_best = x_old(i,:);
end
end
BestFit=CalLength(distance , LOVdecode(ind_best));%最短时间
Best=LOVdecode(ind_best);%最佳路径
%%--------mutaiton---------------------%
for i=1:NP
R=randperm(NP);
r1=R(1);
r2=R(2);
r3=R(3);
if i==r1
r1=R(4);
else if i==r2
r2=R(4);
else if i==r3
r3=R(4);
end
end
end
for j=1:city_num
x_new(i,j) = x_old(r1,j) + F *(x_old(r2,j) - x_old(r3,j));
% if ( x_new(i,j)<xmin) || ( x_new(i,j)>xmax)
% x_new(i,j) = x_old(i,j);
% end
end
end
%----------crossover----------------%
% j=randperm(n);
% jrand=j(1);
for i=1:NP
for j=1:city_num
if (rand()<= CR)
x_new(i,j)=x_new(i,j);
else
x_new(i,j)=x_old(i,j);
end
end
end
%--------selection------------%
for i=1:NP
pi_new(i,:)=LOVdecode(x_new(i,:));
%pi_old(i,:)=LOVdecode(x_old(i,:));
if CalLength(distance,pi_new(i,:)) > CalLength(distance, x_old_decode(i,:))
x_new(i,:) = x_old(i,:);
else
x_old(i,:)=x_old(i,:);
end
end
x_old = x_new;
k=k+1;
end
BSF=Best;
BestL=BestFit;
%绘制路径图
for i=1:city_num-1
plot([city(BSF(i),1),city(BSF(i+1),1)],[city(BSF(i),2),city(BSF(i+1),2)],'bo-');
hold on;
end
plot([city(BSF(city_num),1),city(BSF(1),1)],[city(BSF(city_num),2),city(BSF(1),2)],'ro-');
title('差分进化TSP')
disp('最佳路径');
disp(BSF);
disp('最短路径长度');
disp(BestL)
海神之光
- 粉丝: 5w+
- 资源: 7128
最新资源
- 电力市场节点出清电价 程序备注清晰 适合刚刚接触电力市场的同学 部分参考文献《机组运行约束对机组节点边际电价的影响分析》
- 模块化多电平变器(MMC)matlab仿真 最近电平逼近调制-载波层叠-载波移相调制 二倍频负序环流抑制 子模块电容电压排序 整流 逆变-电压电流双闭环解耦控制 快速学习MMC必备
- 液体混合装置plc控制系统 西门子1200仿真系统 采用博途V15编写,全自动仿真完成 包含程序和画面 实现要求:液体混合装置控制系统,由液面传感器SL1、SL2、SL3,液体A、B、C阀门与混合
- 基于非奇异快速终端的无差拿电流预测控制 (有传感) 模型的鲁棒性很好,和其他模型一样是同样的负载转矩,但波动非常小 电流环采用无差拿电流预测控制,没引入任何参数
- 粒子群算法PSO优化BP做分类模型,数据是多输入单输出的,可以做多分类预测,程序注释详细,直接替数据就可以用,第一次用MATLAB,对软件不熟悉的人,可以远程给替数据
- 昆仑通态触摸屏与台达变频器RS485通讯程序,不经过plc直接用昆仑通态触摸屏的串口对台达变频器进行modbus通讯,实现频率设定,启停控制,输出频率读取,输出电压读取 包含程序和接线方法以及参数设
- 导弹六自由度仿真模型,图1所有模块都给,对学习MATLAB simulink搭建模型很有帮助
- carsim+simulink联合仿真实现变道 包含路径规划 carsim+simulink联合仿真实现变道 包含路径规划算法+mpc轨迹跟踪算法 可选simulink版本和c++版本算法 可以适用于
- 基于内容的新闻推荐系统 红旗技术栈:Java EE、Eclipse、Mysql-5.6、Spring、SpringMVC、Mybatis、JavaScript、EasyUI、TF-IDF算法、余弦
- 西门子1500博图程序例程,纺织机械无纺布项目,硬件采用S7-1500+30台G120变频器及KTP触摸屏 运用PID,PN通讯控制G120变频器实现收卷 博图TIA V14及以上版本
- 146-西门子S7-1200冷热水恒压供水系统程序案例,程序含四个PLC站,冷热水配置,模拟量,流量计算,配方控制,比例阀控,PN通讯 等程序块 硬件:西门子S7-1200PLC -KTP1200
- 新能源汽车 电动汽车整车控制器 VCU 含canbootloader 基于飞思卡尔MC9S12XEP100整车控制器 VCU方案 1:C源文件,底层驱动+控制策略 2:程序变量表格,Execl文件
- Matlab红绿灯识别程序 APP 代码复制一下基本就可以转化为gui
- 西门子S7-1200PLC双轴定位算法电池焊接控制博图程序 案例,触摸屏画面采用威纶触摸屏 程序设计结构灵活,采用SCL语言+梯形图结构,项目包括: 1.博图V15PLC程序
- Pmsm磁链观测器,一个电周期收敛
- 带相机PLC1200 SCL梯形图混编立体库机器人码垛机伺服视觉程序 包括2台西门子PLC1215程序和2台西门子触摸屏TP700程序 PLC和基恩士相机视觉定位Modbus TCP通讯(SCL语言)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈