当前位置: 首页 > news >正文

CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)

一、斑马优化算法

斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovská等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。
在这里插入图片描述

斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑马周身的条纹和人类的指纹一样——没有任何两头完全相同。斑马为非洲特产。非洲东部、中部和南部产平原斑马,由腿至蹄具条纹或腿部无条纹。东非还产一种格式斑马,体格最大,耳长(约20厘米)而宽,全身条纹窄而密,因而又名细纹斑马。南非洲产山斑马,与其它两种斑马不同的是,它有一对象驴似的大长耳朵。除腹部外,全身密布较宽的黑条纹,雄体喉部有垂肉。斑马是草食性动物。除了草之外,灌木、树枝、树叶甚至树皮也是它们的食物。适应能力较强的消化系统,令斑马可以在低营养条件下生存,比其他草食性动物优胜。斑马对非洲疾病的抗病力比马强,但斑马始终未能被驯化成家畜,也没有能和马进行杂交。
在这里插入图片描述

斑马优化算法包含两个阶段:
阶段一:觅食行为
在第一阶段,根据斑马在寻找饲料时的行为模拟来更新种群成员。斑马的主要食物主要是草和莎草,但如果它们喜欢的食物稀缺,它们也可能吃芽、水果、树皮、根和叶子。根据植被的质量和可用性,斑马可能会花费60-80%的时间进食。在斑马中,有一种斑马叫做平原斑马,它是一种先驱食草动物,通过吞噬上层和营养较少的草的树冠,为其他需要更短、更有营养的草的物种提供了条件。在 ZOA 中,种群中最好的成员被认为是先锋斑马,并引导其他种群成员走向其在搜索空间中的位置。因此,更新斑马在觅食阶段的位置可以使用下式进行数学建模:
x i , j n e w , P 1 = x i , j + r ⋅ ( P Z j − I ⋅ x i , j ) , X i = { X i n e w , P 1 , F i n e w , P 1 < F i X i ,  else  \begin{array}{l} x_{i, j}^{n e w, P 1}=x_{i, j}+r \cdot\left(P Z_{j}-I \cdot x_{i, j}\right), \\ X_{i}=\left\{\begin{array}{cl} X_{i}^{n e w, P 1}, & F_{i}^{n e w, P 1}<F_{i} \\ X_{i}, & \text { else } \end{array}\right. \end{array} xi,jnew,P1=xi,j+r(PZjIxi,j),Xi={Xinew,P1,Xi,Finew,P1<Fi else 
阶段二:针对掠食者的防御行为
在第二阶段,模拟斑马对捕食者攻击的防御策略,以更新ZOA种群成员在搜索空间中的位置。斑马的主要捕食者是狮子;然而,它们受到猎豹、豹子、野狗、褐鬣狗和斑鬣狗的威胁。鳄鱼是斑马接近水时的另一种捕食者。斑马的防御策略因捕食者而异。斑马对狮子攻击的防御策略是以锯齿形模式和随机侧身转弯运动逃跑。斑马对鬣狗和狗等小型捕食者的攻击更具攻击性,这些捕食者通过聚集来迷惑和吓唬猎人。在 ZOA 设计中,假设以下两个条件之一以相同的概率发生:

(1)狮子攻击斑马,因此斑马选择了逃跑策略;

(2)其他捕食者攻击斑马,斑马会选择进攻策略。

在策略(1)中,当斑马受到狮子的攻击时,斑马在它们所在的情况附近逃离狮子的攻击。因此,在数学上,可以使用模式对这种策略进行建模S1 在下式第一项中。在第策略(2)中,当其他捕食者攻击其中一匹斑马时,群中的其他斑马会向被攻击的斑马移动,并试图通过创建防御结构来吓唬和迷惑捕食者。斑马的这种策略是使用模式进行数学建模的S2 在下式第一项中。在更新斑马的位置时,如果斑马的新位置对目标函数具有更好的值,则该斑马的新位置将被接受。此更新条件使用 下式第一二项建模。
x i , j n e w , P 2 = { S 1 : x i , j + R ⋅ ( 2 r − 1 ) ⋅ ( 1 − t T ) ⋅ x i , j , P s ≤ 0.5 ; S 2 : x i , j + r ⋅ ( A Z j − I ⋅ x i , j ) ,  else  , X i = { X i new  , P 2 , F i n e w , P 2 X i ,  else  , \begin{array}{l} x_{i, j}^{n e w, P 2} =\left\{\begin{array}{cc} S_{1}: x_{i, j}+R \cdot(2 r-1) \cdot\left(1-\frac{t}{T}\right) \cdot x_{i, j}, & P_{s} \leq 0.5 ; \\ S_{2}: x_{i, j}+r \cdot\left(A Z_{j}-I \cdot x_{i, j}\right), & \text { else }, \end{array}\right. \\ X_{i}=\left\{\begin{array}{cc} X_{i}^{\text {new }, P 2}, & F_{i}^{n e w}, P 2 \\ X_{i}, & \text { else }, \end{array}\right. \end{array} xi,jnew,P2={S1:xi,j+R(2r1)(1Tt)xi,j,S2:xi,j+r(AZjIxi,j),Ps0.5; else ,Xi={Xinew ,P2,Xi,Finew,P2 else ,
斑马优化算法的算法描述如下:
在这里插入图片描述
斑马优化算法的算法流程如下:
在这里插入图片描述

参考文献:
E Trojovská, M Dehghani, P Trojovský. Zebra Optimization Algorithm: A New Bio-Inspired Optimization Algorithm for Solving Optimization Algorithm[J]. IEEE Access, 2022,10:49445-49473.

二、CEC2017简介

CEC2017共有30个无约束测试函数分别是:单峰函数(F1-F3)、简单多峰函数(F4-F10)、混合函数(F11-F20)和组合函数(F21-F30)。测试维度包含:10D、30D、50D、100D。CEC2017无约束测试问题随着维度的增加求解极其困难。

在这里插入图片描述

三、求解结果

完整代码添加博客下方博主微信:djpcNLP123

将斑马优化算法ZOA运用于求解CEC2017中30个无约束函数,其中每个测试函数可以选择的维度分别有:10D、30D、50D、100D。增大迭代次数,ZOA的求解效果更佳。本例测试函数维度均为为10D(可根据自己需求调整),最大迭代次数为50次。

close all
clear 
clc
Function_name=15; %测试函数1-30
lb=-100;%变量下界
ub=100;%变量上界
dim=10;%维度 10/30/50/100
SearchAgents_no=100; % Number of search agents
Max_iteration=50;%最大迭代次数
[Best_score,Best_pos,Curve]=ZOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
figure
% Best convergence curve
semilogy(Curve,'LineWidth',2,'Color','g');
title(strcat('CEC2017-F',num2str(Function_name)))
xlabel('迭代次数');
ylabel('适应度值');
axis tight
box on
legend('ZOA')
display(['The best solution is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton is : ', num2str(Best_score)]);

F11:

在这里插入图片描述

F12:

在这里插入图片描述

F13:

在这里插入图片描述

F14:

在这里插入图片描述

F15:

在这里插入图片描述

四、参考代码

完整代码添加博客下方博主微信:djpcNLP123

相关文章:

  • Java并发简介(什么是并发)
  • 【uniapp】getOpenerEventChannel().once 接收参数无效的解决方案
  • 【蓝桥杯集训·每日一题】Acwing 3729. 改变数组元素
  • 集成电路相关书籍
  • 【项目】Vue3+TS CMS 基本搭建相关配置
  • KDHX-8700无线高压核相相序表
  • AMD发布23.2.1 新驱动 支持开年新作《魔咒之地》
  • JVM类加载机制
  • ACM第一周---周训---题目合集.
  • Java网络编程之UDP和TCP套接字
  • 最最普通程序员,如何利用工资攒够彩礼,成为人生赢家
  • 从事架构师岗位快2年了,聊一聊我对架构的一些感受和看法
  • Windows11去掉不满足系统要求的提示水印
  • 【算法自由之路】 贪心算法
  • HTTP协议——详细讲解
  • Android开源项目规范总结
  • hadoop集群管理系统搭建规划说明
  • Java Agent 学习笔记
  • Javascript设计模式学习之Observer(观察者)模式
  • React Native移动开发实战-3-实现页面间的数据传递
  • REST架构的思考
  • spring security oauth2 password授权模式
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 那些被忽略的 JavaScript 数组方法细节
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (31)对象的克隆
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)Linux 多线程条件变量同步
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .htaccess配置重写url引擎
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net FrameWork总结
  • .net Stream篇(六)
  • .NET 回调、接口回调、 委托
  • .Net程序帮助文档制作
  • .Net的DataSet直接与SQL2005交互
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • []T 还是 []*T, 这是一个问题
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [Apio2012]dispatching 左偏树
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)