CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)
一、斑马优化算法
斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovská等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。

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

斑马优化算法包含两个阶段:
阶段一:觅食行为
在第一阶段,根据斑马在寻找饲料时的行为模拟来更新种群成员。斑马的主要食物主要是草和莎草,但如果它们喜欢的食物稀缺,它们也可能吃芽、水果、树皮、根和叶子。根据植被的质量和可用性,斑马可能会花费60-80%的时间进食。在斑马中,有一种斑马叫做平原斑马,它是一种先驱食草动物,通过吞噬上层和营养较少的草的树冠,为其他需要更短、更有营养的草的物种提供了条件。在 ZOA 中,种群中最好的成员被认为是先锋斑马,并引导其他种群成员走向其在搜索空间中的位置。因此,更新斑马在觅食阶段的位置可以使用下式进行数学建模:
xi,jnew,P1=xi,j+r⋅(PZj−I⋅xi,j),Xi={Xinew,P1,Finew,P1<FiXi,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⋅(PZj−I⋅xi,j),Xi={Xinew,P1,Xi,Finew,P1<Fi else
阶段二:针对掠食者的防御行为
在第二阶段,模拟斑马对捕食者攻击的防御策略,以更新ZOA种群成员在搜索空间中的位置。斑马的主要捕食者是狮子;然而,它们受到猎豹、豹子、野狗、褐鬣狗和斑鬣狗的威胁。鳄鱼是斑马接近水时的另一种捕食者。斑马的防御策略因捕食者而异。斑马对狮子攻击的防御策略是以锯齿形模式和随机侧身转弯运动逃跑。斑马对鬣狗和狗等小型捕食者的攻击更具攻击性,这些捕食者通过聚集来迷惑和吓唬猎人。在 ZOA 设计中,假设以下两个条件之一以相同的概率发生:
(1)狮子攻击斑马,因此斑马选择了逃跑策略;
(2)其他捕食者攻击斑马,斑马会选择进攻策略。
在策略(1)中,当斑马受到狮子的攻击时,斑马在它们所在的情况附近逃离狮子的攻击。因此,在数学上,可以使用模式对这种策略进行建模S1 在下式第一项中。在第策略(2)中,当其他捕食者攻击其中一匹斑马时,群中的其他斑马会向被攻击的斑马移动,并试图通过创建防御结构来吓唬和迷惑捕食者。斑马的这种策略是使用模式进行数学建模的S2 在下式第一项中。在更新斑马的位置时,如果斑马的新位置对目标函数具有更好的值,则该斑马的新位置将被接受。此更新条件使用 下式第一二项建模。
xi,jnew,P2={S1:xi,j+R⋅(2r−1)⋅(1−tT)⋅xi,j,Ps≤0.5;S2:xi,j+r⋅(AZj−I⋅xi,j),else ,Xi={Xinew ,P2,Finew,P2Xi,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⋅(2r−1)⋅(1−Tt)⋅xi,j,S2:xi,j+r⋅(AZj−I⋅xi,j),Ps≤0.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
相关文章:
CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)
一、斑马优化算法 斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovsk等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。 斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑…...
【Linux要笑着学】进程创建 | 进程终止 | slab分派器
爆笑教程《看表情包学Linux》👈 猛戳订阅!💭 写在前面:本章我们主要讲解进程的创建与终止。首先讲解进程创建,fork 函数是我们早在讲解 "进程的概念" 章节就提到过的一个函数&#…...
数据资产管理建设思考(二)
关于数据资产管理,近两年是数据治理行业中一个热点话题,当然有我们前面提到的国家的政策支持及方向指引的原因。另一方面我们做数据治理的同行们从学习吸收国外优秀的数据治理理论,进一步在实践中思考如何应用理论,并结合我们国家…...
微软发布多模态版ChatGPT!取名“宇宙一代”
文|CoCo酱Ludwig Wittgenstein曾说过:“我语言的局限,即是我世界的局限”。大型语言模型(LLM)已成功地作为各种自然语言任务的通用接口,只要我们能够将输入和输出转换为文本,就可以将基于LLM的接…...
【学习笔记】深入理解JVM之对象的实例化
参考尚硅谷JVM 102 - 106 集 首发地址:地址 1、JVM对象的实例化 1.1 对象的创建方式 对象有一下几种创建对象的方式 new Object object new Object();Class的newInstance() Object object Object.class.newInstance();Constructor的newInstance(…...
IP协议的漏洞及防护措施
文章目录一、TCP/IP协议族二、IP协议三、IP协议的安全问题及防护措施一、TCP/IP协议族 二、IP协议 网际协议(Internet Protocol,IP)是TCP/IP协议族的核心,也是网际层最重要的协议。 IP数据报由首部和数据两部分组成;…...
Linux命令·mkdir
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。1.命令格式:mkdir [选项] 目录...2.命令功能:通过 mkdir 命令可以实现…...
智能家居项目(八)之树莓派+摄像头进行人脸识别
目录 1、编辑Camera.c 2、编辑contrlDevices.h 3、编辑mainPro.c 4、进行编译: 5、运行结果: ./test1 6、项目图片演示 智能家居项目(七)之Libcurl库与HTTPS协议实现人脸识别_Love小羽的博客-CSDN博客 经过上一篇文章&…...
渗透测试之地基服务篇:无线攻防之钓鱼无线攻击(上)
简介 渗透测试-地基篇 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。 请注意 : 本文仅用于技术讨论与研究,对于所有笔记中复现…...
「ABAP」一文带你入门OPEN SQL中的SELECT查询(附超详细案例解析)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…...
【搞透C语言指针】那年我双手插兜, 不知道指针是我的对手
☃️内容专栏:【C语言】进阶部分 ☃️本文概括: 征服C语言指针!一篇文章搞清楚指针的全部要点。 ☃️本文作者:花香碟自来_ ☃️发布时间:2023.3.3 目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义…...
如何从 Android 手机上的 SD 卡恢复已删除的照片
为了扩展手机的存储空间,很多人都会在安卓手机上插入一张SD卡来存储一些大文件,比如电影、照片、视频等。虽然SD卡给我们带来了很大的方便,但我们还是避免不了数据丢失一些事故造成的。您是否正在为 SD 卡上的照片意外丢失而苦恼?…...
01-前端-htmlcss
文章目录HTML&CSS1,HTML1.1 介绍1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标签1.3.5 段落标签1.3.6 加粗、斜体、下划线标签1.3.7 居中标签1.3.8 案例1.4 图片、音频、视频标签1.5 超链接标签1.6 列表标签1.7 表格标签1.8 布…...
【YOLO系列】YOLOv5超详细解读(网络详解)
前言 吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 目录 前言 一、YOLOv5的网络结构 二、输入端 (1…...
从 ChatGPT 爆火回溯 NLP 技术
ChatGPT 火遍了全网,多个话题频频登上热搜。见证了自然语言处理(NLP)技术的重大突破,体验到通用技术的无限魅力。GPT 模型是一种 NLP 模型,使用多层变换器(Transformer)来预测下一个单词的概率分…...
面了 6 家大厂,并拿下 5 家 offer,进大厂好像也没有那么困难吧....
前言 二月份的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal 的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了 Offer。 最近时间稍微宽裕点了,写个面经…...
四、Spring对IoC的实现
1.IoC 控制反转 控制反转是一种思想。控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP原则,达到DIP原则。控制反转,反转的是什么? 将对象的创建权利交出去,交给第三方容器负责。将对象和对象之间关系…...
Java语言如何求平方根
问题 在编程时,会遇到求平方根的问题,本次问题讲到如何使用Java来求解平方根。 方法 使用java.lang.Math类的sqrt(double)方法求平方根。Math是java.lang包中的类,所以就可以直接使用这个类。Double为对象中的基本类型。例如求正整数16的平方…...
C++20中的span容器
一.span容器 span 是 C20 中引入的一个新的标准容器,它用于表示连续的一段内存区间,类似于一个轻量级的只读数组容器。 span 是一个轻量级的非拥有式容器,它提供了对连续内存的引用。 span 的主要用途是作为函数参数,可以避免不…...
codeforces周赛div3#855记录
目录 总结 一,A. Is It a Cat? 二,B. Count the Number of Pairs 三,C1. Powering the Hero (easy version) 四,C2. Powering the Hero (hard version) 总结 真羡慕ACM校队的同学,能AC七八题,甚至ak …...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
