[11.7日学习记录]多目标优化和帕累托最优解集(未完成)

一.多目标优化问题MOP

1.1MOP定义

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

  • 定义1:MOP(multi-object optimization problem:
    M i n f ( x ) = ∣ f 1 ( x ) , f 2 ( x ) , f 3 ( x ) , . . . . . , f m ( x ) ∣ Min f(x) = |f_1(x),f_2(x),f_3(x),.....,f_m(x)| Minf(x)=f1(x),f2(x),f3(x),.....,fm(x)
    g i ( x ) ≤ 0 , i = 1 , 2 , . . . k g_i(x) \le0,i=1,2,...k gi(x)0,i=1,2,...k
    h j ( x ) = 0 , j = 1 , 2 , 3... p h_j(x)=0,j=1,2,3...p hj(x)=0,j=1,2,3...p
    其中m表示待优化目标的数目, x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn)是n维决策变量, g i ( x ) ≤ 0 ( i = 1 , 2.. k ) g_i(x)\le0(i=1,2..k) gi(x)0(i=1,2..k)表示k个不等式约束条件, h j ( x ) = 0 ( j = 1 , 2..... p ) h_j(x)=0(j=1,2.....p) hj(x)=0(j=1,2.....p)表示p个等式约束。同时满足上述等式和不等式的空间 R n R^n Rn称为决策空间. R m R^m Rm称为目标空间
  • 例如你要买一个手机,如何才能花钱最少,游戏性能最高,摄像性能最好,品牌保障最优,这就是一个多目标优化问题。

1.2支配和帕累托最优定义

  • 定义2:支配关系(domaince)
    假设x1,x2是最小MOP的两个可行解, 对 任 意 i = 1 , 2 , . . . . m , f i ( x 1 ) ≤ f i ( x 2 ) ∧ ∃ j ∈ [ 1 , m ] , f j ( x 1 ) < f j ( x 2 ) 对任意i=1,2,....m,f_i(x_1)\le f_i(x_2)\land\exist j \in[1,m],f_j(x_1)< f_j(x_2) i=1,2,....m,fi(x1)fi(x2)j[1,m],fj(x1)<fj(x2)称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被成为帕累托最优前沿面

在这里插入图片描述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 ∈ \in P
S p = ∅ \quad S_p =\emptyset Sp=
n p = 0 \quad n_p=0 np=0
\quad FOR each q ∈ \in P
\qquad if p 支配 q then
\qquad \quad S p ∪ q S_p \cup{q} Spq
\qquad else if q支配p
\qquad\quad n p = n p + 1 n_p = n_p+1 np=np+1
\quad END FOR
\quad if n p = 0 n_p=0 np=0 then
\qquad p r a n k = 1 p_{rank}=1 prank=1
\qquad F 1 = F 1 ∪ p F_1 = F_1\cup p F1=F1p
i = 1
WHILE F i ≠ ∅ F_i\neq \emptyset Fi=
\quad Q = ∅ Q = \emptyset Q=
\quad FOR each p ∈ F i \in F_i Fi
\qquad FOR each q ∈ S p \in S_p Sp
\qquad \quad n q = n p − 1 n_q = n_p-1 nq=np1
\qquad \quad if n q = 0 n_q=0 nq=0 then
\qquad\qquad q r a n k = i + 1 q_{rank}=i+1 qrank=i+1
\qquad\qquad Q = Q ∪ q Q = Q\cup q Q=Qq
i = i + 1 i = i +1 i=i+1
F i = Q F_i = Q Fi=Q
输出: F 1 , F 2 , . . . . . F i F_1,F_2,.....F_i F1,F2,.....Fi
——————————————————
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等。

Reference

[1].帕累托wiki百科:[wiki百科对帕累托最优的定义]【OL】(https://zh.wikipedia.org/wiki/%E6%9F%8F%E6%8B%89%E5%9C%96%E6%95%88%E7%8E%87)
[2].Huaipeng Zhao的博客对多目标优化问题的记录【OL】
[3].岳彩通等.多模态多目标优化综述.控制与决策【A】2020.11.
[4]刘建军等.基于模型的多目标优化问题方法研究。仿真建模理论与方法【A】2020.11
[5]唐云岚等.Pareto最优概念的多目标进化算法综述.计算机科学【A】2008
[6]K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, April 2002, doi: 10.1109/4235.996017.
[7]进化优化算法基于仿生和种群的计算机智能方法. 丹西蒙。

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
要在MATLAB中绘制帕累托最优解集图,可以使用以下步骤: 1. 使用多目标遗传算法函数(如gamultiobj)求解帕累托前沿解集。在这个例子中,使用的是NSGA-II算法。 2. 将求解得到的帕累托前沿解集的目标函数值和相应的变量值保存下来。 3. 使用plot函数绘制帕累托前沿解集图。 以下是一个示例代码,展示如何绘制帕累托最优解集图: ```matlab % 定义问题 fitnessfcn = @(x) [-x(1)^2 - x(2)^2 3, -(x(1)-1)^2 - (x(2)-1)^2 4]; nvars = 2; % 变量数目 lb = [0,0]; % 变量下限 ub = [2,2]; % 变量上限 % 运行遗传算法求解帕累托前沿解集 [x,fval,exitflag,output,population,scores = gamultiobj(fitnessfcn,nvars,[],[],[],[],lb,ub); % 绘制帕累托前沿解集图 paretoFrontIndices = paretofront(fval); paretoFront = fval(paretoFrontIndices,:); paretoSet = x(paretoFrontIndices,:); plot(paretoFront(:,1),paretoFront(:,2),'b*'); xlabel('目标函数1'); ylabel('目标函数2'); title('帕累托最优解集图'); ``` 请注意,这只是一个示例代码,具体的实现可能需要根据你的具体问题进行相应的调整。希望能对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [matlab多目标遗传算法的最优解集](https://blog.csdn.net/feng1790291543/article/details/131043151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [帕累托最优解集](https://blog.csdn.net/qq_39974201/article/details/106770152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值