多目标优化算法——多目标粒子群优化算法(MOPSO)

devtools/2024/11/28 21:11:24/

Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法

一、摘要:

本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展到解决多目标优化问题的建议不同,我们的算法使用二级(即外部)粒子库,这些粒子库稍后被其他粒子用来引导它们自己的飞行。我们还加入了一个特殊的突变算子,丰富了我们算法的探索能力。采用几个测试函数和指标,从进化多目标优化的标准文献中验证了所提出的方法。结果表明,该方法具有很强的竞争性,可以被认为是解决多目标优化问题的可行选择。

二、概念解释

1.支配(Dominance ) : 在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比q差;那么称个体p支配个体q

S1支配S2:

在这里插入图片描述

S1和S2互不支配:

在这里插入图片描述

2.序值(Rank): 如果p支配q,那么p的序值比q低;如果p和q互不支配,那么p和q有相同的序值

3.拥挤距离(Crowding Distance): 表示个体之间的拥挤程度,测量相同序值个体之间的距离。

4.帕累托(Pareto)

pareto最优解与pareto最优解集:
如果对于优化问题的一个解A,不存在其他的解可以支配解A,那么解A就是一个pareto最优解。显然pareto最优解不只一个,由这些解组成的集合就称为pareto最优解集。pareto最优解集中所有解的互相之间都是非支配的关系,也就是解集中不存在任何一个解完全优于其他解(要和平共处)。所以,和PSO最后要求出唯一一个最优解不同,MOPSO的目标是求出一个互相之间为非支配关系的解的集合,也就是pareto最优解集。

帕累托最优解也称为非劣解、可容许解或有效解;它们对应的向量称为非支配向量。

下图中:S1、S3、S5、S6、S9之间互不支配,且不被其他解支配,这些解称为Pareto解或非支配解。在下图的多目标优化问题中,如果在整个可行的变量空间中再不能找到解能够支配上述五个解,那么上述五个解称为Pareto最优解,所有的Pareto最优解组成Pareto最优解集

在这里插入图片描述

5.帕累托最优解对应的目标函数值就是帕累托最优前沿,对于两个目标的问题,其Pareto最优前沿通常是条线。而对于多个目标,其Pareto最优前沿通常是一个超曲面

6.外部存档:因为粒子群算法在迭代过程中各个粒子的速度和位置都是不断变化的,适应度(目标函数)也随之变化,所以一般都需要采用一个外部存档将pareto最优解的数据存储下来。

三、算法原理

​ 1.算法流程图
在这里插入图片描述

  1. MOPSO:
  • 根据pareto支配原则,计算得到Archive集(存放当前的非劣解)计算局部最优pbest
  • 计算Archive集中的拥挤度在Archive集选择全局最优gbest
  • 更新粒子的速度和位置,并计算适应值更新Archive集(需注意防止溢出)
  1. PSO和MOPSO的大框架一致,MOPSO只是根据多目标问题改进了PSO中的pbest和gbest的选取方法
  • 速度更新公式:

在这里插入图片描述

  • 位置更新公式:

在这里插入图片描述

​ 当一个决策变量超出其边界时,我们会做两件事:

​ 1)决策变量取其相应边界(下边界或上边界)的值;

​ 2)它的速度乘以**-1**,以便它在相反的方向上搜索。

  • pbest的选取:
    单目标问题中,PSO可以根据适应度直接找出该粒子历史最好的位置
    多目标问题中,MOPSO找出该粒子历史最好的位置(保存于该粒子结构体的一个属性中),(即如果记忆中的位置支配当前位置时,则保留记忆中的位置;否则当前位置取代记忆中的位置;)如果在更新当前粒子的历史最好位置发现当前位置与历史最佳互不支配0.5概率随机选一个

    在这里插入图片描述

  • gbest的选取:
    单目标问题中,PSO可以根据适应度直接找出当前最好的粒子
    多目标问题中,MOPSO根据Pareto找出当前最好的粒子集合,最后找到最不拥挤的那个粒子

    MOPSO中,gbest变成了REP[h],REP[h]是从存储库中获取的值;索引h的选择方式如下:那些包含一个以上粒子的超立方体的适应度值等于:任何数字x>1除以它们包含的粒子数的结果。这旨在降低那些包含更多粒子的超立方体的适应度,它可以被视为一种适应度共享的形式。然后,我们将这些适应度值应用于轮盘赌来选择超立方体,再选择相应粒子。当选中某个超立方体后,我们随机选择超立方体中的一个粒子。

  1. 外部存档

​ 外部存档主要目的是保存搜索过程中发现的非支配向量的历史记录,由两个主要部分组成:存档控制器网格

存档控制器:它的功能是决定一个解是否能被添加到归档集中。决策过程如下:算法的种群每次迭代发现的非支配向量与外部储存库的向量进行比较,这个外部储存库在一开始的时候是空的。如果外部的归档集是空的,则接受当前解(见Fig1,case1)。如果这个新解被外部归档集中的某个个体支配,则新解将自动被移除(见Fig1,case2)。否则如果外部归档集中的个体没有一个支配想进入归档集的解,则这个解将被存储在外部归档集中。如果归档集中存在某些解被新解支配,则这些解将从归档集中移除(见Fig1,case3、4)。最后,如果外部种群达到最大容量,则启动自适应网格程序(见Fig1,case5)。

在这里插入图片描述

网格:为了获得均匀分布的Pareto前沿,我们的方法使用了[21]中提出的自适应网格技术。其基本思想是使用一个外部归档集储存所有非支配解。在归档集中,目标函数空间被分割成几个区域,如Fig2所示。注意,如果外部种群中的个体在当前网格边界外,则必须重新计算网格并且重新定位网格中的每个个体(见Fig3)。

在这里插入图片描述

自适应网格实际上是一个超立方体形成的空间。这个超立方体的维度和目标函数一样多。每个超立方体可以被解释为一个不含任何个体的地理区域。自适应网格技术的主要优点是其计算开销少于小生境技术。唯一的例外是如果网格在每一代都必须更新。此时,自适应网格技术的计算复杂度和小生境技术的计算复杂度相同。自适应网格用于实现解的均匀分布。为了实现这个目标,有必要提供确定的信息(即子网格的数量)。

  1. 突变算子:突变算子通过引入随机扰动,有效避免了粒子群陷入局部最优,提升了算法的全局搜索能力。均匀突变保证了随机性,而非均匀突变则随着迭代次数的增加逐渐减少突变程度,平衡了探索和开发的关系。
四、ZDT问题运行结果
  1. ZDT1

    在这里插入图片描述

  2. ZDT2

    在这里插入图片描述

  3. ZDT3

    在这里插入图片描述

  4. ZDT4

在这里插入图片描述


http://www.ppmy.cn/devtools/137758.html

相关文章

游戏引擎学习第22天

移除 DllMain() 并成功重新编译 以下是对内容的详细复述与总结: 问题和解决方案: 在编译过程中遇到了一些问题,特别是如何告知编译器不要退出程序,而是继续处理。问题的根源在于编译过程中传递给链接器的参数设置不正确。原本尝试…

LeetCode数组题

参考链接 代码随想录 讲解视频链接 数组题 1、(两数之和)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用…

Windows修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183) --亲测

漏洞说明: 打开链接:https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/restrict-cryptographic-algorithms-protocols-schannel 可以看到: 找到:应通过配置密码套件顺序来控制 TLS/SSL 密码 我们…

捉虫笔记(七)-再探谁把系统卡住了

捉虫笔记(七)-再探谁把系统卡住 1、内核调试 在实体物理机上,内核调试的第一个门槛就是如何建立调试链接。 这里我选择的建立网络连接进行内核调试。 至于如何建立网络连接后续文章再和大家分享。 2、如何分析 在上一篇文章中,我们…

追加docker已运行容器添加或修改端口映射方法

docker run可以指定端口映射 【】docker run -d -p 80:80 --name name 但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。 【】 docker stop A 【】 doc…

经典游戏:飞机大战游戏python设计与实现

《飞机大战》是一款经典的二维飞行射击游戏,其核心玩法是控制玩家飞机与敌机作战,通过击落敌机获取分数并尽量避免被敌机击中。根据提供的代码,飞机大战的设计和实现可以分为以下几个主要部分:游戏初始化、游戏界面设计、玩家控制…

【MySQL】MySQL8.0新特性整理

MySQL 8.0 引入了许多新特性和改进,旨在提升性能、安全性和易用性。以下是一些主要的新特性: 1. 默认字符集和排序规则 默认字符集:MySQL 8.0 的默认字符集从 latin1 更改为 utf8mb4,支持更多的字符和表情符号。排序规则&#x…

计算机网络的功能

目录 信息交换 资源共享 分布式处理 可靠性增强 集中管理 信息交换 计算机网络最基本的功能之一是允许不同设备之间的数据通信。这包括电子邮件的发送和接收、即时消息的传递、文件传输等。通过网络,用户可以轻松地与全球各地的其他人进行沟通和协作。 信息交…