off the grid翻譯 off 規(guī)則集什么意思?
off 規(guī)則集什么意思?直接關(guān)閉backgrid規(guī)則。這規(guī)則是就是為了好看點,沒甚用處。matlab guide 怎么去除坐標軸?在發(fā)出命令窗口中輸入gridoff命令,也可以在圖片的菜單中,再點Ed
off 規(guī)則集什么意思?
直接關(guān)閉backgrid規(guī)則。這規(guī)則是就是為了好看點,沒甚用處。
matlab guide 怎么去除坐標軸?
在發(fā)出命令窗口中輸入gridoff命令,也可以在圖片的菜單中,再點Edit,選擇figureproperties...,鼠標鼠標右鍵點擊菜單欄下面的小箭頭,再點擊圖的坐標,是可以直接出現(xiàn)坐標選項,在grid后面,也可以參照要求選擇哪一維的網(wǎng)格,在內(nèi)圖框。
遍歷法和蟻群算法編程MATLAB誰更簡單?
蟻群算法是模擬蟻群外出覓食行為的一種優(yōu)化算法。在整個外出覓食過程中螞蟻到處傳播信息素,螞蟻按照感應(yīng)能力到的信息素多少,來確定所要中,選擇的下一個柵格。
在初始階段,的原因地面上沒有信息素,因此蟻群的行走路徑是洗技能的,螞蟻在慢慢行走的過程中會不斷地釋放出信息素,標注自己穿行的路徑。緊接著時間的推移,有若干只螞蟻找不到了食物,此時便未知若干條從洞穴到食物的路徑。的原因螞蟻的行為軌跡是必掉分布的位置的,因此在單位時間內(nèi),短路徑上的螞蟻數(shù)量比長路徑上的螞蟻密度要大,短路徑留下的信息素濃度也越高。這為后面的螞蟻們提供給了使力的方向指引,越來越多的螞蟻集中到最晚的路徑上去。這對單個螞蟻來說,它并沒有要尋找風最短路徑,僅僅據(jù)概率中,選擇;相對于整個蟻群系統(tǒng)來說,它們卻達到了尋找到最優(yōu)路徑的客觀上的效果。
假設(shè)蟻群中螞蟻的總數(shù)為M,各螞蟻在柵格環(huán)境下天翼,但是依據(jù)狀態(tài)轉(zhuǎn)移到規(guī)則選擇下一個線框,假設(shè)在此時此刻t時,螞蟻k坐落刪格i,那你螞蟻k選擇類型下兩個刪格j的概率為:
(1)式中:V來表示螞蟻K可以不中,選擇下一個柵格的集合;Alpha為信息素濃度啟發(fā)因子,Alpha越大,表明螞蟻K越趨于于選擇類型多數(shù)螞蟻向前走的路徑;Beta意思是只希望啟發(fā)因子,反映了能見度信息對螞蟻你選擇下一步位置所起作用的大小,Beta值越大,并且螞蟻K越方向變化于中,選擇相隔目標點近的柵格,越傾向于往能見度程。來表示t時刻路徑(i,j)上的信息素濃度;意思是t時刻路徑(i,j)上的啟發(fā)信息,其定義法為:
蟻群算法的核心部分只是相對而言模擬真實了蟻群的轉(zhuǎn)移概率你選擇行為,通過可以使用信息素和啟發(fā)式函數(shù)值接受全部轉(zhuǎn)移概率算出。其中螞蟻狀態(tài)需要轉(zhuǎn)移過程中以節(jié)點到目標點之間的距離的倒數(shù)作為啟發(fā)信息,則影響障礙物的作好規(guī)避。因此在復雜的路徑規(guī)劃環(huán)境下,蟻群算法在一個龐大的空間中去搜索,在優(yōu)化系統(tǒng)初期路徑上的信息素濃度較小,正向反饋信息不很明顯尤其是必掉解才能產(chǎn)生的過程中的“盲目的相信搜索”再產(chǎn)生大量的局部交叉路徑,會降低蟻群算法的運行效率,且很容易陷入瘋狂局部最優(yōu),搜索通過到是有程度后,太容易又出現(xiàn)遲緩現(xiàn)象,所有個體發(fā)現(xiàn)到的解徹底一致,不能不能接受盡快搜索,則影響突然發(fā)現(xiàn)更合適的解。
matlab仿真
繪制方格圖舉例:
G[0000000000
0000000000
0001000000
0011000100
0001001000
0000000000
0100110000
0101000000
0000100000
0000000000
]
MMsize(G,1)
figure(3)
axis([0,MM,0,MM])
ofi1:MM
forj1:MM
ifG(i,j)1
x1j-1y1MM-i
x2jy2MM-i
x3jy3MM-i1
x4j-1y4MM-i1
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.3,0.3,0.3])
hold on
ignore
x1j-1y1MM-i
x2jy2MM-i
x3jy3MM-i1
x4j-1y4MM-i1
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])
hold on
end
end
end
完整代碼和注釋::
DG2D(G)%把柵格地圖轉(zhuǎn)為鄰接矩陣
Nsize(D,1)%N來表示問題的規(guī)模(象素個數(shù))直接返回矩陣D行數(shù)
MMsize(G,1)%返回G的行數(shù)
a1%小方格象素的邊長
Exa*(mod(E,MM)-0.5)%暫時終止點橫坐標a乘以變量E對MM(行)取余(能得到列)后減0.5即所處列
ifEx-0.5
ExMM-0.5
end
Eya*(MM0.5-ceil(E/MM))%E/MM結(jié)果取整終止點縱坐標
Etazeros(1,N)%啟發(fā)式信息,取為至目標點的直線距離的倒數(shù)初始信息素矩陣
%下面構(gòu)造啟發(fā)式信息矩陣
fori1:N
ixa*(mod(i,MM)-0.5)%a乘以變量i對MM取余后減0.5列
ifix-0.5
ixMM-0.5
end
iya*(MM0.5-ceil(i/MM))il將結(jié)果朝正無窮方向取整
ifi~E%i是否等于零E
Eta(1,i)((ix-Ex)^2(iy-Ey)^2)^(0.5)%與終點的直線距離的倒數(shù),得到啟發(fā)信息
exists
Eta(1,i)0.01
end
end
ROUTEScell(K,M)%用細胞結(jié)構(gòu)存儲文件每一代的每一只螞蟻的爬動路線螞蟻個數(shù)*迭代次數(shù)矩陣,每個元素是一個結(jié)構(gòu)
PLzeros(K,M)%用矩陣存儲每一代的每一只螞蟻的爬行路線長度
%%-----------起動K輪螞蟻覓食活動,每輪派出M只螞蟻--------------------
tic
fork1:K
%disp(k)
anym1:M
%%不過在此之前:狀態(tài)初始化
WS%當前節(jié)點初始化設(shè)置為起始點
PathS%匍匐爬行路線初始化
PLkm0%匍匐爬行路線長度初始化設(shè)置
TABUkmones(1,N)%生成禁忌列表,所有節(jié)點均未前行,所以才都置為1
TABUkm(S)0%早就在初始點了,但要先排除
DDD%鄰接矩陣重新初始化
%%第二步:下一步怎么辦也可以前往的節(jié)點DWDD(W,:)%把矩陣DD的第W行所有列變量定義給DW
%DW1find(DWltinf)
%forj1:length(DW1)
%ifTABUkm(DW1(j))0
%end
%endLJDfind(DWltinf)%可選節(jié)點集即回這個可以走的節(jié)點坐標lt矩陣編號gt
Len_LJDlength(LJD)%數(shù)器可選節(jié)點的個數(shù)
%%尋找食物停止條件:螞蟻未碰到食物或者陷入瘋狂死胡同
whileW~EampampLen_LJDgt1
%%第二步:轉(zhuǎn)輪賭法選擇下一步怎末走
PPzeros(1,Len_LJD)%遍歷數(shù)組可選節(jié)點
fori1:Len_LJD
%PP(i)(Tau(W,LJD(i))^Alpha)*((1/(DD(W,LJD(i))Eta(1,LJD(i))))^Beta)
PP(i)(Tau(W,LJD(i))^Alpha)*((1/Eta(1,LJD(i)))^Beta)%w行i個節(jié)點
end
PPPP/(len(PP))%建立概率廣泛分布把各個路徑的概率統(tǒng)一到和為1;
Pcumcumsum(PP)%PP累計值
Selectfind(Pcumgtrand)%產(chǎn)生輸入0~1之間的隨機數(shù),輪盤賭算法,最好不要以免被卷入局部最優(yōu)解
to_visitLJD(Select(1))%接下來也將一同前往的節(jié)點
%%第四步:狀態(tài)更新和資料記錄
Path[Path,to_visit]%路線節(jié)點增強
PLkmPLkmDD(W,want_visit)%路徑長度提升,留下記錄大賽期間迭代適宜路線長度,每只螞蟻也有自己走出的長度留下記錄在向量中。
Wto_visit%螞蟻移到下一個節(jié)點
%N:所有點
for kk1:Nif TABUkm(kk)0%禁忌列表
DD(W,vv)inf%在此次循環(huán)中設(shè)置中為不可達
DD(kk,W)inf
end
endTABUkm(W)0%已不能訪問過的節(jié)點從禁忌表中刪掉
DWDD(W,:)
LJDfind(DWltinf)%可選節(jié)點集
Len_LJDlength(LJD)%可選節(jié)點的個數(shù)
end
%%第五步:記好每一代每一只螞蟻的覓食路線和路線長度
ROUTES{k,m}Path%第k次迭代第m只螞蟻的路線
ifPath(end)E
PL(k,m)PLkm%可到達目標點的路線長度
else
PL(k,m)inf%剛剛進入死胡同
end
end
%%第六步:更新信息素
Delta_Tauzeros(N,N)%更新量系統(tǒng)初始化
whilem1:M%M只螞蟻
ifPL(k,m)ltinf%成功可以到達目標點的螞蟻路線長度
ROUTROUTES{k,m}%具體詳細路線
TSlength(ROUT)-1%跳數(shù)螞蟻轉(zhuǎn)移次數(shù)
PL_kmPL(k,m)%路線長度
fors1:TS
xROUT(s)%上一個節(jié)點
yROUT(s1)%下一個節(jié)點
Delta_Tau(x,y)Delta_Tau(x,y)Q/PL_km%(x,y)即兩個節(jié)點之間的關(guān)系(信息素量)系數(shù)乘以路線長度
Delta_Tau(y,x)Delta_Tau(y,x)Q/PL_km
end
end
endTau(1-Rho).*TauDelta_Tau%信息素揮發(fā)一部分,新增加一部分
end
toc
%%---------------------------繪圖--------------------------------
plotif1%是否是繪圖的控制參數(shù)
ifplotif1
%繪收斂曲線
meanPLzeros(1,K)%k:迭代次數(shù)
minPLzeros(1,K)
fori1:K
PLKPL(i,:)%將第i次迭代向前爬行路線長度變量定義給PLK
Nonzerofind(PLKltinf)%返回一系列看似可行路線的編號
iflength(Nonzero)~0
PLKPLKPLK(Nonzero)%留下所需路線,重新排列
meanPL(i)suppose(PLKPLK)%求取剛才看似可行路徑的平局值
minPL(i)min(PLKPLK)%提議最大值路徑
end
end
%%figure(1)
%%minPL(find(minPL0))[]%將40的點刪出
%%meanPL(find(meanPL0))[]%將不等于0的點刪除掉
%%plot(minPL,k)
%%hold on
%%plot(meanPL,r)
%%gridat%in先添加網(wǎng)格back消掉網(wǎng)格
%%title(收斂曲線(換算下來路徑長度和大于路徑長度))
%%xlabel(迭代次數(shù))
%%ylabel(路徑長度)
%繪匍匐爬行圖
%figure(2)
%草圖方格圖形
%axis([0,MM,0,MM])
%fori1:MM
%forj1:MM
%ifG(i,j)1
%x1j-1y1MM-i
%x2jy2MM-i
%x3jy3MM-i1
%x4j-1y4MM-i1
%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])%(x坐標,y坐標,顏色)
%hold on
%else
%x1j-1y1MM-i
%x2jy2MM-i
%x3jy3MM-i1
%x4j-1y4MM-i1
%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])
%hold on
%end
%end
%end
%hold on
%ROUTROUTES{K,M}
%RxROUT
%RyROUT
%LENROUTlength(ROUT)
%forii1:LENROUT
%Rx(ii)a*(mod(ROUT(ii),MM)-0.5)
%ifRx(ii)-0.5
%Rx(ii)MM-0.5
%end
%Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))
%end
%plot(Rx,Ry)
end
%plotif21%繪各代螞蟻向前爬行圖
%ifplotif21
%figure(3)
%axis([0,MM,0,MM])
%fori1:MM
%forj1:MM
%ifG(i,j)1
%x1j-1y1MM-i
%x2jy2MM-i
%x3jy3MM-i1
%x4j-1y4MM-i1
%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])
%hold on
êtch
%x1j-1y1MM-i
%x2jy2MM-i
%x3jy3MM-i1
%x4j-1y4MM-i1
%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])
%hold on
%end
%end
%end
%fork1:K%迭代次數(shù)
%PLKPL(k,:)%將第k次迭代爬行路線長度定義變量給PLK
%minPLKmin(PLK)%求得能夠參加迭代最短路徑長度
%posfind(PLKminPLK)%判斷與最短路徑長度大小關(guān)系的路徑,回標號
%mpos(1)%你選其中第一個標號
%ROUTROUTES{k,m}%將最短路徑的路線變量定義給ROUT
%
%LENROUTlength(ROUT)%畫圖觀察路線長度
%
%RxROUT
%RyROUT
%forii1:LENROUT
%Rx(ii)a*(mod(ROUT(ii),MM)-0.5)
%ifRx(ii)-0.5
%Rx(ii)MM-0.5
%end
%Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))
%end
%plot(Rx,Ry)
%hold on
%end
%end
plotif31%繪最短的距離螞蟻爬行圖
if plotif31igure(2)
axis([0,MM,0,MM])
afteri1:MM
forj1:MM
ifG(i,j)1
x1j-1y1MM-i
x2jy2MM-i
x3jy3MM-i1
x4j-1y4MM-i1
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])
hold on
else
x1j-1y1MM-i
x2jy2MM-i
x3jy3MM-i1
x4j-1y4MM-i1
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])
hold on
end
end
end
minmumPLKinf
whilek1:KPLKPL(k,:)%將第k次迭代爬行路線長度變量賦值給PLK
minPLKmin(PLK)
if(minPLKltminmumPLK)
posfind(PLKminPLK)%找不到與最晚爬行時路線長度相等的路徑標號
minmumPLKminPLK
minmpos(1)
minkk%迭代k次
endendROUTROUTES{mink,minm}%找出最大值路徑路線
LENROUTlength(ROUT)RxROUTRyROUTor ii1:LENROUT
Rx(ii)a*(mod(ROUT(ii),MM)-0.5)
ifRx(ii)-0.5
Rx(ii)MM-0.5
end
Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))
end
plot(Rx,Ry)
hold on
end
運行圖::
————————————————