gusucode.com > 十大算法matlab程序说明 > 十大算法matlab程序说明/图论/哈密尔顿回路/TSP模拟退火/annealing.m
%function R=annealing(N,L,s,t,dt,C,R) %N为问题规模,即节点个数;L可取较大值,如500、1000; %s取1、2等;t为初始温度,参考范围为0.5--2; %dt为衰减因子,一般不小于0.9; %C为边权矩阵,应是一个强连通图的边权矩阵 %R为初始路径,结果路径也存放在R中 %L、s、t、dt应通过多次试验来确定,以获得优化的结果 %参考《非数值并行算法--模拟退火算法》科学出版社 function R=annealing(N,L,s,t,dt,C,R) s0=0; while 1 a=0; for k=1:L [r,df]=calculate(R,C,N); if accept(t,df) R=r;a=1; disp(cost_sum(R,C,N)); end end t=t*dt if a==0 s0=s0+1; else s0=0; end if s0==s break; end end