📄 tsp_sa_t.m
字号:
%*************************************************************************%
% TSP_SA_T %
% 该子函数实现在同一温度下,循环迭代 %
% TrialNum次,最后返回迭代的解和目标 %
% 函数值 %
%*************************************************************************%
function[Path,minPath,Energy,minE]=TSP_SA_T(Path,minPath,Energy,minE,T,Distance,TrialNum);
CityNum=length(Path);
for K=1:TrialNum
% 产生新路径(新解)
NewPath=Path;
Index=ceil(rand(2,1)*CityNum); % 利用均匀分布随机产生两个城市
temp=NewPath(Index');
NewPath(Index(1,1))=temp(1,2); % 交换随机产生的两个城市
NewPath(Index(2,1))=temp(1,1);
NewEnergy=TSP_SA_F(NewPath,Distance); % 计算新路径的函数值
if rand<1/(1+exp((NewEnergy-Energy)/T))||NewEnergy<Energy % 接受准则
Energy=NewEnergy;
Path=NewPath; % 若条件成立,接受新解
if minE>Energy
minE=Energy; % 更新最小值
minPath=NewPath; % 更新最小路径
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -