close all
clc

%% Set ABC Control Parameters
ABCOpts = struct( ‘ColonySize’, 100, … % Number of Employed Bees+ Number of Onlooker Bees % 雇佣蜂 和 观察蜂 的数量
‘MaxCycles’, 100,… % Maximum cycle number in order to terminate the algorithm % 算法终止条件 最大迭代次数
‘ErrGoal’, 1e-20, … % Error goal in order to terminate the algorithm (not used in the code in current version) % 目标误差
‘Dim’, 5, … % Number of parameters of the objective function % 目标函数自由变量的维度 (决策变量维度)
‘Limit’, 50, … % Control paramter in order to abandone the food source % limit限制参数
‘lb’, -600, … % Lower bound of the parameters to be optimized % 低阶
‘ub’, 600, … %Upper bound of the parameters to be optimized % 高阶
‘ObjFun’ , ‘griewank’, … %Write the name of the objective function you want to minimize
‘RunTime’,1); % Number of the runs % 程序运行次数

GlobalMins=zeros(ABCOpts.RunTime,ABCOpts.MaxCycles); % 记录 每次迭代的最小值
% 注意变量 Globa Mins 和 变量GlobalMin

%%
for r=1:ABCOpts.RunTime
%% 初始化操作
% Initialise population
Range = repmat((ABCOpts.ub-ABCOpts.lb),[ABCOpts.ColonySize ABCOpts.Dim]); % 维 度 区 间
Lower = repmat(ABCOpts.lb, [ABCOpts.ColonySize ABCOpts.Dim]); % 低 阶
Colony = rand(ABCOpts.ColonySize,ABCOpts.Dim) .* Range + Lower; % 初 始 化

Employed=Colony(1:(ABCOpts.ColonySize/2),:);%evaluate and calculate fitness
ObjEmp=feval(ABCOpts.ObjFun,Employed);            %  目标函数值
FitEmp=calculateFitness(ObjEmp);                  %  适应度值%set initial values of Bas
Bas=zeros(1,(ABCOpts.ColonySize/2));        %   记录邻域更新  limit相关量      Bas初始值  1 行 (ABCOpts.ColonySize/2) 列矩阵%%
GlobalMin=ObjEmp(  find(ObjEmp==min(ObjEmp),1,'last')    );      %     当前  最优值
GlobalParams=Employed(  find(ObjEmp==min(ObjEmp),1,'last'),:);   %      最优雇佣蜂Cycle=1;
while ((Cycle <= ABCOpts.MaxCycles))%% Employed phaseEmployed2=Employed;% for循环  更新雇佣蜂  (更新邻域)for i=1:ABCOpts.ColonySize/2Param2Change=fix(rand*ABCOpts.Dim)+1;          % 确定  更新的维数neighbour=fix(rand*(ABCOpts.ColonySize/2))+1;  % 确定用于更新的另一个  蜜源while(neighbour==i)                            % 使得用于更新的蜜源不等于  原蜜源neighbour=fix(rand*(ABCOpts.ColonySize/2))+1;end;Employed2(i,Param2Change)=Employed(i,Param2Change)+( Employed(i,Param2Change)-Employed(neighbour,Param2Change))*(rand-0.5)*2;if (Employed2(i,Param2Change)<ABCOpts.lb)       % 边界约束处理Employed2(i,Param2Change)=ABCOpts.lb;end;if (Employed2(i,Param2Change)>ABCOpts.ub)Employed2(i,Param2Change)=ABCOpts.ub;end;end;  %for endObjEmp2=feval(ABCOpts.ObjFun,Employed2);FitEmp2=calculateFitness(ObjEmp2);[Employed, ObjEmp, FitEmp, Bas]=GreedySelection(Employed,Employed2,ObjEmp,ObjEmp2,FitEmp,FitEmp2,Bas,ABCOpts);  %  进行一次邻域搜索%   更新蜜源%% NormalizeNormFit=FitEmp/sum(FitEmp);   %基与轮盘赌的概率选择   计算得到各蜜源的概率值%% Onlooker phase      观察蜂   操作Employed2=Employed;i=1;t=0;while(t<ABCOpts.ColonySize/2)if(rand<NormFit(i))t=t+1;Param2Change=fix(rand*ABCOpts.Dim)+1;neighbour=fix(rand*(ABCOpts.ColonySize/2))+1;while(neighbour==i)neighbour=fix(rand*(ABCOpts.ColonySize/2))+1;end;Employed2(i,:)=Employed(i,:);Employed2(i,Param2Change)=Employed(i,Param2Change)+(Employed(i,Param2Change)-Employed(neighbour,Param2Change))*(rand-0.5)*2;%find a new value in the neighborhoodif (Employed2(i,Param2Change)<ABCOpts.lb)       % 边界 约束 处理Employed2(i,Param2Change)=ABCOpts.lb;end;if (Employed2(i,Param2Change)>ABCOpts.ub)Employed2(i,Param2Change)=ABCOpts.ub;end;ObjEmp2=feval(ABCOpts.ObjFun,Employed2);FitEmp2=calculateFitness(ObjEmp2);[Employed, ObjEmp, FitEmp, Bas]=GreedySelection(Employed,Employed2,ObjEmp,ObjEmp2,FitEmp,FitEmp2,Bas,ABCOpts,i);%  贪婪选择end; % end ifi=i+1;if (i==(ABCOpts.ColonySize/2)+1)i=1;end;end; %      end while%% Memorize BestCycleBestIndex=find(FitEmp==max(FitEmp));CycleBestIndex=CycleBestIndex(end);CycleBestParams=Employed(CycleBestIndex,:);CycleMin=ObjEmp(CycleBestIndex);if CycleMin<GlobalMinGlobalMin=CycleMin;GlobalParams=CycleBestParams;endGlobalMins(r,Cycle)=GlobalMin;%% Scout phaseind=find(Bas==max(Bas));ind=ind(end);if (Bas(ind)>ABCOpts.Limit)Bas(ind)=0;%  重新初始化 第 ind 个   雇佣蜂 所对应  的目标函数值Employed(ind,:)=(ABCOpts.ub-ABCOpts.lb)*(0.5-rand(1,ABCOpts.Dim));%*2+ABCOpts.lb;%message=strcat('burada',num2str(ind))end;%  重新计算  雇佣蜂所对应的蜜源的目标函数值及其适应度值ObjEmp=feval(ABCOpts.ObjFun,Employed);FitEmp=calculateFitness(ObjEmp);%  fprintf('Cycle=%d ObjVal=%g\n',Cycle,GlobalMin);Cycle=Cycle+1;end % End of ABC

end; %end of runs
figure;
set(gcf,‘Color’,[1 1 1]);
if ABCOpts.RunTime==1
semilogy(GlobalMins);
else
semilogy(mean(GlobalMins),‘ab13456’);
end
title(‘收敛曲线’);
xlabel(‘迭代次数’);
ylabel(‘误差’);
fprintf(‘Mean =%g Std=%g\n’,mean(GlobalMins(:,end)),std(GlobalMins(:,end)));c
以上是人工蜂群算法,下面是栅格地图
shange.m

a = rand(5)>0.25;
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

text(1,n+1.5,‘START’,‘Color’,‘red’,‘FontSize’,10);%显示start字符
text(n+1,1.5,‘GOAL’,‘Color’,‘red’,‘FontSize’,10);%显示goal字符

hold on
%pin strat goal positon
scatter(1+0.5,n+0.5,‘MarkerEdgeColor’,[1 0 0],‘MarkerFaceColor’,[1 0 0], ‘LineWidth’,1);%start point
scatter(n+0.5,1+0.5,‘MarkerEdgeColor’,[0 1 0],‘MarkerFaceColor’,[0 1 0], ‘LineWidth’,1);%goal point
怎样在人工蜂群算法中添加路径,产生路径图

人工蜂群算法怎样添加路径相关推荐

  1. 【ABC三维路径规划】基于matlab人工蜂群算法无人机三维路径规划【含Matlab源码 021期】

    ⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...

  2. 机器人路径规划_人工蜂群算法

    机器人路径规划_人工蜂群算法 原理 ABC(Artificial BeesColony)算法最先由Basturk等人提出并应用于函数优化问题,蜂群采蜜行为与函数优化问题对应关系如表1所示.由表1可知, ...

  3. 【路径规划-VRP问题】基于人工蜂群算法求解双层2E-VRP问题matlab代码

    1 简介 本文利用人工蜂群算法求解带载重量限制的车辆路径问题(Capacitated vehicle routing problem, CVRP)和双层车辆路径问题(2E-VRP).CVRP是传统的单 ...

  4. 基于群智能的路径规划算法(四)------人工蜂群算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  5. 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  6. 人工蜂群算法_如果你的团队能够像人工蜂群一样战斗

    无人机航迹规划那些事儿-人工蜂群算法 无人机航迹规划问题有机器人路径规划问题延伸而来.三维环境下无人机航迹规划问题相较于二维环境规划较为复杂.航迹规划通常按一下流程:先对航迹规划空间进行数学建模,预先 ...

  7. 人工蜂群算法的最小搜索模型_【优化求解】人工蜂群ABC算法

    一.人工蜂群算法的介绍 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜 ...

  8. 人工蜂群算法求解TSP问题

    人工蜂群算法求解TSP问题 [标签] ABC TSP Matlab data:2018-10-19 author:怡宝2号 [总起]利用人工蜂群算法(Artificial Bee Colony Alg ...

  9. 论文阅读三:基于改进人工蜂群算法的SDN负载均衡策略研究

    名词解释: Artificial Bee Colony Algorithm, ABC:人工蜂群算法 Load balancing algorithm based on improved artific ...

最新文章

  1. day20 函数闭包与装饰器
  2. 并发基础(三): java线程优先级小试牛刀
  3. 计算机安全设,默认的安全性还不够!这几个保护计算机的步骤要设置好
  4. mysql-nt.exe w3wp.exe cpu 100%_认识w3wp.exe进程,从根本上解决占用资源较大问题
  5. 在所有浏览器下一次性测试您的网站
  6. [Leetcode][第35题][JAVA][搜索插入位置][二分法]
  7. Magento: 根据产品属性加载产品信息 Load A Category or Product by an Attribute
  8. java执行多次post请求_同样的post请求代码在Java和android中执行结果不同。
  9. Bailian3752 走迷宫【BFS】
  10. 从CVPR2019看计算机视觉的最新趋势
  11. SQL Server数据库被置疑的解决方案
  12. WinPE系统对硬盘分区
  13. android手机邮件Exchange账户的设置
  14. Bitcion Core 目录说明、使用说明、bitcoin.conf 配置说明
  15. 百度运维部农场,绿色畅想
  16. 人体行为识别特征点提取 综述很全面
  17. 每天学习一个设计模式(八):创建型之抽象工厂模式
  18. 互联网公司技术总监工作内容
  19. 权限绕过漏洞(越权漏洞)
  20. java酷炫代码_Java8 中有趣酷炫的小技巧

热门文章

  1. 打印字母对称型的金字塔图案(C语言)
  2. C语言对称矩阵的判定
  3. win10主题更换_利用termuxapi手机定时更换网络随机壁纸;免费申请小米收款宝
  4. 模拟电子技术之学前必备知识点
  5. linux mint 卸载桌面,Linux Mint 默认桌面 Cinnamon 1.6 正式发布
  6. 魔百和CM311-1sa_ZG_S905L3A_安卓9.0_纯净线刷固件包
  7. 观战朝鲜vs巴西后,给中国足球的两点建议
  8. 免费送 2800套精品小程序源码!
  9. 关于Vue中$nextTick的作用及实现原理(Vue进阶)
  10. js 年会大屏_ECharts + Jquery 做大屏展示