関数[S、R] = Metropolis(S1、S2、D、T)
%%入力
%S1:現在のソリューション
%S2:新しいソリューション
%D:距離行列(2つの都市間の距離)
%T:現在の温度
%%出力
%S:次の現在のソリューション
%R:次の現在のソリューションのルート距離
%%
R1 = PathLength(D、S1);
N =長さ(S1);%は都市の数を取得
R2 = PathLength(D、S2);%ルート長を計算
dC = R2-R1;計算能力の差異%
dC <0%の場合、能力が低下した場合に新しいルートを受け入れます
S = S2;
R = R2;
elseif exp(-dC / T)> = rand%exp(-dC / T)の確率で新しいルートを受け入れる
S = S2;
R = R2;
else%は新しいルートを受け入れません
S = S1;
R = R1;
終わり