多目标优化详解【转载】

2023-05-16

欢迎大家访问我的网站发现更多内容omegaxyz.com
多目标优化问题详解
生活中 ,许多问题都是由相互冲突和影响的多个目标组成。人们会经常遇到使多个目标在给定区域同时尽可能最佳的优化问题 ,也就是多目标优化问题。优化问题存在的优化目标超过一个并需要同时处理 ,就成为多目标优化问题。
多目标优化问题在工程应用等现实生活中非常普遍并且处于非常重要的地位 ,这些实际问题通常非常复杂、困难 ,是主要研究领域之一。自 20世纪 60年代早期以来 ,多目标优化问题吸引了越来越多不同背景研究人员的注意力。因此 ,解决多目标优化问题具有非常重要的科研价值和实际意义。
实际中优化问题大多数是多目标优化问题 ,一般情况下 ,多目标优化问题的各个子目标之间是矛盾的 ,一个子目标的改善有可能会引起另一个或者另几个子目标的性能降低 , 也就是要同时使多个子目标一起达到最优值是不可能的 , 而只能在它们中间进行协调和折中处理 , 使各个子目标都尽可能地达到最优化。其与单目标优化问题的本质区别在于 ,它的解并非唯一 ,而是存在一组由众多 Pareto最优解组成的最优解集合 ,集合中的各个元素称为 Pareto最优解或非劣最优解。

1 多目标优化问题的描述
多目标优化问题用文字描述为 D 个决策变量参数、N 个目标函数、m + n个约束条件组成一个优化问题 ,决策变量与目标函数、约束条件是函数关系。在非劣解集中决策者只能根据具体问题要求选择令其满意的一个非劣解作为最终解。多目标优化问题的数学形式可以如下描述 [1 ] :

min y = f( x) = [ f1 ( x) , f2 ( x) , …, fn ( x) ]
n = 1, 2, …, N
s. t.  gi ( x) ≤0 i = 1, 2, …, m hj ( x) = 0 j = 1, 2, …, k
x = [ x1 , x2 , …, xd , …, xD ]
xd_min ≤xd ≤xd_max d = 1, 2, …, D

其中: x为 D维决策向量 , y为目标向量 , N 为优化目标总数 ; gi
( x) ≤0为第 i个不等式约束 , hj ( x) = 0为第 j个等式约束 , fn
( x)为第 n个目标函数; X是决策向量形成的决定空间 , Y是目标向量形成的目标空间。gi ( x) ≤0和 hj ( x) = 0确定了解的可行域 , xd_max和 xd_m in为每维向量搜索的上下限。

对于多目标优化问题中最优解或非劣最优解可进行如下定义 :
定义 1 f(x)的支配关系与 x的支配关系是一致的。
定义 2 Pareto最优解是不被可行解集中的任何解支配的
解 ,若 x3 是搜索空间中一点 ,说 x3 为非劣最优解 ,当且仅当不存在 x (在搜索空间可行性域中 )使得 fn ( x) ≤fn ( x3 )成立 ,
n = 1, 2, …, N。
定义 3 给定一个多目标优化问题 f( x) , f ( x3 )是全局最优解当且仅当对任意 x (在搜索空间中 ) ,都有 f( x3 ) ≤f( x) 。
定义 4 由所有非劣最优解组成的集合称为多目标优化问题的最优解集 ( Pareto op timal set) ,也称为可接受解集或有效解集。

2 不同算法在多目标优化中的应用
多目标优化问题不存在唯一的全局最优解 ,过多的非劣解是无法直接应用的 ,所以在求解时就是要寻找一个最终解。求最终解主要有三类方法 :
a)生成法 ,即先求出大量的非劣解 ,构成非劣解的一个子集 ,然后按照决策者的意图找出最终解 ;
b)为交互法 ,不先求出很多的非劣解 ,而是通过分析者与决策者对话的方式逐步求出最终解 ;
c)是事先要求决策者提供目标之间的相对重要程度 ,算法以此为依据 ,将多目标问题转换为单目标问题进行求解。而这些主要是通过算法来实现的 ,一直以来很多专家学者采用不同算法解决多目标优化问题 ,如多目标进化算法、多目标粒子群算法和蚁群算法、模拟退火算法及人工免疫系统等。

多目标进化算法
多目标进化算法 (MOEA )是一类模拟生物进化机制而形成的全局性概率优化搜索方法 ,在 20世纪 90年代中期开始迅速发展 ,其发展可以分为两个阶段。第一阶段主要有两种方法即不基于 Pareto优化的方法和基于 Pareto优化的方法 ;第二个阶段就是在此基础上提出了外部集这个概念 ,外部集存放的是当前代的所有非支配个体 ,从而使解集保持较好的分布度。这个时期提出的多目标进化算法更多地强调算法的效率和有效性。在这两个阶段中 , 比较典型的多目标进化算法有 NS2 GA2[ 3 ]、PESA2和 SPEA2。对于这三种算法而言 ,其优点较多但是其缺点也比较明显的。如 NSGA2的优点在于运行效率高、解集有良好的分布性 ,特别对于低维优化问题具有较好的表现 ;其缺点在于在高维问题中解集过程具有缺陷 ,解集的多样性不理想。PESA2的优点在于其解的收敛性很好 ,比较容易接近最优面 ,特别是在高维问题情况下 ;但其不足之处在于选择操作一次只能选取一个个体 ,时间消耗很大 ,而且阶级的多样性不佳。SPEA2的优点在于可以取得一个分布度很好的解集 ,特别是在高维问题的求解上 ,但是其聚类过程保持多样性耗时较长 ,运行效率不高。
多目标进化算法的基本原理描述如下 : 多目标进化算法从一组随机生成的种群出发 ,通过对种群执行选择、交叉和变异等进化操作 ,经过多代进化 ,种群中个体的适应度不断提高 ,
从而逐步逼近多目标优化问题的 Pareto最优解集。与单目标进化算法不同 ,多目标进化算法具有特殊的适应度评价机制。为了充分发挥进化算法的群体搜索优势 ,大多数 MOEA均采用基于 Pareto排序的适应度评价方法。在实际应用中 ,为使算法更好地收敛到多目标优化问题的 Pareto最优解 ,现有的MOEA通常还采用了精英策略、小生境和设置外部集等关键技术。
MOEA一般框架所描述的算法思想如下 : MOEA通过对种群 X ( t)执行选择、交叉和变异等操作产生下一代种群 X ( t + 1) 。在每一代进化过程中 ,首先将种群 X ( t)中的所有非劣解个体都复制到外部集 A ( t)中 ,然后运用小生境截断算子剔除A ( t)中的劣解和一些距离较近的非劣解个体 ,以得到个体分布更为均匀的下一代外部集 A ( t + 1) ,并且按照概率 pe从 A ( t + 1)中选择一定数量的优秀个体进入下代种群。在进化结束时 ,将外部集
中的非劣解个体作为最优解输出 , 目前 , MOEA研究取得了大量成果 ,已被应用于许多领域 ,如工程领域、工业领域和科学领域。其中 ,工程领域的应用最多 ,如电子工程、水利工程、风电工程和控制等。

多目标粒子群算法
粒子群优化算法 ( PSO )是一种源于对鸟群捕食行为的研究而发明的进化计算技术 ,最先由 Barnhart博士和 Kennedy博士于 1995年提出 [ 7 ]。它是一种基于迭代的优化工具 ,系统初始化一组随机解 ,通过迭代搜寻最优值 ,不但具有全局寻优能力 ,而且具有较强的局部寻优能力。在基本粒子群算法 [ 8, 9 ]中 , 粒子群由 n个粒子组成 ,每个粒子的位置 xi 代表优化问题在 D维搜索空间中潜在的解。粒子在搜索空间中以一定的速度飞行 , 这个速度根据它本身的飞行经验和同伴的飞行经验来动态调整下一步飞行方向和距离。所有的粒子都有一个被目标函数决定的适应值 , 并且知道自己到目前为止发现的最好位置 (个体极值 pi )和当前的位置 ( xi ) 。除此之外 , 每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(全局极值 pg ) , 是所有最好位置中的最优值
粒子群算法的数学描述如下 :每个粒子 i包含为一个 D维的位置向量 xi = ( xi1 , xi2 , …, xiD )和速度向量 vi = ( vi1 , vi2 ,…, viD ) ,粒子 i搜索解空间时 ,保存其搜索到的最优经历位置pi = ( pi1 , pi2 , …, piD ) 。在每次迭代开始时 ,粒子根据自身惯性和经验及群体最优经历位置 pg = ( pg1 , pg2 , …, pgD )来调整自己的速度向量以调整自身位置。 c1、c2 是正常数 , 称之为加速因子 ; r1、r2 为 [ 0, 1 ]中均匀分布的随机数 , d为 D维中的维数 ;ω是惯性权重因子。由于粒子群算法具有高效的搜索能力 , 有利于得到多目标意义下的最优解 ;通过代表整个解集种群 ,按并行方式同时搜索多个非劣解 ,也即搜索到多个 Pareto最优解 ;同时 ,粒子群算法的通用性比较好 ,适合处理多种类型的目标函数和约束 ,并且容易与传统的优化方法结合 ,从而改进自身的局限性 ,更高效地解决问题。因此 ,将粒子群算法应用于解决多目标优化问题上具有很大的优势。
粒子群算法思想描述如下 :初始化种群后 ,种群的大小记为 N。基于适应度支配的思想 ,将种群划分成两个子群 ,一个称为非支配子集 A,另一个称为支配子集 B ,两个子集的基数分别为 n1、n2 ,满足两个子群基数之和为 N [13 ]。外部精英集用来存放每代产生的非劣解子集 A,每次迭代过程只对 B 中的粒子进行速度和位置的更新 , 并对更新后的 B 中的粒子基于适应度支配思想与 A中的粒子进行比较 ,若 xi ∈B , ϖ xj ∈A,使得
xi 支配 xj,则删除 xj,使 xi 加入 A 更新外部精英集 ;且精英集的规模要利用一些技术维持在一个上限范围内 ,如密度评估技术、分散度技术等。最后 ,算法终止的准则可以是最大迭代次数 Tmax、计算精度ε或最优解的最大凝滞步数 Δt等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多目标优化详解【转载】 的相关文章

  • 计算机系统概论基本知识

    目录 chapter0 chapter1 binary system chapter2 chapter3 chapter4 chapter5 Pseudo Code or Program Design Language way to use
  • NSGA-Ⅱ算法C++实现(测试函数为ZDT1)

    在看C 43 43 实现之前 xff0c 请先看一下NSGA II算法概述 http www omegaxyz com 2017 04 14 nsga iiintro NSGA 就是在第一代非支配排序遗传算法的基础上改进而来 xff0c 其
  • 数据结构Huffman树及编码

    欢迎关注我的网站 xff1a http www omegaxyz com 一 实验目的 构造一个哈夫曼树 xff0c 并根据所构造的哈夫曼树求其哈夫曼树的编码 xff1b 二 基本思路 将每个英文字母依照出现频率由小排到大 xff0c 最小
  • 迷宫问题的通用解法C语言数据结构实现

    1 1问题描述 以一个m n的长方阵表示迷宫 xff0c 0和1分别表示迷宫中的通路和障碍 设计一个程序 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 1 2基本要求 输入的形式和范
  • 如何用wordpress搭建个人博客

    欢迎访问我的网站 xff1a omegaxyz com WordPress是一种使用PHP语言开发的博客平台 xff0c 用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站 也可以把 WordPress当作一个内容管理系统
  • 课程设计哈夫曼编/译码系统

    欢迎访问我的网站 xff1a omegaxyz com 问题描述 xff1a 利用哈夫曼编码进行通信可以大大提高信道利用率 xff0c 缩短信息传输时间 xff0c 降低传输成本 但是 xff0c 这要求在发送端通过一个编码系统对待传数据预
  • JAVA“类”数组的创建与调用

    JAVA 类 数组的创建与调用和C 43 43 相比是不同的 先看这样一个类数组的创建 注 xff1a bookFeature 是一个类 错误1 xff1a class bookList span class hljs keyword pr
  • JAVA继承与多态概述

    更多JAVA及高级语言编程内容请访问omegaxyz com 1 可以从现有的类定义新的类 xff0c 这称为类的继承 新类称为次类 子类或继承类现有的类称为超类 父类或基类 2 构造方法用来构造类的实例 不同于属性和方法 xff0c 子类
  • 课程设计旅游景点咨询系统

    欢迎访问我的网站 xff1a omegaxyz com 问题描述 xff1a 创建一个至少有15个点的有向网表示的某个旅游景点的导游图 顶点代表景点 类型为字符串 xff08 例如 xff0c 泰山导游图 xff1a 天地广场门 xff0c
  • Android Studio程序无法加载到虚拟机解决方法

    阅读原文 xff1a 我的博客 xff1a omegaxyz com 安装玩Android studio之后创建一个项目 hello world 具体描述为 xff1a Waiting for target device to come o
  • windows系统C盘越来越大怎么办(包括win10)

    欢迎访问我的网站 xff1a omegaxyz com 对于Mac电脑来说 xff0c 不必太过担心垃圾清理 至于Windows用户电脑垃圾会越来越多 使用360和CCleaner已经满足不了用户的需求了 另外Win10在更新过程中会产生许
  • 企业信息化IT架构方法

    一 顶层业务架构 上 xff1a 打通上游供应商 中 xff1a 打通内部各业务部门 xff1b 打通各业务部门和财务部门 中 xff1a 打通各地区域 分支机构 下 xff1a 打通仓储物流 渠道分销 服务商 外 xff1a 打通电子商务
  • 教你用python高效刷leetcode

    由于Python语法的简洁性 xff0c 用python来刷leetcode往往能用比别的语言更少的代码量AC 但是如果不是对python很熟悉就会比较尴尬了 xff0c 如果有些功能明明有高效的内置方法因为不知道要自己实现 或者不了解其复
  • C语言和JAVA的区别在哪里?

    欢迎访问我的网站 xff1a omegaxyz com 1 Java与C语言各自的优势 C语言是面向过程的语言 xff0c 执行效率高 Java是面向对象的语言 xff0c 执行效率比C语言低 C语言最关键的是比Java多了指针 xff0c
  • 一分钟认识JAVA与Android的联系与区别

    欢迎访问我的网站 xff1a omegaxyz com Android是一种以Linux为基础的开放源码操作系统 JAVA是一种面向对象的编程语言 Android上的应用大多数是用JAVA开发的 xff0c 但是Android SDK引用了
  • 什么是前端开发工程师?

    欢迎访问我的网站 xff1a omegaxyz com 概述 前端工程师 xff0c 也叫Web前端开发工程师 他是随着web发展 xff0c 细分出来的行业 Web前端开发技术主要包括三个要素 xff1a HTML CSS和JavaScr
  • MATLAB常用数学函数

    欢迎访问我的网站 xff1a omegaxyz com abs x xff1a 纯量的绝对值或向量的长度 angle z xff1a 复数z的相角 Phase angle sqrt x xff1a 开平方 real z xff1a 复数z的
  • JAVA入门

    欢迎访问我的网站 xff1a omegaxyz com 工欲善其事 xff0c 必先利其器 首先先要下载JAVA IDE xff08 集成开发环境 xff08 IDE xff0c Integrated Development Environ
  • 编程语言(C语言,JAVA),程序设计,APP开发,算法

    更多精彩内容访问 我的网站omegaxyz com 或者关注我的公众号图灵技术域
  • 利用JavaScript批量删除QQ空间说说(只需一个浏览器)

    每个人都有历史 xff0c 记录说说是保存瞬间思想的最好方式 xff0c 但时间久了 xff0c 我们发现从前的灵光闪现是多么的好笑 xff0c 于是我们开始删说说 xff0c 可是说说那么多 xff0c 哎算了重注册一个QQ号吧 别这样

随机推荐

  • 浅析计算机科学在经济犯罪中的特征与表现

    原创文章 xff0c 转载请注明出处 xff1a http www omegaxyz com 2017 06 27 ecocriminallawessay 摘要 xff1a 大数据时代已经来临 与此同时计算机经济犯罪也呈现愈演愈烈的势态 它
  • 稳定排序和不稳定排序

    选择排序 快速排序 希尔排序 堆排序不是稳定的排序算法 xff0c 而冒泡排序 插入排序 归并排序和基数排序是稳定的排序算法 首先 xff0c 排序算法的稳定性大家应该都知道 xff0c 通俗地讲就是能保证排序前2个相等的数其在序列的前后位
  • 程序员必备网站

    1 CSDN http www csdn net CSDN Chinese Software Developer Network 创立于1999年 xff0c 是中国最大的IT社区和服务平台 xff0c 为中国的软件开发者和IT从业者提供知
  • ora 01017问题解决办法

    SQL gt startup ORACLE instance started Total System Global Area 914358272 bytes Fixed Size 2088184 bytes Variable Size 5
  • 数据结构串的基本操作及KMP算法

    将串的基本操作C语言实现 xff0c 实现KMP算法算出NEXT函数和NEXTVAL的值 SqString h的基本内容 span class hljs keyword typedef span span class hljs keywor
  • JAVA经典面试题(来源于互联网)

    面向对象编程 xff08 OOP xff09 Java是一个支持并发 基于类和面向对象的计算机编程语言 下面列出了面向对象软件开发的优点 xff1a 代码开发模块化 xff0c 更易维护和修改 代码复用 增强代码的可靠性和灵活性 增加代码的
  • 规则绝对公平时,社会财富的流向谁?

    从知乎有一个很有趣的问题 xff1a 房间里有100个人 xff0c 每人都有100元钱 xff0c 如果每过一分钟 xff0c 每个人都要拿出一元钱随机给另一个人 xff0c 最后这100个人的财富分布是怎样的 xff1f 这个问题 xf
  • 2017程序员综合素质调研测试

    只要志愿选得好 xff0c 年年期末是高考 高等数学 线性代数 C语言 计算机导论 数据结构 离散数学 电子技术 C 43 43 程序设计 汇编语言程序设计 计算机组成原理 编译原理 操作系统 数据库原理 JAVA程序设计 Python 下
  • 机器学习非平衡数据集概述

    定义 xff1a 不平衡数据集 xff1a 在分类等问题中 xff0c 正负样本 xff0c 或者各个类别的样本数目不一致 研究不平衡类通常认为不平衡意味着少数类只占比10 20 实际上 xff0c 一些数据集远比这更不平衡 例如 xff1
  • 汇编语言32位加减乘除运算题

    用16位指令编制程序 xff0c 处理32位的加减乘除算术四则运算题 本文计算 xff08 3 X 43 Y Z xff09 5的值 值分别为 xff1a span class hljs built in x span dw span cl
  • 汇编语言字符串比较与查找

    答案仅供参考 xff0c 大家还是自己写比较好 汇编语言实现 用字符串处理指令编制程序 xff0c 处理字符串的比较和查找 xff0c 显示结果 要求 xff1a xff08 1 xff09 字符串的比较函数中 xff0c 一个字符串在数据
  • 汇编语言数据段查找ASCII码并回显

    实验要求 xff1a 在数据段预先存放16个十六进制的ASCII码 xff0c 首地址为ASC 从键盘输入一位十六进制数到BX xff0c 用ASC BX xff08 寄存器相对寻址 xff09 寻址方式找到对应数位的ASCII码 xff0
  • 汇编语言将正负数复制到不同的数组

    分离字数组ARRAY中的正 xff0c 负数 xff0c 把其中的正数复制到PDATA数组 xff1a 负数复制到NDATA数组 xff0c 并分别统计正 负数个数 DATAS SEGMENT array dw span class hlj
  • JAVA工程师最新面试题(来源于互联网)

    面向对象编程 xff08 OOP xff09 Java是一个支持并发 基于类和面向对象的计算机编程语言 下面列出了面向对象软件开发的优点 xff1a 代码开发模块化 xff0c 更易维护和修改 代码复用 增强代码的可靠性和灵活性 增加代码的
  • 关于内存溢出异常的查看以及解决办法

    内存溢出 又称为OOM OutOfMemoryError 处理内存溢出 首先要查看是否是由于内存泄露 Memory Leak 造成的内存溢出 Memory Overflow 可以使用内存影响分析工具 如 Eclipse Memory Ana
  • JAVA基本程序设计规范

    1 标识符是程序中用于命名诸如变量 常量 方法 类 包之类元素的名称 2 标识符是由字母 数字 下划线 和美元符号 构成的字符序列 标识符必须以字母或下划 开头 xff0c 不能以数字开头 标识符不能是保留字 标识符可以为任意长度 3 变量
  • 多目标优化问题概述

    图片不清楚请看多目标问题详解 xff1a 多目标问题详解 更多内容访问omegaxyz com 定义 xff1a 若干冲突或相互影响条件约束下在给定区域内寻找尽可能的最优解 xff08 非劣解 xff09 关键词 xff1a 条件约束 xf
  • NSGA2算法中文版详细介绍

    NSGA2主要是对NSGA算法的改进 NSGA是N Srinivas 和 K Deb在1995年发表的一篇名为 Multiobjective function optimization using nondominated sorting
  • 特征选择算法综述

    特征选择 xff08 feature selection xff09 作为一种常见的降维方法是模式识别的研究热点之一 它是指从原始特征集中选择使某种评估标准最优的特征子集 其目的是使选出的最优特征子集所构建的分类或回归模型达到和特征选择前近
  • 多目标优化详解【转载】

    欢迎大家访问我的网站发现更多内容omegaxyz com 多目标优化问题详解 生活中 许多问题都是由相互冲突和影响的多个目标组成 人们会经常遇到使多个目标在给定区域同时尽可能最佳的优化问题 也就是多目标优化问题 优化问题存在的优化目标超过一