xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

旅行者問題的優化實現,三種算法通過一個圖形化界面,可以進行動態演示比較。隨機生成節點然后規劃路徑,注釋充分!

資源截圖

代碼片段和文件信息

function[R_bestL_bestL_aveShortest_RouteShortest_Length]=ASTSP(CNC_maxmAlphaBetap0Q)
%C?n個城市的坐標,n*2矩陣(xy)
%NC_max最大迭代次數
%m?螞蟻個數
%Alpha?表征信息素重要程度的參數
%Beta?表征啟發式因子重要程度的參數
%p0?信息素蒸發系數
%Q?信息素增加強度系數
%R_best?各代最佳路線
%L_best?各代最佳路線的長度


%初始化1
n=size(C1);%size(C1)返回C的行數,也就是城市個數,n表示城市個數
D=zeros(nn);%D表示圖的鄰接矩陣,各點的值為每個點到每個點的權值
%?把坐標轉換為鄰接矩陣
for?i=1:n
????for?j=1:n
????????if?i~=j
????????????D(ij)=((C(i1)-C(j1))^2+(C(i2)-C(j2))^2)^0.5;%簡單地求兩點之間的距離
????????else
????????????D(ij)=eps;%應該賦值為0,但因為后面啟發因子需要取倒數,所以用eps表示,eps為當發現某個值小于eps時,就把這個數當做0來處理
????????end
????????D(ji)=D(ij);%對稱矩陣
????end
end

%初始化2
%D直接傳入鄰接矩陣
%?n=size(D1);

QF=1./D;%Eta為啟發因子矩陣,這里設為距離的倒數
XXS=ones(nn);%XXS為信息素矩陣
JJtable=zeros(mn);%存儲并記錄路徑的生成,禁忌表,m為螞蟻個數
NC=1;%迭代計數器,記錄迭代次數
R_best=zeros(NC_maxn);%迭代之后的每一代最佳路線
L_best=inf.*ones(NC_max1);%各代最佳路線長度,初始化為無窮大
L_ave=zeros(NC_max1);%各代路線的平均長度

while?NC<=NC_max?%迭代次數到最大停止
????%將m只螞蟻放到n個城市上
????Randpos=[];%隨機位置
????for?i=1:(ceil(m/n))%ceil向正方向取整,求得最多安排幾次
????????Randpos=[Randposrandperm(n)];%randperm把1到n這些數隨機打亂得到的一個數字序列,然后不斷添加到Randpos中去
????end
????JJtable(:1)=(Randpos(11:m))‘;%Tabu(:1)表示Tabu第一行就是初始m只螞蟻被隨機分到所n城市中的一個
????
????%m只螞蟻按概率函數選擇下一座城市,完成各自的周游
????for?j=2:n%從所在城市的下一個城市開始
????????for?i=1:m
????????????visited=JJtable(i1:(j-1));%記錄已訪問的城市,可避免重復訪問
????????????ToVisitCity=zeros(1(n-j+1));%待訪問的城市待訪問城市的數量為(n-j+1)
????????????P=ToVisitCity;%待訪問的城市的選擇概率分布
????????????count=1;%訪問的城市個數
????????????for?k=1:n
????????????????if?length(find(visited==k))==0%開始設置為0find()語句找到visited中等于k的元素在數組visited中的位置,length如果為零就是visited中沒有k元素,即沒有訪問過k城市。
????????????????????ToVisitCity(count)=k;
????????????????????count=count+1;
????????????????end
????????????end
????????????
????????????%下面進行城市的概率分布
????????????for?k=1:length(ToVisitCity)
????????????????%visited(end)表示螞蟻現在所在城市編號,ToVisitCity(k)表示下一個要訪問的城市編號
????????????????P(k)=(XXS(visited(end)ToVisitCity(k))^Alpha)*(QF(visited(end)ToVisitCity(k))^Beta);
????????????end
????????????P=P/(sum(P));%把各個路徑概率統一到和為1
????????????
????????????%按概率原則選取下一個城市
????????????
????????????%螞蟻要選擇的下一個城市不是按最大概率,就是要用到輪盤法則,不然影響全局收縮能力,所以用到累積函數,Pcum=cumsum(P)
????????????Pcum=cumsum(P);%cumsum,元素累加即求和,比如P=[0.1?0.5?0.4],cumsum(P)=??[0.1000????0.6000????1.0000]
????????????Select=find(Pcum>=rand);%若計算的概率大于原來的就選擇這條路線
????????????%要選擇其中總概率大于等于某一個隨機數,找到大于等于這個隨機數的城市的在J中的位置
????????????
????????????%輪盤法則,Select(1),1保證可以選到最大概率的城市,比如:p=[0.1?0.6?0.3]中間那個城市概率最大此時Pcum=[0.1??0.7??1]???Select?=[2???3];??Select(1)=2中間那個城市概率最大
????????????to_visit=ToVisitCity(Select(1));%提取這些城市的編號到to_visit中
????????????JJtable(ij)=to_visit;
????????end
????end
????if?NC>=2
????????JJtable(1:)=R_best(NC-1:);
????end
????
????%記錄本次迭代最佳路線
????L=zeros(m1);%記錄本次迭代最佳路線的長度,每個螞蟻都有自己走過的長度記錄在向量L中開始距離為0,m*1的列向量
????for?i=1:m
????????R=JJtable(i:);
????????for?j=1:(n-1)
????????????L(i)=L(i)+D(R(j)R(j+1));%原距離加上第j個城市到第j+1個城市的距離
????????end
????????L(i)=L(i)+D(R

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????9215??2018-05-23?10:24??GUI.m

?????文件???????3531??2018-05-23?11:05??SATSP.m

?????文件???????5965??2018-05-23?10:53??ASTSP.m

?????文件???????6631??2018-05-23?16:08??GATSP.m

?????文件??????26687??2018-05-18?15:06??GUI.fig

-----------?---------??----------?-----??----

????????????????52029????????????????????5


評論

共有 條評論