资源简介
[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分割
相关资源
- CEC2015-matlab
- Numerical Simulation of Optical Wave Propagati
- HHT希尔伯特黄变换 MATLAB工具箱174211
- 粒子滤波原理及应用黄小平matlab代码
- 基于双边滤波的图像抽象化matlab代码
- 引导滤波matlab源代码
- MATLAB语言——GPOPS工具.zip
- MATLAB自带风机建模学习
- DCT+DWTmatlab数字水印代码
- 基于压缩感知的分布式视频编码框架
- 直接序列扩频系统MATLAB仿真(BPSK调制
- 基于行列像素置乱和DWT小波变换的图
- 《2017_MATLAB_DeepLearning》完整版-Phil K
- MATLAB应用大全(赵海滨)
- 配套光盘:现代信号处理教程-胡广书
- kriging工具箱
- 三相异步电机静止状态下参数辨识M
- matlab中文帮助文件.chm
- Matlab中文帮助文档172783
- MATLAB中模糊控制的表格生成方法
- Matlab 2012a安装教程
- 计算全息包含fig和源文件
- 阿伦方差的matlab实现
- 数字图像处理系统 MATLAB gui界面设计
- Matlab 图像融合源代码及数据
- MATLAB 游戏代码 星球大战
- 基于Matlab的图像清晰度评价方法研究
- 张雪英版数字语音处理及MATLAB仿真课
-
sigma-delta ADC基于matlab simuli
nk的仿真 - PCA LDA LLE各种降维方法Matlab工具箱
评论
共有 条评论