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 …...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...
