本人研究生期間主要研究蟻群演算法及其在機器人路徑規劃中的應用。
本代碼是為了在上課時畫出一個圖形來比較不同種類的蟻群演算法,主要包裹ACS,MMAS,EAS等經典的蟻群演算法,最后還包括本人提出的另一種演算法。
本代碼已經成功申請了軟體著作權(因此請注意:本代碼具有著作權)
軟體環境主要是MATLAB(2016B及其以上)下的GUI。
主要功能有:
1、比較不同演算法在不同柵格環境下的運行情況,(柵格環境可以自行設計)
2、觀察實驗結果,包括迭代曲線和運行多次的平均值。可以直接觀察演算法本身的魯棒性。
3、代碼設計非常模塊化,可以同時學習多種蟻群演算法。
下載地址:https://download.csdn.net/download/qq_27261889/10735012
使用截圖如下:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:

這里是已有的柵格環境
uj5u.com熱心網友回復:
這是所有代碼
uj5u.com熱心網友回復:
請問你的代碼那么多,哪個是主函式,想要柵格路徑規劃的結果圖的代碼,下了看了一圈都沒有主函式好像uj5u.com熱心網友回復:
初始界面
運行界面
main_gui 就是主函式。
uj5u.com熱心網友回復:
非常感謝!很好用,謝謝樓主的分享和快速解答!感恩!uj5u.com熱心網友回復:
我本來是要傳一下我的說明檔案,但是找不到了。有很多按鈕的作用沒有說明。
包括一些資料的保存。
有疑問再發出來。
另外說一下,這個軟體也是有一些bug的,我自己就知道一兩個。
遇到的話,還請自行克服。
或者說出來大家一起解決。
uj5u.com熱心網友回復:
請你幫個忙,我自己現在無法評論資源。你幫我說一下,主程式是哪一個檔案好嗎。
這確實是我的責任。
謝謝了
uj5u.com熱心網友回復:
main_gui 就是主函式。另外:您障礙地圖格網最大值是不是就是50,我再往大調好像沒有反應,以及我不太知道您這AS值得是什么呢?您論文里用的是ACO、ACS、RAS、EAS對么?
uj5u.com熱心網友回復:
另外您方便留下郵箱么?我嘗試參考您的演算法結果。想進一步溝通,以及著作權問題。uj5u.com熱心網友回復:
我可以很明確的告訴你,這并不是真正意義上的ACS(我指的是和創始人的文章完全一樣)。
因為創始人的ACS是針對TSP問題,它里面的啟發函式可以是距離的倒數,也就是距離越大,選擇為下一節點的概率越小。
但是在柵格中,這個問題不一樣。在這個程式中,我用的是下一節點和終點的距離來確定的。簡單來說就是離終點越近,選擇為下一節點的概率越大。
這是機器人路徑規劃和TSP問題的巨大不同。
除此之外,我基本上按照原文來設計演算法的,也就是對應的文章。如AS,ACS,EAS,RAS,其中AS和EAS實際上都是同一篇文章的。
調大了也是可以的,但是很慢。我也并不建議你繼續加大。
加大的問題也是我沒有完全解決的,我還有一個程式就是專門為了解決大規模問題的。鏈接如下:https://download.csdn.net/download/qq_27261889/10686904
鏈接里我也對此有說明。
郵箱:[email protected]
不過我現在暫時不再繼續研究蟻群演算法了。不太會花時間再去思考。
如果我恰好知道的,我一定會說出我的理解。
謝謝
uj5u.com熱心網友回復:
想請問您覺得在機器人路徑規劃上,蟻群演算法較傳統演算法,如A*演算法、Dijkstra演算法的優勢在哪里呢?uj5u.com熱心網友回復:
蟻群演算法是優化演算法,屬于智能演算法,速度比較慢,它是為了求得更優的解。
A*演算法是啟發演算法,比較快,但是不太在乎結果是不是最優。
也就是說根本目標有點不同。
uj5u.com熱心網友回復:
為什么我運行的時候,主函式基本都報錯uj5u.com熱心網友回復:
程式只有一個主函式,你可以說一下你的程式報什么錯誤。
有一些是有錯誤,因為我的程式是有一些操作上的問題的。但是簡單的話應該沒什么問題。
你可以把你的錯誤寫出來,否則我無法幫你解決。
我已經是把所有的程式和檔案都傳上去了。不知道其他地方還有什么錯誤。
uj5u.com熱心網友回復:
您好,我運行的時候,點擊GUI的每個按鈕都報錯,而且界面有點錯位。我是matlab2017a
直接點開始運行報錯如下
結構體內容參考自非結構體陣列物件。
出錯 main_GUI_xu>pushbutton4_Callback (line 670)
set(handles.edit57,'string',1);set(handles.edit58,'string',1);set(handles.edit59,'string',1);
出錯 gui_mainfcn (line 95)
feval(varargin{:});
出錯 main_GUI_xu (line 42)
gui_mainfcn(gui_State, varargin{:});
出錯
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)main_GUI_xu('pushbutton4_Callback',hObject,eventdata,guidata(hObject))
計算 UIControl Callback 時出錯。
uj5u.com熱心網友回復:
我知道怎么回事了,我執行的檔案不對。應該執行.m,我執行的.fig。。。。。打擾樓主了,謝謝您的分享供大家學習uj5u.com熱心網友回復:
您好,想請問一下,您的軟體運行后的那些路徑規劃圖、迭代曲線圖等點保存的時候為何報錯保存不了?
uj5u.com熱心網友回復:
你去下載完整版的,你這里可能缺少一個主檔案吧。
另外,先運行main.m檔案,然后出來一個界面,然后在界面上運行。
程式本身已經是完整版的,除了版本可能有問題,應該沒其他問題。
uj5u.com熱心網友回復:
大神,壓縮包里的畢業論文最后的對比圖上最大熵的自適應演算法路線是怎么得出來的?uj5u.com熱心網友回復:
不知道你說那幅圖?
有的話也就是這個程式得來的。
目前這個程式在障礙物不多的情況下還行,但不是那么穩健,也不是最優。還需要進一步提高
uj5u.com熱心網友回復:

就是這組圖里面拿紅線畫出來的,想知道它是用哪組代碼仿真出來的?本文指的演算法好像你這組代碼合集里面沒有,謝謝大神,拜托拜托
uj5u.com熱心網友回復:
這個結果就是程式里面的 ACO演算法,你可以進ACO.m檔案看原始碼。初始論文你可以看:基于統計分析的自適應蟻群演算法及應用,這篇文章。
圖是matlab自影片的。你直接運行ACO演算法,就可以得到完全一樣的結果了。記得選好不同的地圖模型。
uj5u.com熱心網友回復:

大神,我用你的代碼運行了一遍,一點都沒改,為什么結果是這樣的
uj5u.com熱心網友回復:
這個代碼你運行了很多次,統計表中有每次的統計值,你看看統計值。整體上來說,ACO會比ACS好。
右下角也可以選擇想要顯示的第幾次實驗結果。
注意看統計值吧。
另外,蟻群演算法并不是確定的,每次運行結果并不一定相同。
uj5u.com熱心網友回復:

為什么我每次點擊障礙物設定的時候就會報這個錯誤呢~
uj5u.com熱心網友回復:
先點擊設計障礙物,然后再設計障礙物
uj5u.com熱心網友回復:

為什么在每一個演算法中都用上圖的轉移規則,輪盤閾值不是ACS特有的偽隨機比例規則嗎
uj5u.com熱心網友回復:
據我回憶,這個演算法就是所謂的偽隨機。
因為當時我看到這個代碼也覺得不是,后來有一次就頓悟了。你可以把每一行代碼都看看。
至于具體對不對,我比較確信它是對的。
uj5u.com熱心網友回復:
對的,上面的代碼是偽隨機比例規則。
但是我看論文只有ACS,ACO在轉移規則中用到偽隨機規則,別的演算法并沒有,是直接使用輪盤賭方式。
而你的全部演算法代碼(包括AS,EAS)都用這種轉移規則,那是不是有點問題。
uj5u.com熱心網友回復:
為什么在每一個演算法中都用上圖的轉移規則,輪盤閾值不是ACS特有的偽隨機比例規則嗎
據我回憶,這個演算法就是所謂的偽隨機。
因為當時我看到這個代碼也覺得不是,后來有一次就頓悟了。你可以把每一行代碼都看看。
至于具體對不對,我比較確信它是對的。
對的,上面的代碼是偽隨機比例規則。
但是我看論文只有ACS,ACO在轉移規則中用到偽隨機規則,別的演算法并沒有,是直接使用輪盤賭方式。
而你的全部演算法代碼(包括AS,EAS)都用這種轉移規則,那是不是有點問題。
AS和EAS好像確實不用,因為記憶中這個實在ACS中才提出的。
從這個角度來說,你可以認為程式本身有問題。
不過,加上這個對AS和EAS有好處還是沒好處? 個人認為對比較結果沒有太大影響。
uj5u.com熱心網友回復:
跟26樓一樣 一運行就錯 gui是出來了 障礙物呼叫不出來>> main_GUI_xu
錯誤使用 cd
無法將目錄改變為 barrier (Name is nonexistent or not a directory)。
出錯 init_all (line 11)
cd('barrier')
出錯 main_GUI_xu>main_GUI_xu_OpeningFcn (line 63)
init_all(handles)
出錯 gui_mainfcn (line 220)
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
出錯 main_GUI_xu (line 42)
gui_mainfcn(gui_State, varargin{:});
出錯
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)main_GUI_xu('pushbutton13_Callback',hObject,eventdata,guidata(hObject))
計算 UIControl Callback 時出錯。
uj5u.com熱心網友回復:
不好意思 問題解決了uj5u.com熱心網友回復:
請問有沒有多機器人路徑規劃的代碼?uj5u.com熱心網友回復:
你好,請問怎么設定路徑與障礙物之間的距離啊,我想路徑與障礙物之間有點距離,而不是挨著。謝謝回復~uj5u.com熱心網友回復:
請問有沒有多機器人路徑規劃的代碼?
沒有。你得自己去弄了。
uj5u.com熱心網友回復:
你好,請問怎么設定路徑與障礙物之間的距離啊,我想路徑與障礙物之間有點距離,而不是挨著。謝謝回復~
我的的代碼里面無法設定這個約束條件,你得自己弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/107884.html
標籤:其他開發語言
上一篇:微服務解決方案 -- Mybatis-Plus + Redis快取,如何不太優雅的使用Redis快取
下一篇:python檔案連接服務器的問題
