資源簡介
該代用于實現(xiàn)旅行商問題,實現(xiàn)最優(yōu)路徑的規(guī)劃,且總里程能達(dá)到最小,我們采用模擬退火算法實現(xiàn)
代碼片段和文件信息
%模擬退火算法之旅行商算法?
%ij.txt存放的是各點經(jīng)緯度?
clc;clear?
load?ij.txt;%加載目標(biāo)數(shù)據(jù)ij.txt存放25x8矩陣?
x=ij(:1:2:8);%x為25x4矩陣?
x=x(:);%x化為100x1矩陣?
y=ij(:2:2:8);%y為25x4矩陣?
y=y(:);%y化為100x1矩陣?
sj=[x?y];%100x2矩陣?
d1=[7040];%起始點?
sj=[d1;sj;d1];%首尾添加上出發(fā)點和終點?
sj=sj*pi/180;%角度化為弧度?
%計算距離?
d=zeros(102);%先建一個102x102的空的距離矩陣,再把對應(yīng)距離填進(jìn)去?
%A(R?cos?x1?cos?y1??R?sin?x1?cos?y1??R?sin?y1?)?
%B(R?cos?x2?cos?y2??R?sin?x2?cos?y2??R?sin?y2?)?
%其中?R?=?6370?為地球半徑。?
%A?B?兩點的實際距離:?
%d?=?R?arccos[cos(x1???x2?)?cos?y1?cos?y2?+?sin?y1?sin?y2?]?
for?i=1:102?
????for?j=i+1:102?
????????d(ij)=6370*acos(cos(sj(i1)-sj(j1))*cos(sj(i2))*cos(sj(j2))...?
????????????+sin(sj(i2))*sin(sj(j2)));?
????end?
end?
%上述的d為上三角矩陣,根據(jù)對稱性,化為對稱矩陣d矩陣包含各點間的距離信息?
d=d+d‘;?
di
評論
共有 條評論