MATLAB经典案例分析之TSP问题总结

该博客详细介绍了使用MATLAB解决旅行商问题(TSP)的三种方法:粒子群优化算法、Hopfield神经网络和遗传算法,并提供了完整的MATLAB代码实现。通过迭代和优化,找到最短路径解决方案。
摘要由CSDN通过智能技术生成

TSP 问题是常见的优化问题,可以有多种求解的方法。
现将三种经典的求解方法总结并展示出来供大家一起研究。

1,粒子群算法
function PSOforTSP
%初始化
Alpha=0.25; %个体经验保留概率
Beta=0.25; %全局经验保留概率
NC_max=200; %最大迭代次数
m=80; %微粒数
CityNum=10; %问题的规模(城市个数)
[dislist,Clist]=tsp(CityNum);

NC=1;%迭代计数器
R_best=zeros(NC_max,CityNum); %各代最佳路线
L_best=inf.*ones(NC_max,1);%各代最佳路线的长度
L_ave=zeros(NC_max,1);%各代路线的平均长度

%产生微粒的初始位置
for i=1:m
x(i,:)=randperm(CityNum);
L(i)=CalDist(dislist,x(i,:));
end
p=x; %p为个体最好解
pL=L;
[L_best(1,1) n_best]=min(L);
R_best(1,:)=x(n_best,:);
L_ave(1,1)=mean(L);

%初始交换序
v=ones(CityNum-1,2,m)(round(rand(CityNum-1))+1);

figure(1);
while NC<=NC_max %停止条件之一:达到最大迭代次数
for i=1:m
xnew(i,:)=changeFun(x(i,:),v(:,:,i));
A=changeNum(x(i,:),p(i,:));
Arand=randFun(A,Alpha);
xnew(i,:)=changeFun(xnew(i,:),Arand);
B=changeNum(x(i,:),R_best(NC,:));
Brand=randFun(B,Beta);
xnew(i,:)=changeFun(xnew(i,:),Brand);
v(:,:,i)=changeNum(x(i,:),xnew(i,:));
L(i)=CalDist(dislist,xnew(i,:));
if L(i)<pL(i)
p(i,:)=xnew(i,:);
pL(i)=L(i);
end
end
[L_bestnew n_best]=min(L);
R_bestnew=xnew(n_best,:);
L_ave(NC+1,1)=mean(L);
if L_bestnew<L_best(NC,1)
L_best(NC+1,1)=L_bestnew;
R_best(NC+1,:)=R_bestnew;
else
L_best(NC+1,1)=L_best(NC,1);
R_best(NC+1,:)=R_best(NC,:);
end
x=xnew;
drawTSP10(Clist,R_best(NC,:),L_best(NC,1),NC,0);
%pause;
NC=NC+1;
end

%输

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值