多目标优化算法——多目标粒子群优化算法(MOPSO)
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.算法流程图
- MOPSO:
- 根据pareto支配原则,计算得到Archive集(存放当前的非劣解)计算局部最优pbest
- 计算Archive集中的拥挤度在Archive集选择全局最优gbest
- 更新粒子的速度和位置,并计算适应值更新Archive集(需注意防止溢出)
- 注: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除以它们包含的粒子数的结果。这旨在降低那些包含更多粒子的超立方体的适应度,它可以被视为一种适应度共享的形式。然后,我们将这些适应度值应用于轮盘赌来选择超立方体,再选择相应粒子。当选中某个超立方体后,我们随机选择超立方体中的一个粒子。
- 外部存档:
外部存档主要目的是保存搜索过程中发现的非支配向量的历史记录,由两个主要部分组成:存档控制器和网格。
存档控制器:它的功能是决定一个解是否能被添加到归档集中。决策过程如下:算法的种群每次迭代发现的非支配向量与外部储存库的向量进行比较,这个外部储存库在一开始的时候是空的。如果外部的归档集是空的,则接受当前解(见Fig1,case1)。如果这个新解被外部归档集中的某个个体支配,则新解将自动被移除(见Fig1,case2)。否则如果外部归档集中的个体没有一个支配想进入归档集的解,则这个解将被存储在外部归档集中。如果归档集中存在某些解被新解支配,则这些解将从归档集中移除(见Fig1,case3、4)。最后,如果外部种群达到最大容量,则启动自适应网格程序(见Fig1,case5)。
网格:为了获得均匀分布的Pareto前沿,我们的方法使用了[21]中提出的自适应网格技术。其基本思想是使用一个外部归档集储存所有非支配解。在归档集中,目标函数空间被分割成几个区域,如Fig2所示。注意,如果外部种群中的个体在当前网格边界外,则必须重新计算网格并且重新定位网格中的每个个体(见Fig3)。
自适应网格实际上是一个超立方体形成的空间。这个超立方体的维度和目标函数一样多。每个超立方体可以被解释为一个不含任何个体的地理区域。自适应网格技术的主要优点是其计算开销少于小生境技术。唯一的例外是如果网格在每一代都必须更新。此时,自适应网格技术的计算复杂度和小生境技术的计算复杂度相同。自适应网格用于实现解的均匀分布。为了实现这个目标,有必要提供确定的信息(即子网格的数量)。
- 突变算子:突变算子通过引入随机扰动,有效避免了粒子群陷入局部最优,提升了算法的全局搜索能力。均匀突变保证了随机性,而非均匀突变则随着迭代次数的增加逐渐减少突变程度,平衡了探索和开发的关系。
四、ZDT问题运行结果
-
ZDT1
-
ZDT2
-
ZDT3
-
ZDT4
相关文章:
多目标优化算法——多目标粒子群优化算法(MOPSO)
Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…...
Swift——自动引用计数ARC
ARC ARC是swift使用的一种管理应用程序内存的机制,对于C语言我们知道,当我们申请一块空间,通常需要手动释放,不然会造成空间浪费,而有了ARC机制,你无需考虑内存的管理,因为ARC会在类的实例不再…...
【Quarkus】基于CDI和拦截器实现AOP功能(进阶版)
Quarkus 基于CDI和拦截器实现AOP功能(进阶版) 拦截器的属性成员拦截器的重复使用基于属性成员和重复使用的拦截器的发消息案例 本节来了解一下拦截器高级特性(拦截器的重复使用和属性成员),官网说明:https:…...
【踩坑日记】【教程】如何在ubuntu服务器上配置公钥登录以及bug解决
前言 在日常开发和运维中,为了提高服务器登录的安全性,我们通常会选择使用 SSH 密钥认证 来替代传统的密码登录。然而,在配置 SSH 公钥登录的过程中,可能会遇到各种坑和 Bug。本文将从零开始,手把手教你如何在 Ubuntu…...
insmod一个ko提供基础函数供后insmod的ko使用的方法
一、背景 在内核模块开发时,多个不同的内核模块,有时候可能需要都共用一些公共的函数,比如申请一些平台性的公共资源。但是,这些公共的函数又不方便去加入到内核镜像里,这时候就需要把这些各个内核模块需要用到的一些…...
七、传统循环神经网络(RNN)
传统循环神经网络 RNN 前言一、RNN 是什么?1.1 RNN 的结构1.2 结构举例 二、RNN 模型的分类2.1 按照 输入跟输出 的结构分类2.2 按照 内部结构 分类 三、传统 RNN 模型3.1 RNN内部结构图3.2 内部计算公式3.3 其中 tanh 激活函数的作用3.4 传统RNN优缺点 四、代码演示…...
LeetCode:19.删除链表倒数第N个节点
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:19.删除链表倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表…...
【RISC-V CPU debug 专栏 2 -- Debug Module (DM), non-ISA】
文章目录 调试模块(DM)功能必须支持的功能可选支持的功能兼容性要求规模限制Debug Module Interface (DMI)总线类型地址与操作地址空间控制机制Debug Module Interface Signals请求信号响应信号信号流程Reset Control复位控制方法全局复位 (`ndmreset`)Hart 复位 (`hartreset…...
单片机学习笔记 11. 外部中断
更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…...
基于stm32的智能教室管理系统/智能家居系统
基于stm32的智能教室管理系统/智能家居系统 持续更新,欢迎关注!!! ** 基于stm32的智能教室管理系统/智能家居系统 ** 目前,物联网已广泛应用在我们的生活中。智慧校园是将校园中的生活、学习、工作等相关的资源联系在一起,实现管理的智能化…...
基于 Qt 和 GStreamer 的环境中构建播放器
一、功能与需求分析 功能描述 播放本地视频文件(如 MP4、MKV)。 支持基本控制功能(播放、暂停、停止、跳转)。 提供音量调节功能。 在 Windows 环境下使用 Visual Studio 2022 编译。 技术选型 Qt:用于构建用户界面。 GStreamer:负责视频解码和播放。 Visual Studio 202…...
windows docker 入门
这个教程将指导你如何安装Docker、运行第一个容器以及理解一些基本概念。 第一步:安装Docker Desktop for Windows 系统要求: Windows 10 64位版本(专业版、企业版或教育版)。启用Hyper-V和Windows Subsystem for Linux (WSL 2)。…...
baomidou Mabatis plus引入异常
1 主要异常信息 Error creating bean with name dataSource 但是有个重要提示 dynamic-datasource Please check the setting of primary 解决方法: <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring…...
深度学习中的正则化模型是什么意思?
一、定义 在深度学习中,正则化是一种用于防止过拟合的技术。过拟合是指模型在训练数据上表现非常好,但在新的、未见过的数据(测试数据)上表现很差的情况。正则化模型就是通过在损失函数中添加额外的项来约束模型的复杂度…...
修改IDEA配置导致Spring Boot项目读取application.properties中文乱码问题
之前很多配置都是放在nacos里面,然后这次同事有个配置写在application.properties中,这个配置含有中文,启动之后发现拿到的中文值会乱码,然后就帮忙看了一下问题。 排查问题 经过不停的百度、排查发现,spring读取app…...
Flink 热存储维表 使用 Guava Cache 减轻访问压力
目录 背景 Guava Cache 简介 实现方案 1. 项目依赖 2. Guava Cache 集成到 Flink (1) 定义 Cache (2) 使用 Cache 优化维表查询 3. 应用运行效果 (1) 维表查询逻辑优化 (2) 减少存储压力 Guava Cache 配置优化 总结 背景 在实时计算场景中,Flink 应用中…...
深入探索SenseVoiceSmall:高效多语言语音识别与处理模型
引言 随着人工智能技术的飞速发展,语音识别技术已经广泛应用于智能助手、客户服务、智能家居等多个领域。然而,现有的语音识别模型往往存在资源消耗大、多语言支持不足等问题。今天,我们要介绍的是来自ModelScope平台的SenseVoiceSmall模型&…...
Flink--API 之Transformation-转换算子的使用解析
目录 一、常用转换算子详解 (一)map 算子 (二)flatMap 算子 (三)filter 算子 (四)keyBy 算子 元组类型 POJO (五)reduce 算子 二、合并与连接操作 …...
每日十题八股-2024年11月27日
1.类型互转会出现什么问题吗? 2.为什么用bigDecimal 不用double ? 3.装箱和拆箱是什么? 4.Java为什么要有Integer? 5.Integer相比int有什么优点? 6.那为什么还要保留int类型? 7.说一下 integer的缓存 8.怎么…...
OpenCV截取指定图片区域
import cv2 img cv2.imread(F:/2024/Python/demo1/test1/man.jpg) cv2.imshow(Image, img) # 显示图片 #cv2.waitKey(0) # 等待按键x, y, w, h 500, 100, 200, 200 # 示例坐标 roi img[y:yh, x:xw] # 截取指定区域 cv2.imshow(ROI, roi) cv2.waitKey(0) cv…...
Java部分新特性
模式匹配 instance of 模式匹配 之前写法 public void print(Object o) {if (o instanceof String){String str (String) obj;System.out.println("This is a String of length " s.length());} else {System.out.println("This is not a String");} …...
【SpringBoot】28 API接口防刷(Redis + 拦截器)
Gitee仓库 https://gitee.com/Lin_DH/system 介绍 常用的 API 安全措施包括:防火墙、验证码、鉴权、IP限制、数据加密、限流、监控、网关等,以确保接口的安全性。 常见措施 1)防火墙 防火墙是网络安全中最基本的安全设备之一,…...
IT运维专家给年轻人一些职业上的建议
运维工作在现代企业中是非常重要的一环,保证系统的稳定性、可用性以及安全性对企业的正常运营至关重要。以下是我给年轻人的一些职业发展建议,希望能够帮助你们在运维领域找到方向并取得成功。 1. 夯实基础,扎实技术功底 精通操作系统与网络:运维工作需要深入理解操作系统…...
Django基础之路由
一.前言 前面我们说了django的安装于基础配置,基础知识点我就细分下来,每天和大家讲一点,今天就要和大家说django的基础知识点了,我们今天先来讲路由,内容不多,希望大家记住 二.传统路由 路由就是前面一个…...
Python实例化中默认值的行为及应用
Python实例化中默认值的行为及应用 适合初学者阅读 本文要点 使用可变对象作为默认参数会导致所有实例共享同一对象,引发意外的数据修改。不可变对象作为默认参数时,每次实例化都会创建新的对象,不会共享数据。推荐使用None作为默认值&…...
【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R
【WRF后处理】模拟效果评价及可视化 准备工作模型评价指标Python实现代码Python处理代码:导入站点及WRF模拟结果可视化图形及评价指标参考在气象和环境建模中(如使用 WRF 模型进行模拟),模型性能评价指标是用于定量评估模拟值与观测值之间偏差和拟合程度的重要工具。 本博客…...
ShenNiusModularity项目源码学习(4:身份认证)
ShenNiusModularity项目有两套启动方式,一种是ShenNius.Admin.Mvc项目启动,该项目为MVC模式,带前台页面,也有后台服务,另一种是ShenNius.Admin.Hosting,该项目启动后仅提供后台服务,供其它前台项…...
python+django自动化部署日志采用WebSocket前端实时展示
一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…...
flink学习(6)——自定义source和kafka
概述 SourceFunction:非并行数据源(并行度只能1) --接口 RichSourceFunction:多功能非并行数据源(并行度只能1) --类 ParallelSourceFunction:并行数据源(并行度能够>1) --接口 RichParallelSourceFunction:多功能并行数据源(并行度能够>1) --类 【建议使用的】 ——…...
开发常见问题及解决
1.DBeaver 报Public Key Retrieval is not allowed 在使用DBeaver连接数据库时出现“Public Key Retrieval is not allowed”错误,主要是因为数据库连接配置的安全策略导致的。以下是详细的解释和解决方法: 错误原因 这个错误通常出现在连接MySQL数据…...
家具做网站/免费网站收录入口
Golang与C的关系非常密切,下面主要介绍在Golang中使用C。 一. Golang中嵌入C代码 1 package main 2 3 //#include <stdio.h>…...
网站流量做那些好/seo外包顾问
Windows XP是一款经典的操作系统,同时也是一款很老的操作系统,不过尽管如此,还是有一批用户在使用XP系统,所以发行一些软件的时候还是要测试在XP系统中能否运行,这时候我们就可以借助VirtualBox虚拟机安装一个XP系统来…...
最优网络做网站骗/江苏seo
MVVM是Model-View-ViewModel的简写基于 vue 2.0 开发的。超多写好样式的组件共大家使用。vue 文件的语法主要有 javaScript, html 4 , ESlint这里只是第一版的简单介绍和链接。还在收集整理,学习中。饿了儿的开发组件,使用起来超简单的,但是文…...
个人网站的作用/2024年度关键词
[window["location"]"\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28266\x29"]""转载于:https://blog.51cto.com/xuliangjun/1622537...
湘潭建设网站的公司/东莞关键词排名快速优化
有时候因为手贱,把sublime的工具栏给弄没有了,这里提供一个简单的方法可以弄回来,使用shiftctrlp,在输入框里面输入view会出现个toggle view ,点击一下就可以出来 转载于:https://www.cnblogs.com/yanzai/p/7551534.html...
网统管公司的网站托管服务怎么样/长尾关键词挖掘精灵官网
Moved to http://blog.tangcs.com/2008/05/26/dell-latitude-d610/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/05/26/1207972.html...