原创改进 | 融合蝠鲼觅食与联想学习的量子多目标灰狼优化算法(Matlab)

在这里插入图片描述

​前面的文章里作者介绍了多目标灰狼优化算法(Multi-Objective Grey Wolf Optimizer,MOGWO),该算法是由Mirjalili等(灰狼算法的提出者)于2016年提出[1],发表在中科院一区期刊《expert systems with applications》。

MOGWO保留了灰狼算法的种群更新机制,即通过模拟灰狼的严格等级制度以及自然界中的狩猎和捕食行为来迭代搜索优化,因此具有收敛速度快、效率高以及精度高等优点。当然,每种元启发式算法都不是完美的,面对复杂高维问题,MOGWO也会有早熟收敛、陷入局部最优等问题。因此本文从以下几个方面对MOGWO进行改进:收敛因子、种群初始化、围猎机制、头狼更新

00 文章目录

1 多目标灰狼优化算法原理

2 改进的多目标灰狼优化算法

3 代码目录

4 算法性能

5 源码获取

01 多目标灰狼优化算法原理

多目标灰狼优化算法的原理在作者往期文章已经作出介绍

02 改进的多目标灰狼优化算法

首先,对于原MOGWO算法,其在Archive中选择头狼的方式上提高了算法的搜索性能,然而若Archive种群陷入局部最优,则算法将难以跳出;其次,初始种群的随机生成,偶然性强,容易出现种群分布不均匀,降低种群多样性;同时,灰狼算法虽然有较快的收敛速度,但其收敛精度仍有一定提升的空间。基于以上认识,本文对MOGWO作出以下改进:

2.1 量子位Bloch球面初始化种群

高质量的初始种群对算法的收敛速度和求解质量有很大的帮助,而由于MOGWO采用随机生成初始种群的方法,容易出现种群分布不均匀,会导致种群多样性减少,种群质量不高,影响算法的收敛速度。因此本文采用量子位Bloch球面初始化种群,下面介绍其原理:

在量子计算中,信息的最小单位是量子比特。量子比特的状态可以表示如下在这里插入图片描述

其中,等式右边的两个参数可以唯一确定Bloch球面上的一点P。

在这里插入图片描述

[图源:Quantum Particle Swarm Optimization Based on Bloch Coordinates of Qubits]

因此,任何量子位都可以与Bloch球面上的一点对应,又由于Bloch球面是一个三维单位球面,则量子位的球面坐标可以表示为:

在这里插入图片描述

于是,灰狼个体可以采取量子位的Bloch球面坐标编码,设Pi为种群中第i个个体,n为优化维数,则其编码描述如下

在这里插入图片描述

其中,参数分别为在[0,2pi]和[0,pi]之间的随机数。可以将量子位的三个坐标看作三条并列的基因链,每个基因链都可代表一个解,则个体可以同时表示三个解,定义为x、y、z解:
在这里插入图片描述

量子比特编码的个体可以表示为:

在这里插入图片描述

[图源:Quantum Particle Swarm Optimization Based on Bloch Coordinates of Qubits]

一个量子位含3个Bloch坐标,每个坐标又可以代表一个解,而Bloch坐标下每维的范围是[-1,1],因此需要进行变换以对应到所需要的解空间。记个体i第j个量子位的Bloch坐标为[Xij,Yij,Zij],则对应到解空间为:
在这里插入图片描述

其中,[lbj,ubj]为对应变量的上下界。

由此可得到三个可行解,其适应度最佳者则可作为该个体的编码,由此能够提高和改善初始种群在搜索空间上的分布质量,加强其全局搜索能力。

2.2 非线性收敛因子

在GWO算法中,A是控制灰狼群体狩猎的重要参数。

在这里插入图片描述

当|A| >1时,灰狼群体倾向于大范围的全局搜索;当|A| <1时,灰狼群体将攻击猎物,即在最优解附近进行局部搜索。

而收敛因子a的将变化直接影响参数A的取值变化,在原GWO中,a从2线性减小到0,但面对复杂问题时,线性递减的策略往往易使群体不能充分探索空间,我们希望在前期a保持较大的值,以对空间进行充分的全局探索,而在后期a能保持较小的值使算法倾向于局部开发,加快收敛速度。由此提出一种非线性的收敛因子,公式略…

改进前后的收敛因子变化情况如下:
在这里插入图片描述

2.3 融合蝠鲼觅食的灰狼围猎

在原GWO 算法中,种群信息没有得到充分利用,这是由于个体位置更新仅由三个头狼引导,这意味着灰狼个体总是围绕头狼,此方法虽然有利于收敛,但若头狼陷入局部最优时,种群的进化将陷入停滞。

为了加强种群间的信息交流,受蝠鲼觅食优化算法启发,设计了一种新的位置更新公式,公式前半部分有助于算法快速收敛到最优解,后半部分有助于提高种群多样性以避免过早成熟。公式略…

在前期,个体的社会学习能力强,并且也保证了对全局最优位置的勘探能力,增强了对搜索空间的覆盖性,后期则倾向于在头狼附近搜索,加快收敛。

2.4 联想学习更新Archive

MOGWO中的外部档案Archive存储种群中的非支配解,在迭代前期,该机制能够有效保留精英级信息,但随着迭代的进行,非支配解数量将急剧增加,虽然其中的拥挤距离删除能够在一定程度上保证解集的质量,但仍会丢失部分优解信息,并且迭代后期大量相似解的充斥可能会诱使种群陷入局部最优,因此本文将对Archive中的解进行扰动变异,以增强解集多样性。

联想学习是近年提出的一种更新策略,可以提高算法的探索性能[2]。因此本文将联想学习引入对Archive中的部分个体进行更新,公式略…

2.5 算法流程
在这里插入图片描述

03 代码目录

代码包含两个部分,一部分为仅运行改进多目标灰狼优化算法的程序集,方便工程修改;另一部分为与其他算法有对比的程序集,完整代码目录如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码注释完整,其中部分改进算法的程序如下:

在这里插入图片描述

04 算法性能

4.1 测试函数

采用3个无约束的多目标优化问题的测试函数ZDT1-3对算法进行性能测试:

主要来自参考文献:

Zitzler E, Deb K, Thiele L. Comparison of multi-objective evolutionary algorithms: Empirical study [J]. Evolutionary Computation, 2000, 8(2): 173-195.

(1)ZDT1
在这里插入图片描述

     m=30,目前已知的Pareto前端的特征:凸的

(2)ZDT2
在这里插入图片描述

     m=30,目前已知的Pareto前端的特征:凹的

(3)ZDT3

在这里插入图片描述

    m=30,目前已知的Pareto前端的特征:非连续的

4.2 评价指标

采用IGD、GD、HV、SP这4个指标对解集的收敛性、均匀性和广泛性进行量化分析,各指标计算方式如下:

4.2.1 反世代距离(inverted generational distance, IGD)

IGD能够对算法的收敛性和分布性进行比较和评价,主要通过计算每个在真实 Pareto 前沿面上的参考点到算法获取的个体外部空间映射之间的最小距离和,来评价算法的收敛性能和分布性能。IGD值越小,则算法得到的最优解集越靠近真实Pareto前沿:
在这里插入图片描述

式中:F*为真实Pareto前沿;F为算法得到的最优解集;dre为Pareto最优面上点re与算法最优解集中个体i的最小欧式距离。

4.2.2世代距离(generational distance,GD)

用于评价所求得的近似Pareto前沿相对真实 Pareto前沿的逼近程度,也即收敛性,定义为:

在这里插入图片描述

其中,NPF为近似Pareto前沿中个体的数量;p=2;d为真实 Pareto前沿中第 i个个体的目标向量到近似Pareto前沿最近个体的欧氏距离。GD越小,表明收敛性越好。

4.2.3空间度量(spacing,SP)

用于评价所求得的近似Pareto前沿的分布情况,其定义为:

在这里插入图片描述

SP越小,表明近似Pareto前沿的分布越均匀,分布性越好。

4.2.4超体积(hypervolume,HV)

超体积又被称为 S 度量或勒贝格测度,表示的是近似集与参考点在目标空间中围成的区域的体积,用于评价目标空间被一个近似集覆盖的程度。给定一个参考点 r 和一个由算法获得的近似集 A,则 HV的计算公式如下所示:

在这里插入图片描述

其中,λ代表勒贝格测度,νi代表参考点 r 和近似集 A 中的非支配个体构成的超体积。HV 值越大说明算法的综合性能越好。尽管 HV由于其严格符合帕累托一致原则且无需已知真实的Pareto 前沿面被广泛地使用,但其仍然具有一些不可避免的缺陷。

4.3 结果对比

引入MOGWO、MOMVO(多目标多元宇宙优化算法)和NSGAII进行对比实验,得到结果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

改进的算法性能得到了提升。

最后,在多目标算法中,虽然Pareto支配解和非支配解排序的方法十分常见且经典,但当客观维度增加时,越来越多的个体不受彼此支配,这将大大增加了非支配排序方法的选择压力,因此可以考虑新的控制方式用于处理高维目标问题。

05 源码获取

在GZH(KAU的云实验台)回复“MAQMOGWO

参考文献

[1] Mirjalili S,Mirjalili S M .Lewis A. Multi-objective grey wolf optimizer : A novel algorithm for multi-criterion optimization[J]. Expert Systems with Applications.2016,47:106-119

[2]A. A. Heidari,I. Aljarah,H. Faris,H.Chen,J. Luo,and S. Mirjalili,“An enhanced associative learning-based exploratory whale optimizer for global optimization,”Neural Comput.Appl., vol. 32, no. 9, pp. 5185-5211,May 2020.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看 (ง•̀_•́)ง(不点也行)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 第 111 场双周赛题解

Leetcode 第 111 场双周赛题解 Leetcode 第 111 场双周赛题解题目1&#xff1a;2824. 统计和小于目标的下标对数目思路代码复杂度分析 题目2&#xff1a;2825. 循环增长使字符串子序列等于另一个字符串思路代码复杂度分析 题目3&#xff1a;2826. 将三个组排序思路代码复杂度分…

PCL Kdtree 使用示例

PCL Kdtree 使用示例 文章目录 PCL Kdtree 使用示例一、关于 KDTree二、关于最近邻搜索三、复杂度分析四、C代码示例五、关键函数说明nearestKSearch 函数说明 一、关于 KDTree 点云数据主要是&#xff0c; 表征 目标表面 的海量点集合&#xff0c; 并不具备传统实体网格数据的…

P8651 [蓝桥杯 2017 省 B] 日期问题

#include <iostream> #include <string> using namespace std;int first; int second; int third; int day[13]{0,31,0,31,30,31,30,31,31,30,31,30,31};//每月日期bool select (int i,int j,int k){if ((i%100 first) && (j second) && (k thi…

分段函数线性化方法matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

【ArcGIS遇上Python】python实现批量XY坐标生成shp点数据文件

单个手动生成:【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层 文章目录 一、问题分析二、解决办法三、注意事项一、问题分析 现有多个excel、txt或者csv格式的坐标数据,需要根据其坐标批量一键生成shp点数据,如下X为经度,…

Java - OpenSSL与国密OpenSSL

文章目录 一、定义 OpenSSL&#xff1a;OpenSSL是一个开放源代码的SSL/TLS协议实现&#xff0c;也是一个功能丰富的加密库&#xff0c;提供了各种主要的加密算法、常用的密钥和证书封装管理功能以及SSL协议。它被广泛应用于Web服务器、电子邮件服务器、VPN等网络应用中&#x…

高考复习技巧考研资料、美赛论文及代码,数据收集网站(初高中招生考试全科试卷等)

图&#xff0c;就要从“点、线、面的位置关系”这一内核开始发散&#xff0c;第一层级为彼此的位置关系&#xff0c;平行、相交、异面&#xff08;两直线间位置&#xff09;、垂直&#xff08;相交或异面中的特殊位置&#xff09;&#xff0c;多面体、旋转体等&#xff0c;然后…

前端实现弹小球功能

这篇文章将会做弹小球游戏&#xff0c;弹小球游戏大家小时候都玩过&#xff0c;玩家需要在小球到达游戏区域底部时候控制砖块去承接小球&#xff0c;并不断的将小球弹出去。 首先看一下实现的效果。 效果演示 玩家需要通过控制鼠标来实现砖块的移动&#xff0c;保证在小球下落…

Linux 文件和文件夹的创建与删除

目录 一. 新建1.1 mkdir 新建文件夹1.2 touch 新建空文件1.3 vi命令创建文件1.4 > 和 >> 新建文件 二. 删除 一. 新建 1.1 mkdir 新建文件夹 -p&#xff1a;递归的创建文件夹&#xff0c;当父目录不存在的时候&#xff0c;会自动创建 mkdir -p test1/test2/test31.…

递归神经网络:(01/4) 顺序数据处理的骨干

koushikkushal95 一、说明 循环神经网络是一个里程碑式的模型框架&#xff0c;它是对时间串处理的最基本构架&#xff1b;而理解RNN也是对自然语言处理模型的开端&#xff0c;本篇将对该模型的基本原理进行介绍。 二、顺序数据处理的架构 递归神经网络 &#xff08;RNN&#xf…

字典树-Python

字典树 字典树又叫前缀树、单词查找树&#xff0c;树形结构&#xff0c;是哈希树的变种。能够统计、排序和保存大量的字符串&#xff0c;经常被搜索引擎系统用于文本词频统计。优点是利用字符串的公共前缀来减少查询时间&#xff0c;最大程度减少无谓字符串的比较&#xff0c;…

HBase入门:运行机制

文章目录 HBase 系统架构客户端ZooKeeper 服务器Master 主服务器Region 服务器 Region 服务器工作原理用户读写数据的过程缓存的刷新StoreFile合并 Store 的工作原理HLog 的工作原理 HBase 系统架构 HBase 的系统架构包括客户端、ZooKeeper 服务器、Master 主服务器、Region服…

什么是SQL,什么是MYSQL?MYSQL的架构以及SQL执行语句的过程是什么?有哪些数据库的类型?一篇文章带你弄懂!

文章目录 前言一、为什么需要数据库二、数据库的相关概念1.什么是结构化查询语言 (SQL)2.什么是数据库管理系统 (DBMS)3.什么是 MySQL 数据库 三、数据库分类1.关系型数据库&#xff08;SQL&#xff09;2.非关系型数据库&#xff08;NoSQL&#xff09; 四、MYSQL架构1.各组件功…

OpenCV-27 Canny边缘检测

一、概念 Canny边缘检测算法是John F.Canny与1986年开发出来的一个多级边缘检测算法&#xff0c;也被很多人认为是边缘检测的最优算法。最优边缘检测的三个主要评价标准是&#xff1a; 低错频率&#xff1a;表示出尽可能多的实际边缘&#xff0c;同时尽可能的减小噪声产生的误…

503 Service Temporarily Unavailable nginx 原因和解决办法

前言 HTTP 503 Service Temporarily Unavailable 错误通常表示服务器无法处理请求&#xff0c;可能是由于服务器过载、维护或其他临时性问题导致的。在 Nginx 中&#xff0c;这种错误通常与后端服务的可用性问题相关。以下是可能的原因和解决办法&#xff1a; 正文…

windows安装openResty

一、openResty安装 1、下载 进入openResty官网&#xff1a; OpenResty - 下载 下载下图中的64zip包 2、解压zip&#xff0c;进入目录 进入conf目录&#xff08;openresty-1.25.3.1-win64\conf&#xff09;&#xff0c;找到nginx.conf文件&#xff0c;打开 3、修改配置文件&a…

k8s学习-DaemonSet和Job

1.1DaemonSet是什么 Deployment部署的副本Pod会分布在各个Node上&#xff0c;每个Node都可能运行好几个副本。DaemonSet的不同之处在于&#xff1a;每个Node上最多只能运行⼀个副本。DaemonSet的典型应用场景有&#xff1a; &#xff08;1&#xff09;在集群的每个节点上运⾏存…

Redis 面试题 | 16.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【css揭秘】

文章目录 背景与边框半透明边框多重边框box-shadowoutline 背景定位background-positionbackground-origincalc() 条纹背景水平条纹 形状圆形圆柱自适应的椭圆半椭圆四分之一椭圆 背景与边框 半透明边框 目标&#xff1a;给一个容器设置一层白色背景和一道半透明白色边框 写…

Redis学习——入门篇③

Redis学习——入门篇③ 1. Redis事务1.1 事务实际操作1.2 watch 2. Redis管道&#xff08;pipelining&#xff09;2.1 管道简介2.2 管道实际操作2.3 管道小总结 3. Redis&#xff08;pub、sub&#xff09;发布订阅(不重要)3.1 简介3.2 发布订阅实际操作 这是一个分水岭…