多目标优化学习笔记2:MOPSO 基本概念及计算流程

2024-02-15 12:18

本文主要是介绍多目标优化学习笔记2:MOPSO 基本概念及计算流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多目标优化(Multi-objective Optimization)是指迭代搜寻出能够满足所有约束
条件的解,而且可行解都是以点集的形式出现。
多目标优化的可行解是一组可选的可行解,是帕累托前沿线上的点。根据实际需求,在可选解集中挑选出符合实际问题的方案,做出最终选择。

CarlosA. Coello 等在2004年加入Pareto 竞争机制和微粒知识库的多目标粒子群(MOPSO)算法是解决多目标问题的非常经典的方法。较PSO有两个创新点。
基本思想:通过群体中个体之间的协作和信息共享来寻找最优解,它包含有进化计算和群体智能的特点。
关于非支配解(Pareto解)、pareto最优解集,pareto前沿的概念,请移步我前一篇文章
简述多目标优化、非劣解、pareto解概念

一 基本概念

MOPSO算法涉及到的参变量主要有:
粒子群数量;迭代次数;例子的速度范围、位置范围;适应度值;存档阈值;惯性因子;速度因子;网格。
控制参数的选择能够影响算法的性能效率。
一般参数设定:粒子数50个,非劣解集个数上限为50,个体学习因子 C1为 1,群体学习因
C2为 2,变异因子为 0.1,最大迭代次数为 200。

二,单目标和多目标的区别

MOPSO算法与PSO算法的区别主要涉及两个方面:
1,pbest的确定
单目标选择时,两个粒子的对比,只需要对比一下就可以选择出哪个较优。
多目标选择时,两个粒子的对比,并不能对比出哪个好一些。如果粒子的每个目标都要好的话,则该粒子更优。若有些更好,有些更差的话,就无法严格的说哪个好些,哪个差一些。
2,gbest的确定
单目标选择时,选择最优的那个粒子就可以。
多目标选择时,最优的个体有多个,引领种群进化方向的引领者不唯一,是多个。

MOPSO给出的解决方法
1,对于pbest
在不能严格对比出哪个好一些时随机选择一个其中一个作为历史最优。
2,对于gbest
在最优集里面(存档中)根据拥挤程度选择一个领导者。尽量选择不那么密集位置的粒子(在这里用到了网格法)。
MOPSO在选择领导者和对存档(也可以说是pareto临时最优断面)进行更新的时候应用了自适应网格法,详细参考2。
如何选择领带者呢?

MOPSO在存档中选择一个粒子跟随。如何选择呢?根据网格划分,假设每个网格中粒子数个,i代表第几个网格。该网格中的粒子被选择的概率为 ,即粒子越拥挤,则选择的概率越低。这是为了保证能够对未知的区域进行探索。
如何进行存档呢?

在种群更新完成之后,是如何进行存档的呢?MOPSO进行了三轮筛选。

首先,根据支配关系进行第一轮筛选,将劣解去除,剩下的加入到存档中。

其次,在存档中根据支配关系进行第二轮筛选,将劣解去除,并计算存档粒子在网格中的位置。

最后,若存档数量超过了存档阀值,则根据自适应网格进行筛选,直到阀值限额为止。重新进行网格划分。

三、MOPSO的计算步骤

MOPSO的计算步骤共7个步骤:
1,初始化
需要初始化的参数:
2,更新速度V和x

3,计算适应度

4,更新pbest

5,更新存档
1>第一轮:根据支配关系进行第一轮筛选,将劣解去除,得到Parto最优解集,加入到存档中。这时该存档中包含了旧一代种群的存档和新一代种群存档的集合。适应度集合也包含了新旧两代的

2>第二轮:在包含两代的存档中的粒子群根据支配关系进行第二轮筛选,将劣解去除,并计算存档粒子在网格中的位置

3>第三轮:若经过第二轮后,存档数量超过了存档阈值,则根据自适应网格法进行清除,拥挤度越高,被清除的概率越高,重新进行网格划分

6,更新全局最优gbest

7,循环2-6步骤,直至满足循环结束条件。

参考:1,MOPSO算法思路和基本定义梳理
2,对多目标粒子群算法MOPSO的理解

这篇关于多目标优化学习笔记2:MOPSO 基本概念及计算流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/711365

相关文章

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每