【智能优化算法-人工蜂鸟算法】基于人工蜂鸟算法求解多目标优化问题附matlab代码MOAHA
1 内容介绍
在这项工作中提出了一种新的仿生优化算法,称为人工蜂鸟算法(AHA)来解决优化问题。 AHA算法模拟自然界中蜂鸟的特殊飞行技能和智能觅食策略。模拟了觅食策略中使用的三种飞行技能,包括轴向、对角线和全向飞行。此外,实施了引导觅食、领地觅食和迁徙觅食,并构建了访问表来模拟蜂鸟对食物来源的记忆功能。 AHA 使用两组数值测试函数进行验证,并将结果与从各种算法获得的结果进行比较。比较表明,AHA 比其他元启发式算法更具竞争力,并且可以用更少的控制参数确定高质量的解决方案。此外,AHA 的性能在十个具有挑战性的工程设计案例研究中得到验证。结果表明,与文献中现有的优化技术相比,AHA 在计算负担和求解精度方面的优越性。
2 仿真代码
%-------------------------------------------------------------------%
% Multi-Objective artificial hummingbird algorithm (MOAHA) %
% Source codes demo version 1.0 %
%-------------------------------------------------------------------%
% I acknowledge that this version of MOAHA has been written using
% a portion of the following code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB Code for %
% %
% Multi-Objective Particle Swarm Optimization (MOPSO) %
% Version 1.0 - Feb. 2011 %
% %
% According to: %
% Carlos A. Coello Coello et al., %
% "Handling Multiple Objectives with Particle Swarm Optimization," %
% IEEE Transactions on Evolutionary Computation, Vol. 8, No. 3, %
% pp. 256-279, June 2004. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dom=Dominates(x,y)
dom=all(x<=y) && any(x<y);
end
%-------------------------------------------------------------------%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [pop, F]=NonDominatedSorting(pop)
nPop=numel(pop);
for i=1:nPop
pop(i).DominationSet=[];
pop(i).DominatedCount=0;
end
F{1}=[];
for i=1:nPop
for j=i+1:nPop
p=pop(i);
q=pop(j);
if Dominates(p.Cost,q.Cost)
p.DominationSet=[p.DominationSet j];
q.DominatedCount=q.DominatedCount+1;
end
if Dominates(q.Cost,p.Cost)
q.DominationSet=[q.DominationSet i];
p.DominatedCount=p.DominatedCount+1;
end
pop(i)=p;
pop(j)=q;
end
if pop(i).DominatedCount==0
F{1}=[F{1} i];
pop(i).Rank=1;
end
end
k=1;
while true
Q=[];
for i=F{k}
p=pop(i);
for j=p.DominationSet
q=pop(j);
q.DominatedCount=q.DominatedCount-1;
if q.DominatedCount==0
Q=[Q j];
q.Rank=k+1;
end
pop(j)=q;
end
end
if isempty(Q)
break;
end
F{k+1}=Q;
k=k+1;
end
end
%--------------------------------------------------------------------------%
% Multi-Objective artificial hummingbird algorithm (MOAHA) %
% Source codes demo version 1.0 %
------------------------------------------------------------%
% FunIndex = 1: ZDT1
% FunIndex = 2: ZDT2
% FunIndex = 3: ZDT3
% FunIndex = 4: ZDT4
% FunIndex = 5: ZDT6
clc;
clear;
MaxIt=300;
nPop=100;
Dim=30;
ArchiveSize=100;
FunIndex=1;% ZDT1
[ArchiveFit]=MOAHA(FunIndex,MaxIt,nPop,ArchiveSize);
figure;
plot(ArchiveFit(1,:),ArchiveFit(2,:),'r.');
if FunIndex==5
title(['ZDT',num2str(FunIndex+1)]);
else
title(['ZDT',num2str(FunIndex)]);
end
xlabel('f1');
ylabel('f2');
box on
legend('PF');
3 运行结果
4 参考文献
[1]刘明辉. 改进的多目标人工蜂群算法及其在特征选择中的应用[D]. 安徽大学, 2018.
[2] Zhao W , Wang L , Mirjalili S . Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications[J]. Computer Methods in Applied Mechanics and Engineering, 2022, 388:114194-.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【智能优化算法-人工蜂鸟算法】基于人工蜂鸟算法求解多目标优化问题附matlab代码MOAHA相关推荐
- MATLAB算法实战应用案例精讲-【图像处理】小目标检测(附matlab代码实现)
目录 前言 算法原理 什么是小目标检测 (1)基于相对尺度 (2)基于绝对尺度:
- 【雷达检测】基于复杂环境下的雷达目标检测技术附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【图像分割】基于计算机视觉实现视网膜图像中的血管分割附matlab代码
1 简介 视网膜图像里的血管是可以被观察到的一类微血管,并且它是无创伤的,而其分布位置也属于深度部位[5].其分布.结构和形态特征的变化能在一定程度上反映病变的程度.而白血病.糖尿病以及高血压等疾病都 ...
- 基于混合整数二阶锥(MISOCP)的配电网重构(附matlab代码)
参考资料:主动配电网网络分析与运行调控 (sciencereading.cn) 配电网重构是指在满足配电网运行基本约束的前提下,通过改变配电网中一个或多个开关的状态对配电网中一个或多个指标进行优化.通 ...
- 【图像分割】基于布谷鸟算法实现二维Tsallis熵、kapur、oust多阈值图像分割附matlab代码
1 内容介绍 本文介绍了一种基于布谷鸟算法的多级阈值(MT)算法.布谷鸟优化算法[CuckooSearch (CS)],也叫杜鹃搜索,是智能算法的其中一种,于2009年由剑桥大学Xin-SheYang ...
- 【路径规划】基于A星算法结合floyd和动态窗口法实现机器人栅格地图路径规划附matlab代码
1 简介 针对移动机器人在静态环境中的特点,为了提高路径规划效率和精度,设计了A~*算法与Floyd算法结合的路径规划.我们根据实际环境,在栅格地图的基础上,利用A~*算法进行初步路径规划,找到了一条 ...
- 【图像分割】基于区域的重叠椭圆拟合实现细胞分割附matlab代码
1 内容介绍 一种基于区域的方法,用于用自动确定的可能重叠椭圆的数量来逼近任意 2D 形状.RFOVE 是完全无监督的,在没有任何假设或关于对象形状的先验知识的情况下运行,并且扩展和改进了递减椭圆拟合 ...
- 【图像分割】基于方向谷形检测实现静脉纹路分割附MATLAB代码
1 内容介绍 一种基于方向谷形检测的指静脉图像分割方法及其系统,终端,包括以下步骤:步骤1,接收图像采集模块采集的指静脉图像;步骤2,对截取的指静脉图像进行脊波变换作图像增强处理;步骤3,针对增强处理 ...
- 【滤波估计】基于双卡尔曼滤波实现soc和soh联合估计附matlab代码
1 内容介绍 对电动汽车电池管理系统进行电池状态估计非常重要准确充电,实现电池模型参数的在线更新.在本文中,开路电压的估计转换为开路电压拟合的估计参数,快速时变参数开路电压被转换成几个慢时变参数.提出 ...
最新文章
- 在阿里云ECS服务器上面开启tomcat服务并且正常后,无法访问怎么办?原来是没有开通外网访问的端口
- set 赋值(转载)
- Js中 关于top、clientTop、scrollTop、offsetTop的用法
- 递归算法(一)递归概念与思路
- spring security:自定义认证成功处理器
- Google传奇Jeff Dean最新演讲:如何构建未来的机器学习芯片
- Linux 新加一块硬盘,添加到已有逻辑卷扩容
- Robotframework--随机选取下拉框的字段值进行搜索
- NET中对象的构建过程
- Mac 技巧 | CAD 汉化后无法新建模板怎么办?
- Java 任务调度,分布式定时任务XXL-JOB,elastic-job
- 20191123每日一句
- 饮冰三年-人工智能-Python-27 Django Form组件
- linux java keytool_JDK自带的keytool证书工具详解
- Latex小写字母花体方法
- 新浪短网址生成java_T.CN短网址 新浪T.CN短网址批量生成工具推荐
- wildcard 的理解
- STM32 四轴无人机设计——遥控器PPM信号
- 缺失数据的Bootstrap与Jackknife方法:《Statistical Analysis with Missing Data》习题5.1 5.2
- 安装java1.6_JAVA1.6怎么安装