蟻群算法附帶數(shù)據(jù)結(jié)果_第1頁
蟻群算法附帶數(shù)據(jù)結(jié)果_第2頁
蟻群算法附帶數(shù)據(jù)結(jié)果_第3頁
蟻群算法附帶數(shù)據(jù)結(jié)果_第4頁
蟻群算法附帶數(shù)據(jù)結(jié)果_第5頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——蟻群算法附帶數(shù)據(jù)結(jié)果%{

[代碼說明]

蟻群算法解決VRP問題

[算法說明]

首先實現(xiàn)一個ant螞蟻類,用此螞蟻類實現(xiàn)探尋。

算法依照tsp問題去解決,但是在最終計算路徑的時候有區(qū)別。

譬如有10個城市,城市1是配送站,螞蟻探尋的得到的路徑是1,3,5,9,4,10,2,6,8,7。

計算路徑的時候把城市依次放入派送線路中,

每放入一個城市前,檢查該城市放入后是否會超過車輛最大載重假使沒有超過就放入

假使超過,就重新開始一條派送路線……

直到最終一個城市放完就會得到多條派送路線

這樣處理比較簡單可以把vrp問題轉(zhuǎn)為tsp問題求解但是實際效果還需要驗證。

[]

Wugsh@2023.12.16

wuguangsheng@guangsheng.wu@163.com%}

%清除所有變量和類的定義clear;

clearclasses;

%蟻群算法參數(shù)(全局變量)globalALPHA;%啟發(fā)因子globalBETA;%期望因子

globalANT_COUNT;%螞蟻數(shù)量globalCITY_COUNT;%城市數(shù)量globalRHO;%信息素殘留系數(shù)!!!globalIT_COUNT;%迭代次數(shù)globalDAry;%兩兩城市間距離globalTAry;%兩兩城市間信息素globalCITYWAry;%城市貨物需求量globalVW;%車輛最大載重

%===================================================================

%設置參數(shù)變量值ALPHA=1.0;BETA=2.0;RHO=0.95;

IT_COUNT=200;

VW=100;

%===================================================================%讀取數(shù)據(jù)并根據(jù)讀取的數(shù)據(jù)設置其他參數(shù)loaddata.txt;%從文本文件加載數(shù)據(jù)

city_xy_ary=data(:,2:3);%得到城市的坐標數(shù)據(jù)

CITYWAry=data(:,4);%得到每個城市的貨物需求量

CITY_COUNT=length(CITYWAry);%得到城市數(shù)量(包括配送站在內(nèi))

ANT_COUNT=round(CITY_COUNT*2/3)+1;%根據(jù)城市數(shù)量設置螞蟻數(shù)量,一般設置為城市數(shù)量的2/3

%MMAS信息素參數(shù)

%計算最大信息素和最小信息素之間的比值PBest=0.05;%螞蟻一次探尋覓到最優(yōu)解的概率temp=PBest^(1/CITY_COUNT);

TRate=(1-temp)/((CITY_COUNT/2-1)*temp);%最大信息素和最小信息素之間的比值

%信息素的最大最小值開始的時候設置成多大無所謂

%第一次探尋完成會生成一個最優(yōu)解,然后用這個解會重新產(chǎn)生最大最小值Tmax=1;%信息素最大值

Tmin=Tmax*TRate;%信息素最小值

%計算兩兩城市間距離DAry=zeros(CITY_COUNT);fori=1:CITY_COUNT

forj=1:CITY_COUNT

DAry(i,j)=sqrt((city_xy_ary(i,1)-city_xy_ary(j,1))^2+(city_xy_ary(i,2)-city_xy_ary(j,2))^2);endend

%初始化城市間信息素TAry=zeros(CITY_COUNT);TAry=TAry+Tmax;

%===================================================================

%初始化隨機種子

rand('state',sum(100*clock));

%另一種方法

%rand('twister',sum(100*clock))

%定義螞蟻mayi=ant();

Best_Path_Length=10e9;%最正確路徑長度,先設置成一個很大的值

tm1=datenum(clock);%記錄算法開始執(zhí)行時的時間

FoundBetter=0;%一次探尋是否有更優(yōu)解產(chǎn)生

%開始探尋

fori=1:IT_COUNT

fprintf('開始第%d次探尋,剩余%d次',i,IT_COUNT-i);

FoundBetter=0;%探尋前先置為沒有更優(yōu)解產(chǎn)生

forj=1:ANT_COUNT

%螞蟻探尋一次mayi=Search(mayi);

%得到螞蟻探尋路徑長度

Length_Ary(j)=get(mayi,'path_length');

%得到螞蟻探尋的路徑

Path_Ary{j}=get(mayi,'path');

%保存最優(yōu)解

if(Length_Ary(j)Tmax)TAry(m,n)=Tmax;

end

if(TAry(m,n)VW)%運輸?shù)呢浳锍^限制

fprintf('(滿載率:%.1f%%)\\n[1]-%d',dbW*100/VW,n);dbW=CITYWAry(n);%運輸?shù)闹亓康扔谠摮鞘械男枨罅縠lse%沒有超過限制fprintf('-%d',n);

dbW=dbW+CITYWAry(n);%運輸?shù)闹亓考由显摮鞘械男枨罅縠ndend

fprintf('(滿載率:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論