模拟退火法和蚂蚁优化算法求解TSP问题(Matlab代码实现)

目录

1 概述

2 蚂蚁优化算法运行结果 

3 模拟退火法求解结果 

4 Matlab代码


1 概述

旅行商问题被定义为一个推销员在所有城市的旅行﹐以最低的成本回到最初的城市.TSP问题的计算规模随着城市节点的增多呈指数增大,能否以合理的成本找到理想解决方案是非常重要的.该问题由一组N个城市节点组成,任意两个城市节点之间的间距已知.推销员从一个节点开始,每个节点经过且经过一次(起始节点除外)使总移动距离最小的方式返回到起始节点.TSP问题可以用图形G=(V,E)表示,其中V={1,2,…,N}是城市节点的集合,E是边的集合.

每个边都有一个表示距离的值,该距离表示与其关联的各城市之间的距离.推销员旅行到N个
城市(或节点)时,他只去每个城市一次,并以最短的旅行距离结束.令为第j个城市与第i个城市之间
的距离.TSP问题可以化为如下模型:

2 蚂蚁优化算法运行结果 

3 模拟退火法求解结果 

n=size(C,1); %n表示问题的规模(城市个数)
D=zeros(n,n);%D表示完全图的赋权邻接矩阵
for i=1:n
    for j=1:n
        if i~=j
            D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
        else
            D(i,j)=eps;      %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示
        end
        D(j,i)=D(i,j);   %对称矩阵
    end
end
Eta=1./D;                     %Eta为启发因子,这里设为距离的倒数
Tau=ones(n,n);                %Tau为信息素矩阵
Tabu=zeros(m,n);              %存储并记录路径的生成
NC=1;                         %迭代计数器,记录迭代次数
R_best=zeros(NC_max,n);       %各代最佳路线
L_best=inf.*ones(NC_max,1);   %各代最佳路线的长度
L_ave=zeros(NC_max,1);        %各代路线的平均长度

4 Matlab代码 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值