MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
生活随笔
收集整理的這篇文章主要介紹了
MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MAT之SA:利用SA算法解決TSP(數(shù)據(jù)是14個虛擬城市的橫縱坐標(biāo))問題
?
?
目錄
輸出結(jié)果
實現(xiàn)代碼
?
?
?
?
?
輸出結(jié)果
?
實現(xiàn)代碼
%SA:利用SA算法解決TSP(數(shù)據(jù)是14個虛擬城市的橫縱坐標(biāo))問題——Jason niu X = [16.4700 96.100016.4700 94.440020.0900 92.540022.3900 93.370025.2300 97.240022.0000 96.050020.4700 97.020017.2000 96.290016.3000 97.380014.0500 98.120016.5300 97.380021.5200 95.590019.4100 97.130020.0900 92.5500];D = Distance(X); N = size(D,1); T0 = 1e10; Tend = 1e-30; L = 2; q = 0.9; Time = ceil(double(solve([num2str(T0) '*(0.9)^x = ',num2str(Tend)]))); count = 0; Obj = zeros(Time,1); track = zeros(Time,N); S1 = randperm(N); DrawPath(S1,X) title('利用自定義函數(shù)繪制TSP問題的初始路徑(隨機(jī)產(chǎn)生)—Jason niu') disp('初始種群中的一個隨機(jī)值:') OutputPath(S1); Rlength = PathLength(D,S1); disp(['總距離:',num2str(Rlength)]);while T0 > Tend count = count + 1; temp = zeros(L,N+1);S2 = NewAnswer(S1); [S1,R] = Metropolis(S1,S2,D,T0); if count == 1 || R < Obj(count-1)Obj(count) = R; elseObj(count) = Obj(count-1);endtrack(count,:) = S1;T0 = q * T0; endfigure plot(1:count,Obj) xlabel('迭代次數(shù)') ylabel('距離') title('SA:顯示SA算法對TSP問題的優(yōu)化過程(適應(yīng)度函數(shù))—Jason niu')DrawPath(track(end,:),X) title('SA:利用SA對TSP問題優(yōu)化,繪制出利用SA算法優(yōu)化后的最優(yōu)路徑圖—Jason niu') %% IX. 輸出最優(yōu)解的路線和總距離 disp('最優(yōu)解:') S = track(end,:); p = OutputPath(S); disp(['總距離:',num2str(PathLength(D,S))]);?
?
相關(guān)文章
MAT之SA:利用SA算法解決TSP(數(shù)據(jù)是14個虛擬城市的橫縱坐標(biāo))問題
?
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAT之ACA:利用ACA解决TSP优化
- 下一篇: Love:程序猿的方式~【情人节520—