资源简介

[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个文件信息

评论

共有 条评论