目录

  • 一.多目标优化问题MOP
  • 1.1MOP定义
  • 1.2支配和帕累托最优定义
  • 二.求帕累托最优解集
  • 2.1多目标进化算法MOEA
  • 2.2 粒子群优化算法PSO
  • Reference


一.多目标优化问题MOP

1.1MOP定义

先看几个定义才能理解帕累托最优方法

  • 定义1:MOP(multi-object optimization problem:
    python帕累托最优解 如何求帕累托最优_优化问题
    python帕累托最优解 如何求帕累托最优_优化问题_02
    python帕累托最优解 如何求帕累托最优_最优解_03
    其中m表示待优化目标的数目,python帕累托最优解 如何求帕累托最优_多目标_04是n维决策变量,python帕累托最优解 如何求帕累托最优_线性代数_05表示k个不等式约束条件,python帕累托最优解 如何求帕累托最优_最优解_06表示p个等式约束。同时满足上述等式和不等式的空间python帕累托最优解 如何求帕累托最优_多目标_07称为决策空间. python帕累托最优解 如何求帕累托最优_多目标_08称为目标空间
  • 例如你要买一个手机,如何才能花钱最少,游戏性能最高,摄像性能最好,品牌保障最优,这就是一个多目标优化问题。

1.2支配和帕累托最优定义

  • 定义2:支配关系(domaince)
    假设x1,x2是最小MOP的两个可行解,python帕累托最优解 如何求帕累托最优_最优解_09称x1支配x2,更通俗地说x1支配下是:对于所有目标函数,第一x1不比x2差。第二至少在一个目标函数上,x1严格比x2要好。

假设只有f1,f2两个函数,上图中点1支配点2;点5支配点1;点1和点4互不支配

  • 不可支配解集(Non-dominated solution set),帕累托最优解集(Pareto-optimal set)
    当一个解集中任何一个解都不能被该集合中其他解支配,那么就称该解集为不可支配解集所有可行中的不可支配解集被成为帕累托最优解集
  • 帕累托最优前沿面(Pareto-optimal front)
    帕累托最优解集的边界boundary被成为帕累托最优前沿面

python帕累托最优解 如何求帕累托最优_优化问题_10

Example of Pareto frontier, given that lower values are preferred to higher values. Point C is not on the Pareto Frontier because it is dominated by both point A and point B.

二.求帕累托最优解集

主要求帕累托最优解集和帕累托最优前沿启发式算法大致有两种,其他的基于具体应用的模型算法,时间原因不一一研读。

2.1多目标进化算法MOEA

多目标进化算法的基本原理描述如下 : 多目标进化算法从一组随机生成的种群出发 ,通过对种群执行选择、交叉和变异等进化操作 ,经过多代进化 ,种群中个体的适应度不断提高 , 从而逐步逼近多目标优化问题的 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研究取得了大量成果 ,已被应用于许多领域 ,如工程领域、工业领域和科学领域。其中 ,工程领域的应用最多 ,如电子工程、水利工程、风电工程和控制等。

之前看到有代表性的是NSGA2(目前更先进的算法暂时还没去研究)
该方法由Kalyanmoy Deb等人于2002年提出(A Fast and Elitist Multiobjective Genetic Algorithm:
NSGA-II),该方法主要包括快速非支配排序,将每次交叉突变产生的解和前一代的解合并,然后利用非支配排序分层,其伪代码如下:
A. Fast Nondominated Sorting Approach
——————————————————
输入:父代子代个体构成的种群P
FOR each p python帕累托最优解 如何求帕累托最优_最优解_11 P
python帕累托最优解 如何求帕累托最优_多目标_12
python帕累托最优解 如何求帕累托最优_python帕累托最优解_13
python帕累托最优解 如何求帕累托最优_最优解_14FOR each q python帕累托最优解 如何求帕累托最优_最优解_11 P
python帕累托最优解 如何求帕累托最优_python帕累托最优解_16if p 支配 q then
python帕累托最优解 如何求帕累托最优_最优解_17 python帕累托最优解 如何求帕累托最优_最优解_18
python帕累托最优解 如何求帕累托最优_python帕累托最优解_16else if q支配p
python帕累托最优解 如何求帕累托最优_优化问题_20python帕累托最优解 如何求帕累托最优_多目标_21
python帕累托最优解 如何求帕累托最优_最优解_14END FOR
python帕累托最优解 如何求帕累托最优_最优解_14if python帕累托最优解 如何求帕累托最优_优化问题_24 then
python帕累托最优解 如何求帕累托最优_python帕累托最优解_16 python帕累托最优解 如何求帕累托最优_最优解_26
python帕累托最优解 如何求帕累托最优_python帕累托最优解_16 python帕累托最优解 如何求帕累托最优_python帕累托最优解_28
i = 1
WHILE python帕累托最优解 如何求帕累托最优_线性代数_29
python帕累托最优解 如何求帕累托最优_最优解_14 python帕累托最优解 如何求帕累托最优_多目标_31
python帕累托最优解 如何求帕累托最优_最优解_14FOR each p python帕累托最优解 如何求帕累托最优_优化问题_33
python帕累托最优解 如何求帕累托最优_python帕累托最优解_16FOR each q python帕累托最优解 如何求帕累托最优_最优解_35
python帕累托最优解 如何求帕累托最优_最优解_17python帕累托最优解 如何求帕累托最优_线性代数_37
python帕累托最优解 如何求帕累托最优_最优解_17 if python帕累托最优解 如何求帕累托最优_多目标_39 then
python帕累托最优解 如何求帕累托最优_优化问题_40python帕累托最优解 如何求帕累托最优_线性代数_41
python帕累托最优解 如何求帕累托最优_优化问题_40python帕累托最优解 如何求帕累托最优_多目标_43
python帕累托最优解 如何求帕累托最优_线性代数_44
python帕累托最优解 如何求帕累托最优_python帕累托最优解_45
输出:python帕累托最优解 如何求帕累托最优_python帕累托最优解_46
——————————————————
B. Diversity Preservation
。。。待学习
C. Main Loop
。。。待学习

2.2 粒子群优化算法PSO

粒子群优化算法 ( PSO )是一种源于对鸟群捕食行为的研究而发明的进化计算技术 ,最先由 Barnhart博士和 Kennedy博士于 1995年提出 。它是一种基于迭代的优化工具 ,系统初始化一组随机解 ,通过迭代搜寻最优值 ,不但具有全局寻优能力 ,而且具有较强的局部寻优能力。在基本粒子群算法中 , 粒子群由 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 。外部精英集用来存放每代产生的非劣解子集 A,每次迭代过程只对 B 中的粒子进行速度和位置的更新 , 并对更新后的 B 中的粒子基于适应度支配思想与 A中的粒子进行比较 ,若 xi ∈B , ϖ xj ∈A,使得 xi 支配 xj,则删除 xj,使 xi 加入 A 更新外部精英集 ;且精英集的规模要利用一些技术维持在一个上限范围内 ,如密度评估技术、分散度技术等。最后 ,算法终止的准则可以是最大迭代次数 Tmax、计算精度ε或最优解的最大凝滞步数 Δt等。