💥1 概述
人工鱼群算法(Artificial Fish-Swarm Algorithm,AFSA)是由李晓磊等在2002年提出的,源于对鱼群运动行为的研究,是一种新型的智能仿生优化算法。它具有较强的鲁棒性、优良的分布式计算机制、易于和其他方法结合等优点.目前对该算法的研究、应用已经渗透到多个应用领域,并由解决一维静态优化问题发展到解决多维动态组合优化问题.人工鱼群算法已经成为交叉学科中一个非常活跃的前沿性研究课题。
本文为改进的人工鱼群算法(IAFSA)的MATLAB代码。该代码用于自主水面舰艇的全球路径规划。
📚2 运行结果
🎉3 参考文献
[1]姚正华. 改进人工鱼群智能优化算法及其应用研究[D].中国矿业大学,2016.
👨💻4 Matlab代码
主函数部分代码:
%% close all; clear all; clc; %% %画出机器人的障碍环境,并标注start,goal位置 % a = rand(20)>0.35;%黑白格所占比例 tic; a = load('object.txt'); n = size(a,1); b = a; b(end+1,end+1) = 0; figure; colormap([0 0 0;1 1 1]) pcolor(b); % 赋予栅格颜色 set(gca,'XTick',10:10:n,'YTick',10:10:n); % 设置坐标 axis image xy % displayNum(n);%显示栅格中的数值 text(0.5,0.5,'START','Color','red','FontSize',10);%显示start字符 text(n+0.5,n+1.5,'GOAL','Color','red','FontSize',10);%显示goal字符 hold on % % % hold on %% %障碍空间矩阵集合B Barrier = (find(a==0))'; %% %建立可行域 %% %main %% % arrayValue = [13,34,256]; % %判断解是否处于障碍物中 % NB = length(arrayValue); % for i = 1:1:NB % if ismember(arrayValue(i),Barrier) ==1 % arrayValue(i) = randi([1 400],1); %删除出现在障碍物处的坐标.并赋予1-400中随机整数 % end % end