




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、蟻群算法最短路徑通用Matlab程序下面的程序是蟻群算法在最短路中的應(yīng)用,稍加擴(kuò)展即可應(yīng)用于機(jī)器人路徑規(guī)劃function ROUTES,PL,Tau=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)% -% ACASP.m% 蟻群算法動(dòng)態(tài)尋路算法% ChengAihua,PLA Information Engineering University,ZhengZhou,China% Email:aihuacheng% All rights reserved% -% 輸入?yún)?shù)列表% G
2、160; 地形圖為01矩陣,如果為1表示障礙物% Tau 初始信息素矩陣(認(rèn)為前面的覓食活動(dòng)中有殘留的信息素)% K 迭代次數(shù)(指螞蟻出動(dòng)多少波)% M 螞蟻個(gè)數(shù)(每一波螞蟻有多少個(gè))% S &
3、#160; 起始點(diǎn)(最短路徑的起始點(diǎn))% E 終止點(diǎn)(最短路徑的目的點(diǎn))% Alpha 表征信息素重要程度的參數(shù)% Beta 表征啟發(fā)式因子重要程度的參數(shù)% Rho 信息素蒸發(fā)系數(shù)% Q 信息素增加強(qiáng)度系數(shù)%
4、0; 輸出參數(shù)列表% ROUTES 每一代的每一只螞蟻的爬行路線% PL 每一代的每一只螞蟻的爬行路線長(zhǎng)度% Tau 輸出動(dòng)態(tài)修正過(guò)的信息素% -變量初始化-%loadD=G2D(G);N=size(D,1);%N表示問(wèn)題的規(guī)模(象素個(gè)數(shù))MM=size(G,1);a=1;%小方格象素的邊長(zhǎng)Ex=a*(mod(E,MM)-0.5);%終止點(diǎn)橫坐標(biāo)if Ex=-0.5 E
5、x=MM-0.5;endEy=a*(MM+0.5-ceil(E/MM);%終止點(diǎn)縱坐標(biāo)Eta=zeros(1,N);%啟發(fā)式信息,取為至目標(biāo)點(diǎn)的直線距離的倒數(shù)%下面構(gòu)造啟發(fā)式信息矩陣for i=1:N if ix=-0.5 ix=MM-0.5; end iy=a*(MM+0.5-ceil(i/MM); if i=E
6、; Eta(1,i)=1/(ix-Ex)2+(iy-Ey)2)0.5; else Eta(1,i)=100; endendROUTES=cell(K,M);%用細(xì)胞結(jié)構(gòu)存儲(chǔ)每一代的每一只螞蟻的爬行路線PL=zeros(K,M);%用矩陣存儲(chǔ)每一代的每一只螞蟻的爬行路線長(zhǎng)度% -啟動(dòng)K輪螞蟻覓食活動(dòng),每輪派出M只螞蟻-for k=1:K
7、 disp(k); for m=1:M% 第一步:狀態(tài)初始化 W=S;%當(dāng)前節(jié)點(diǎn)初始化為起始點(diǎn) Path=S;%爬行路線初始化 PLkm=0;%爬行路線長(zhǎng)度初始化 TABUkm=o
8、nes(1,N);%禁忌表初始化 TABUkm(S)=0;%已經(jīng)在初始點(diǎn)了,因此要排除 DD=D;%鄰接矩陣初始化% 第二步:下一步可以前往的節(jié)點(diǎn) DW=DD(W,:); DW1=find(DW
9、; for j=1:length(DW1) if TABUkm(DW1(j)=0 DW(j)=inf;
10、60; end end LJD=find(DW Len_LJD=length(LJD);%可選節(jié)點(diǎn)的個(gè)數(shù)% 覓食停止條件:螞蟻未遇到食物或者陷入死胡同 while W=E&&Len_LJD>=1
11、% 第三步:轉(zhuǎn)輪賭法選擇下一步怎么走 PP=zeros(1,Len_LJD); for i=1:Len_LJD
12、; PP(i)=(Tau(W,LJD(i)Alpha)*(Eta(LJD(i)Beta); end PP=PP/(sum(PP);%建立概率分布 Pcum=
13、cumsum(PP); Select=find(Pcum>=rand);% 第四步:狀態(tài)更新和記錄 Path=Path,to_visit;%路徑增加 &
14、#160; PLkm=PLkm+DD(W,to_visit);%路徑長(zhǎng)度增加 W=to_visit;%螞蟻移到下一個(gè)節(jié)點(diǎn) for kk=1:N &
15、#160; if TABUkm(kk)=0 DD(W,kk)=inf; DD(kk,W)=inf;
16、; end end TABUkm(W)=0;%已訪問(wèn)過(guò)的節(jié)點(diǎn)從禁忌表中刪除
17、; for j=1:length(DW1) if TABUkm(DW1(j)=0 DW(j)=inf;
18、60; end end LJD=find(DW Len_LJD=length(LJD);%可選節(jié)點(diǎn)的個(gè)數(shù)
19、160; end% 第五步:記下每一代每一只螞蟻的覓食路線和路線長(zhǎng)度 ROUTESk,m=Path; if Path(end)=E PL(k,m)=PLkm;
20、; else PL(k,m)=inf; end end% 第六步:更新信息素 Delta_Tau=zeros(N,N);%更新量初始化 for m=1:M &
21、#160; if PL(k,m) ROUT=ROUTESk,m; TS=length(ROUT)-1;%跳數(shù) PL_km=PL(k,m);
22、60; for s=1:TS x=ROUT(s); Delta_Tau(x,y)=Delta_Tau(x,y)+Q/PL_km;
23、160; Delta_Tau(y,x)=Delta_Tau(y,x)+Q/PL_km; end end end Tau=(1-Rho).*Tau+Delta_Tau;%信息素?fù)]發(fā)一
24、部分,新增加一部分end% -繪圖-plotif=1;%是否繪圖的控制參數(shù)if plotif=1 %繪收斂曲線 meanPL=zeros(1,K); minPL=zeros(1,K); for i=1:K PLK=PL(i,:); Nonzero=find(PLK
25、 PLKPLK=PLK(Nonzero); meanPL(i)=mean(PLKPLK); minPL(i)=min(PLKPLK); end figure(1) plot(minPL); hold on
26、 plot(meanPL); grid on title('收斂曲線(平均路徑長(zhǎng)度和最小路徑長(zhǎng)度)'); xlabel('迭代次數(shù)'); ylabel('路徑長(zhǎng)度'); %繪爬行圖 figure(2) axis(0,MM,0,MM) for i=1:M
27、M for j=1:MM if G(i,j)=1 x1=j-1;y1=MM-i;
28、160; x2=j;y2=MM-i; x3=j;y3=MM-i+1; x4=j-1;y4=MM-i+1;
29、160; fill(x1,x2,x3,x4,y1,y2,y3,y4,0.2,0.2,0.2); hold on else
30、 x1=j-1;y1=MM-i; x2=j;y2=MM-i; x3=j;y3=MM-i+1;
31、160; x4=j-1;y4=MM-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,1,1,1);
32、hold on end end end hold on ROUT=ROUTESK,M; LENROUT=length(ROUT); Rx=ROUT; Ry=ROUT;&
33、#160; for ii=1:LENROUT Rx(ii)=a*(mod(ROUT(ii),MM)-0.5); if Rx(ii)=-0.5 Rx(ii)=MM-0.5; end &
34、#160; Ry(ii)=a*(MM+0.5-ceil(ROUT(ii)/MM); end plot(Rx,Ry)endplotif2=1;%繪各代螞蟻爬行圖if plotif2=1 figure(3) axis(0,MM,0,MM) for i=1:MM for j=1:M
35、M if G(i,j)=1 x1=j-1;y1=MM-i; x2=j;y2=MM-i;
36、; x3=j;y3=MM-i+1; x4=j-1;y4=MM-i+1; fill(x
37、1,x2,x3,x4,y1,y2,y3,y4,0.2,0.2,0.2); hold on else x1=j
38、-1;y1=MM-i; x2=j;y2=MM-i; x3=j;y3=MM-i+1; x4=j-1;y4=MM-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,1,1,1); hold on &
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拱墅區(qū)小學(xué)數(shù)學(xué)試卷
- 高一期末深圳數(shù)學(xué)試卷
- 房山區(qū)高三數(shù)學(xué)試卷
- 高一金太陽(yáng)數(shù)學(xué)試卷
- 福建英語(yǔ)數(shù)學(xué)試卷
- 2025年03月山東威海市中心醫(yī)院山東省博士后創(chuàng)新實(shí)踐基地招聘20人筆試歷年專業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 財(cái)務(wù)評(píng)價(jià)培訓(xùn)課件模板
- 2025至2030達(dá)瓦納油行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 阜新實(shí)驗(yàn)月考數(shù)學(xué)試卷
- 東莞市初三題目數(shù)學(xué)試卷
- 通信線路工程施工組織設(shè)計(jì)方案【實(shí)用文檔】doc
- 護(hù)士注冊(cè)健康體檢表下載【可直接打印版本】
- 預(yù)計(jì)財(cái)務(wù)報(bào)表編制及分析課件
- 骨科出科試題帶答案
- 河道基槽土方開(kāi)挖專項(xiàng)施工方案
- Q∕SY 1347-2010 石油化工蒸汽透平式壓縮機(jī)組節(jié)能監(jiān)測(cè)方法
- 現(xiàn)代美國(guó)玉米商業(yè)育種的種質(zhì)基礎(chǔ)概要
- GB∕T 4162-2022 鍛軋鋼棒超聲檢測(cè)方法
- 中醫(yī)治療室工作制度管理辦法
- 提花裝造工藝技術(shù)培訓(xùn)課程
- 研究實(shí)驗(yàn)報(bào)告水火箭.doc
評(píng)論
0/150
提交評(píng)論