tsp matlab,五个城市的TSP问题MATLAB程序.doc

五个城市的TSP问题,距离矩阵为:

01015621008139158020156132005291550设初始温度为10,结束温度为0.7,则程序如下:

d=[0, 10, 15, 6, 2;10, 0, 8, 13, 9;15, 8, 0, 20, 15;6, 13, 20, 0, 5;2, 9, 15, 5, 0];

t0=10; tf=0.7;

[f,T]=trp(d,t0,tf)

得结果如下:

f=43

T=1 4 5 2 3

MATLAB 的程序如下:

function [f,T]=trp(d,t0,tf)% f为目标函数最优值,T为最优路线,d为距离矩阵,t0为初始温度,tf为结束温度[m,n]=size(d);L=100*n;t=t0;pi0=1:n;min_f=0;for k=1:(n-1) min_f=min_f+d(pi0(k),pi0(k+1));endmin_f=min_f+d(pi0(n),pi0(1));p_min=pi0;while t>tf for k=1:L kk=rand; [d_f,pi_1]=exchange_2(pi0,d); r_r=rand; if d_f<0 pi0=pi_1; elseif exp(d_f/t)>r_r pi0=pi_1; else pi0=pi0; end end f_temp=0; for k=1:n-1 f_temp=f_temp+d(pi0(k),pi0(k+1)); end f_temp=f_temp+d(pi0(n),pi0(1)); if min_f>f_temp min_f=f_temp; p_min=pi0; end t=0.87*t;endf=min_f;T=p_min;

%下面的函数产生新解function [d_f,pi_r]=exchange_2(pi0,d)[m,n]=size(d);clear m;u=rand;u=u*(n-2);u=round(u);if u<2 u=2;endif u>n-2 u=n-2;endv=rand;v=v*(n-u+1);v=round(v);if v<1 v=1;endv=u+v;if v>n v=n;endpi_1(u)=pi0(v);pi_1(v)=pi0(u);if u>1 for k=1:u-1 pi_1(k)=pi0(k); endendif v>u+1 for k=1:(v-u-1) pi_1(u+k)=pi0(v-k); endendif v

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值