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

代碼片段和文件信息
function?[ACO_all_routesACO_all_path_lengthACO_parameters]?=?ACO(hobject?eventdata?handles)
%?運行我的ACO算法,這里其實是我第一篇文章的算法,即基于統計排序的自適應精英蟻群算法
global?barrier?goal?start
global?h_waitbar
%?參數設置
????Q?=?5;?%?不可改變,只能在程序里面改動
????q0_ACO?=?str2double(?get(handles.edit101‘string‘)?);
????q0?=?q0_ACO;
????beta_ACO?=?str2double(?get(handles.edit102‘string‘)?);
????beta?=?beta_ACO;
????alpha_ACO?=?str2double(?get(handles.edit103‘string‘)?);
????alpha?=?alpha_ACO;
????elite_num_ACO?=?str2double(?get(handles.edit104‘string‘)?);
????elite_ant?=?elite_num_ACO;
????rho_global_ACO?=?str2double(?get(handles.edit105‘string‘)?);
????rho_global?=?rho_global_ACO;
????rho_local_ACO?=?str2double(?get(handles.edit106‘string‘)?);
????rho_local?=?rho_local_ACO;
%?參數保存
ACO_parameters?=?[Q...
????q0...
????beta...
????alpha...
????elite_ant...
????rho_global...
????rho_local];
%?通用設置
????ant_number?=?str2double(?get(handles.edit9‘string‘)?);
????iter_number?=?str2double(?get(handles.edit10‘string‘)?);
????execute_number?=?str2double(?get(handles.edit18‘string‘)?);
%?算法運行開始
X?=?size(barrier1);????????????????????????????????????%?問題的狀態空間矩陣的行數
Y?=?size(barrier2);????????????????????????????????????%?問題的狀態空間矩陣的列數
num_point?=?X*Y;????????????????????????????????????????%?狀態空間中所有節點的數量,即問題的規模
heuristic_a?=?eta_function(goalnum_pointbetaXY);????%?啟發式綜合信息
heuristic?=?heuristic_a;????????????????????????????????%?重新賦值,由于本主函數中沒有調用,所以初始時可能不計算啟發式,導致初始時出錯
adjacency_matrix?=?adjacency(barrierXYnum_point);????%?根據barrier障礙物信息生成一個鄰接矩陣
MAX_path_legth?=?inf;???????????????????????????????????%?預設的最大路徑長度
%?以上為一些初始數據的記錄
%?length_path(NCk)?=?();???????????????????%?NC次迭代第k只螞蟻的路徑長度,矩陣
%?routes{NCk}?=?{};????????????????????????%?NC次迭代第k只螞蟻的節點信息,元胞
%?以上為重要的實驗實驗數據保留以及最后畫圖時的調用
%%?主循環:執行蟻群算法
for?exercise=1:execute_number?%?執行次數
????tau?=?8.*ones(num_pointnum_point);????????%?初始信息素量
????global_best_path?=?[];?????????????????????%?每次迭代時當前全局最優的路徑長度,行向量
????road_global?=?{};??????????????????????????%?當前全局最優路徑的節點信息
????path_sequence?=?[];????????????????????????%?初始化螞蟻走過的路徑長度
????for?NC=1:iter_number?%?迭代次數
????????for?ant=1:ant_number
????????????%?????ant_die?=?0;
????????????%%?一代螞蟻都開始找路
????????????node?=?start;???????????????????????????????????????%?所有螞蟻放在起始位置
????????????path_sequence?=?node;???????????????????????????????%?記錄一只螞蟻的行駛路徑的節點信息
????????????path_length?=?0;????????????????????????????????????%?記錄螞蟻走過的路徑長度
????????????tabu?=?ones(1X*Y);?????????????????????????????????%?初始化禁忌表,其中1表示還未經過的節點標號
????????????tabu(node)?=?0;?????????????????????????????????????%?使初始點不能再被選擇
????????????data?=?adjacency_matrix;????????????????????????????%?重復使用并修改而不破壞原始鄰接矩陣
????????????data_node?=?data(node:);???????????????????????????%?取出當前節點的鄰接矩陣所在行進行處理
????????????node_tepmlate?=?find(?data_node?);??????????????????%?發現滿足鄰接矩陣的下一可行節點的位置信息
????????????for?j=1:length(?node_tepmlate?)?????????????????????%?使其滿足禁忌表的要求(需要同時
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8026??2017-03-19?19:23??GUI源文件保存\ACO.m
?????文件???????7170??2017-03-19?19:24??GUI源文件保存\ACS.m
?????文件???????4026??2017-03-05?15:22??GUI源文件保存\adjacency.m
?????文件????????761??2017-03-19?15:20??GUI源文件保存\analyse_multi_algorithm.m
?????文件???????6077??2017-03-19?19:25??GUI源文件保存\AS.m
?????文件???????8840??2017-03-22?17:17??GUI源文件保存\barrier\barrier_tmp.xlsx
?????文件??????18941??2016-08-02?09:11??GUI源文件保存\barrier\complex_1.xlsx
?????文件??????18923??2017-02-23?19:15??GUI源文件保存\barrier\complex_2.xlsx
?????文件??????16321??2016-06-16?17:05??GUI源文件保存\barrier\complex_30.xlsx
?????文件??????18280??2016-06-16?16:24??GUI源文件保存\barrier\complex_50_1.xlsx
?????文件??????17229??2017-02-28?23:16??GUI源文件保存\barrier\complex_50_2.xlsx
?????文件??????17055??2016-06-20?15:19??GUI源文件保存\barrier\complex_50_3.xlsx
?????文件??????11154??2016-06-16?10:58??GUI源文件保存\barrier\complex_z.xlsx
?????文件??????10578??2016-06-16?10:52??GUI源文件保存\barrier\e_barrier.xlsx
?????文件??????10554??2016-06-17?19:13??GUI源文件保存\barrier\light_u_barrier.xlsx
?????文件??????10597??2016-06-17?19:13??GUI源文件保存\barrier\right_u_barrier.xlsx
?????文件??????11273??2016-06-17?19:01??GUI源文件保存\barrier\simple_e.xlsx
?????文件??????10596??2016-06-16?10:53??GUI源文件保存\barrier\u_barrier.xlsx
?????文件??????11154??2016-06-16?10:58??GUI源文件保存\barrier\z_barrier.xlsx
?????文件???????8637??2017-03-19?15:38??GUI源文件保存\dispalce_pushbutton23.m
?????文件???????6852??2017-03-19?19:25??GUI源文件保存\EAS.m
?????文件????????473??2017-03-05?15:29??GUI源文件保存\eta_function.m
?????文件????????730??2017-03-15?14:10??GUI源文件保存\figure_barrier.m
?????文件???????1077??2017-03-20?15:15??GUI源文件保存\figure_convergence.m
?????文件????????259??2017-03-20?15:15??GUI源文件保存\figure_convergence_global.m
?????文件????????253??2017-03-20?15:15??GUI源文件保存\figure_convergence_iter.m
?????文件???????2320??2017-03-20?21:05??GUI源文件保存\figure_convergence_multi.m
?????文件????????395??2017-03-17?20:34??GUI源文件保存\figure_diversity_line.m
?????文件???????9293??2017-03-22?16:39??GUI源文件保存\figure_multi_algorithm.m
?????文件???????1104??2017-03-15?09:03??GUI源文件保存\figure_path.m
............此處省略27個文件信息
- 上一篇:CEC2015-matlab
- 下一篇:3D腦部MRI分割
評論
共有 條評論