多目标优化算法:多目标蛇鹫优化算法(MOSBOA)求解DTLZ1-DTLZ9,提供完整MATLAB代码
一、蛇鹫优化算法
蛇鹫优化算法(Secretary Bird Optimization Algorithm,简称SBOA)由Youfa Fu等人于2024年4月发表在《Artificial Intelligence Review》期刊上的一种新型的元启发式算法。该算法旨在解决复杂工程优化问题,特别是在提高优化算法的收敛速度、优化精度以及有效避免局部最优解方面。SBOA通过模拟蛇鹫捕食蛇的行为以及逃避天敌的策略,将这些自然行为转化为算法中的探索(exploration)和开发(exploitation)阶段。
算法原理
SBOA算法的基本原理是模拟蛇鹫的捕猎和逃避行为。在捕食阶段,蛇鹫会展现出寻找猎物、消耗猎物和攻击猎物的行为。在逃避阶段,蛇鹫会利用其环境来隐藏自己或飞离/逃离捕食者。这些行为被数学建模并应用于算法中,以指导搜索过程。
算法步骤
-  初始化阶段:在SBOA中,每个蛇鹫代表一个候选解,其在搜索空间中的位置决定了决策变量的值。初始时,蛇鹫的位置是随机初始化的。 
-  捕猎策略(探索阶段):模拟蛇鹫捕食蛇的行为,分为三个阶段: - 寻找猎物:蛇鹫在搜索空间中随机搜索,寻找潜在的猎物(解)。
- 消耗猎物:蛇鹫接近并消耗猎物,对应算法中的开发阶段,蛇鹫会逐渐接近最优解。
- 攻击猎物:当蛇鹫认为时机成熟时,会迅速攻击猎物。在算法中,这对应于使用Levy飞行策略来增强全局搜索能力,提高算法的收敛精度。
 
-  逃生策略(开发阶段):模拟蛇鹫逃避捕食者的策略,包括利用环境隐藏和逃离捕食者。在算法中,这有助于提高解的多样性,避免早熟收敛。 
-  迭代更新:在每次迭代中,根据目标函数值更新蛇鹫的位置,并确定当前的最佳候选解。 
-  终止条件:当达到最大迭代次数或其他预设的终止条件时,算法结束,并输出最终的最优解。 
参考文献:
 [1]Fu Y, Liu D, Chen J, et al. Secretary bird optimization algorithm: a new metaheuristic for solving global optimization problems[J]. Artificial Intelligence Review, 2024, 57(5): 1-102.
二、多目标蛇鹫优化算法
由于蛇鹫优化算法仅能求解单目标优化问题,为了求解多目标优化问题,本文提出多目标蛇鹫优化算法(Multi-objective Secretary Bird Optimization Algorithm,MOSBOA)。MOSBOA是SBOA算法的多目标变体,能够有效求解多目标优化问题,为了检验本文所提算法的性能,将其应用于基准函数DTLZ1-DTLZ9的求解,并采用六种性能评价指标(GD、IGD、HV、Spacing、Spread、Coverage)对所提算法的收敛性和多样性进行有效评估。
 
 MOSBOA首先对种群进行初始化,采取随机初始化方式。其次,算法对初始化的种群进行筛选并利用筛选的后代交配产生子代个体。接着,利用环境选择算子对子代进行筛选以便进行下一轮迭代。直到满足算法的终止条件,最后一次环境选择出来的所有个体即为最终的近似 Pareto 解集。环境选择算子的作用主要用于子代个体的选择,被选择的个体能够支配种群中的其他个体或者互相不支配,称其为精英个体。通过算法的迭代运算,每次均选出精英个体,反复如此即可求得问题的解。
2.1、六种性能评价指标介绍
-  Generational Distance (GD): - GD是衡量算法生成的非支配解集与真实帕累托前沿之间距离的指标。它计算非支配解集中每个解到最近真实帕累托前沿解的欧氏距离的平均值。GD值越小,表示算法的收敛性越好,即解集越接近真实帕累托前沿。
 
-  Inverted Generational Distance (IGD): - IGD同时考虑了算法的收敛性和多样性。它计算真实帕累托前沿中的每个解到非支配解集中最近解的欧氏距离的平均值。IGD值越小,表示算法的性能越好,即解集在多样性和收敛性上都更接近真实帕累托前沿。
 
-  Hypervolume (HV): - HV指标衡量目标空间被非支配解集覆盖的程度。它需要一个参考点,通常是各个目标上的最大值形成的向量。HV值是算法求解得到的非占优解集与参考点之间形成的超立方体的体积。HV值越大,表示算法的收敛性和多样性越好。
 
-  Spacing: - Spacing是衡量解集中各个解之间分布均匀性的指标。它计算解集中每个解到其他解的最小距离的标准差。Spacing值越小,说明解集的分布越均匀。
 
-  Spread: - Spread衡量解集在目标空间中的分布范围。它通常通过计算解集中最远两个解之间的距离来衡量。Spread值越大,表示解集的分布范围越广。
 
-  Coverage: - Coverage指标用于衡量一个解集对另一个解集的覆盖能力。如果解集A的Coverage指标高于解集B,那么意味着解集A在某种程度上能够被解集B覆盖。这个指标通常用于比较两个解集的相对性能。
 
2.2、部分MATLAB代码
%% 参数说明
%testProblem 测试问题序号
%Name 测试问题名称
%dim 测试问题维度
%numObj测试问题目标函数个数
%lb测试问题下界
%ub测试问题上界
%SearchAgents_no 种群大小
%Max_iter最大迭代次数
%Fbest 算法求得的POF
%Xbest 算法求得的POS
%TurePF 测试问题的真实pareto前沿
%Result 评价指标随迭代次数的变化值
testProblem=22;
[Name,dim,numObj,lb,ub]=GetProblemInfo(testProblem);%获取测试问题的相关信息
SearchAgents_no=200;%种群大小 
Max_iter=200;%最大迭代次数
[Fbest,Xbest,TurePF,Result] = MOSBOA(Max_iter,SearchAgents_no,Name,dim,numObj,lb,ub);%算法求解2.3、部分结果

 
 
 
三、完整MATLAB代码
见下方名片
相关文章:
 
多目标优化算法:多目标蛇鹫优化算法(MOSBOA)求解DTLZ1-DTLZ9,提供完整MATLAB代码
一、蛇鹫优化算法 蛇鹫优化算法(Secretary Bird Optimization Algorithm,简称SBOA)由Youfa Fu等人于2024年4月发表在《Artificial Intelligence Review》期刊上的一种新型的元启发式算法。该算法旨在解决复杂工程优化问题,特别是…...
 
机器翻译基础与模型 之三:基于自注意力的模型
基于RNN和CNN的翻译模型,在处理文字序列时有个问题:它们对序列中不同位置之间的依赖关系的建模并不直接。以CNN的为例,如果要对长距离依赖进行描述,需要多层卷积操作,而且不同层之间信息传递也可能有损失,这…...
如何使用PCL处理ROS Bag文件中的点云数据并重新保存 ubuntu20.04
如何使用PCL处理ROS Bag文件中的点云数据并重新保存 要精确地处理ROS bag中的点云数据并使用PCL进行处理,再将处理后的数据保存回新的ROS bag文件,以下方案提供了详细、专业和严谨的步骤。 步骤 1: 环境设置 确保安装了ROS和PCL,并配置好环…...
背包问题(动态规划)
背包问题是一种组合优化的问题,它有多种变体,但最常见的两种是0/1背包问题和完全背包问题。 0/1背包问题 问题描述: 假设你有一个背包,背包的容量为W(可以是重量或者体积等度量),同时有n个物品…...
 
从0开始学习机器学习--Day26--聚类算法
无监督学习(Unsupervised learning and introduction) 监督学习问题的样本 无监督学习样本 如图,可以看到两者的区别在于无监督学习的样本是没有标签的,换言之就是无监督学习不会赋予主观上的判断,需要算法自己去探寻区别,第二张…...
Vue3插槽v-slot使用方式
在 Vue 3 中,v-slot 是用来定义和使用插槽的指令。插槽是 Vue 的一个功能,允许你在组件内部定义占位内容,便于在父组件中提供动态内容。以下是 v-slot 的详细使用方法: 1. 基础使用 <template><BaseComponent><te…...
 
Axure二级菜单下拉交互实例
1.使用boxlabe进行基础布局 2.设置鼠标悬浮和选中状态 3.转换为动态面板 选中所有二级菜单,进行按钮组转换 选中所有二级菜单,进行动态面板转换 4.给用户管理增加显示/隐藏事件 1)选择toggle代表上拉和下拉切换加载 2)勾选Bring to Front,并选择Push/Pull Widgets代表收缩时…...
 
华为VPN技术
1.启动设备 2.配置IP地址 [FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.254 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 100.1.1.1 24 [FW1-GigabitEthernet1/0/1]service-manage ping permit [FW2]int g1/0/0 [FW2-Gi…...
 
CommonsBeanutils与Shiro发序列化利用的学习
一、前言 前面的学习中,过了一遍cc1-cc7的利用链,在CC2的利用链中,学习了 java.util.PriorityQueue,它在Java中是一个优先队列,队列中每一个元素都有自己的优先级。在反序列化这个对象时,为了保证队列顺序…...
 
运维云计算SRE-第2周
1. 总结学过的权限,属性及ACL相关命令及选项,示例。 一、Linux安全模型 (一)资源分派 Authentication(认证):验证用户身份,确保登录系统的用户是合法的。 Authorization(…...
React Native 全栈开发实战班 - 用户界面进阶之响应式设计实践
在移动应用开发中,响应式设计 是确保应用在不同设备、屏幕尺寸和方向下都能提供良好用户体验的关键。React Native 提供了多种工具和技巧来实现响应式设计,包括 Flexbox 布局、动态样式、屏幕尺寸适配等。本章节将详细介绍如何在 React Native 中进行响应…...
 
SlickGrid点击/双击事件
分析 SlickGrid提供了点击事件方法grid.onClick和grid.onDblClick用于捕获用户对表格列的点击,捕获到点击事件之后,修改表格数据,然后使用grid.updateRow方法将修改后的数据更新到表格中。 展示 代码 创建grid(HTML)…...
 
一文详细深入总结服务器选型
1. 题记: 服务器选型工作是项目规划检讨的一项非常重要的工作,本文详细深入总结服务器选型。 2. 服务器基础知识概览 2.1 服务器的定义与功能 2.1 .1 定义 服务器是一种高性能计算机,其设计目的是在网络中提供服务。它可以处理来自多个客…...
一、Nginx反向代理(七层代理)二、Nginx的TCP/UDP调度器(四层代理)
一、Nginx反向代理(七层代理) 实验要求 使用Nginx实现Web反向代理功能,实现如下功能: 后端Web服务器两台,可以使用httpd实现Nginx采用轮询的方式调用后端Web服务器两台Web服务器的权重要求设置为不同的值最大失败次数为…...
 
CSS+JQuery 实现弹力球效果,碰到屏幕边框弹回
实现弹力球效果,碰到屏幕边框弹回,效果如下 代码如下: <img src"../image/ball.png" alt"" class"ball"> <style>.ball {position: fixed;top: 50vh;left: 50vw;width: 15vw;height: 15vw;border…...
shell编程规范和脚本变量
什么是shell 人和计算机内核之间的中介: 计算机的语言是二进制,把人类的语言翻译成计算机能够识别的语言,然后让内核来处理 内核完成之后要把结果反馈给用户,要把计算机的翻译成人类能够识别的语言 命令解释器,pyc…...
 
jspm美容院管理系统
摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计…...
 
Prometheus结合K8s(二)使用
上一篇介绍了如何搭建 Prometheus结合K8s(一)搭建-CSDN博客,这章介绍使用 页面访问 kubectl get svc -n prom 看promeheus和granfana的端口访问页面 Prometheus 点击status—target,可以看到metrics的数据来源,即各…...
【虚幻引擎】UE5数字人开发实战教程
本套课程将会交大家如何去开发属于自己的数字人,包含大模型接入,流式输出,语音识别,语音合成,口型驱动,动画蓝图,语音唤醒等功能。 课程介绍视频如下: 【虚幻引擎】UE5 历时一个多月…...
深入分析:固定参考框架在RViz中的作用与对数据可视化的影响 ros ubuntu20.04
深入分析:固定参考框架在RViz中的作用与对数据可视化的影响 RViz (Robot Visualization) 是 ROS (Robot Operating System) 中一种重要的三维可视化工具,主要用于实时观察和分析传感器数据、机器人状态信息以及环境模型。RViz的核心功能之一是固定参考框…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
 
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
 
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
 
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
