trp.m

来自「该文件主要包括了matlab的一些主要应用例程!对学习matlab很有帮助」· M 代码 · 共 48 行

M
48
字号
function [f,T]=trp(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));   
end
min_f=min_f+d(pi0(n),pi0(1)); 
p_min=pi0;

while t>tf
   for k=1:L
      kk=rand;
      %if kk>=0.5
         [d_f, pi_1]=exchange_2(pi0,d); % load sub_program 2 [d_f, pi_1]=exchange_2(pi0,d)
      %else
         % load sub_program 3 [d_f, pi_1]=exchange_3(pi0,d)
      %end
      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;
end
f=min_f;
T=p_min;
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?