利用NSGA-II算法求解多元多目标函数优化问题

一、问题描述

利用进化多目标优化算法NSGA-II求解多目标函数优化问题,选择三个多目标优化问题(包括函数表达式、决策变量取值范围)进行求解。本文选取两目标优化ZDT问题集中的三个问题,ZDT问题集均基于以下f1和f2的优化,其表达式如下,其中g(x)一般是收敛的。

min ⁡ f 1 ( x ) \min f _ { 1 } ( x ) minf1(x)
min ⁡ f 2 ( x ) = g ( x ) h ( f 1 ( x ) , g ( x ) ) \min f _ { 2 } ( x ) = g ( x ) h \left( f _ { 1 } ( x ) , g ( x ) \right) minf2(x)=g(x)h(f1(x),g(x))

选取的三个函数分别为:

ZDT1: f 1 ( x ) = x 1 g ( x ) = 1 + 9 n − 1 ∑ i = 2 n x i h ( f 1 , g ) = 1 − f 1 / g 0 ≤ x i ≤ 1 i = 1 , … , n \begin{aligned} f _ { 1 } ( x ) & = x _ { 1 } \\ g ( x ) & = 1 + \frac { 9 } { n - 1 } \sum _ { i = 2 } ^ { n } x _ { i } \\ h \left( f _ { 1 } , g \right) & = 1 - \sqrt { f _ { 1 } / g } \\ 0 \leq x _ { i } & \leq 1 \quad i = 1 , \ldots , n \end{aligned} f1(x)g(x)h(f1,g)0xi=x1=1+n19i=2nxi=1f1/g 1i=1,,n

ZDT2: f 1 ( x ) = x 1 g ( x ) = 1 + 9 n − 1 ∑ i = 2 n x i h ( f 1 , g ) = 1 − ( f 1 / g ) 2 0 ≤ x i ≤ 1 i = 1 , … , n \begin{aligned} f _ { 1 } ( x ) & = x _ { 1 } \\ g ( x ) & = 1 + \frac { 9 } { n - 1 } \sum _ { i = 2 } ^ { n } x _ { i } \\ h \left( f _ { 1 } , g \right) & = 1 - \left( f _ { 1 } / g \right) ^ { 2 } \\ 0 \leq x _ { i } & \leq 1 \quad i = 1 , \ldots , n \end{aligned} f1(x)g(x)h(f1,g)0xi=x1=1+n19i=2nxi=1(f1/g)21i=1,,n

ZDT4: f 1 ( x ) = x 1 g ( x ) = 1 + 10 ( n − 1 ) + ∑ i = 2 n ( x i 2 − 10 cos ⁡ ( 4 π x i ) ) h ( f 1 , g ) = 1 − f 1 / g 0 ≤ x 1 ≤ 1 − 10 ≤ x i ≤ 10 i = 2 , … , n \begin{array} { r l } { f _ { 1 } ( x ) = } & { x _ { 1 } } \\ { g ( x ) = } & { 1 + 10 ( n - 1 ) + \sum _ { i = 2 } ^ { n } \left( x _ { i } ^ { 2 } - 10 \cos \left( 4 \pi x _ { i } \right) \right) } \\ { h \left( f _ { 1 } , g \right) = 1 - \sqrt { f _ { 1 } / g } } & { } \\ { } & { 0 \leq x _ { 1 } \leq 1 } \\ { - 10 \leq x _ { i } \leq 10 } & { i = 2 , \ldots , n } \end{array} f1(x)=g(x)=h(f1,g)=1f1/g 10xi10x11+10(n1)+i=2n(xi210cos(4πxi))0x11i=2,,n

二、解决思路和方案

NSGA-II算法适合应用于复杂的、多目标优化问题,其解决了NSGA的主要缺陷,实现快速、准确的搜索性能。NSGA的非支配排序的时间复杂度很大,在种群规模较大时排序的速度会很慢,而NSGA-II使用带精英策略的快速非支配排序,减小了时间复杂度,排序速度有大幅的提升。同时,精英策略保证找到的最优解不会被抛弃,提高了搜索性能。另一方面NSGA使用共享函数来使解分布均匀,共享函数方法在保持多样性的性能很大程度上依赖于所选择的共享参数;种群中的每个个体都要与其余的个体相比较,共享函数的复杂度很高,NSGA-II重新定义了拥挤距离来代替共享参数。NSGA-II算法步骤如下:

(1)首先,采用实数编码方法随机产生规模为50的初始种群pop,利用二元锦标赛方法(对pop中个体进行快速非支配排序和拥挤距离比较)产生父代种群P。

快速非支配排序结果的排序值越小,说明被被其余个体支配的次数越小,有着越大的概率被选择。拥挤距离的计算方法为该个体与相邻的两个个体组成的矩形的长宽和。在排序值相同的情况下,保留拥挤距离更大的个体。

(2)通过交叉、变异操作得到子代种群Q,将父代种群P与子代种群Q合并为R。

交叉采用模拟二进制交叉方法(SBX),交叉分布指数设置为1。变异采用单点变异,变异算子设置为0.1。

(3)利用精英策略产生下一代种群,即对R中个体进行快速非支配排序,同时对每个非支配层中的个体进行拥挤度计算,根据非支配关系以及个体的拥挤度选取合适的个体组成下一代种群。设置迭代次数为500。

本文使用python语言进行仿真实现,求解每个最优化函数的最优前端,将其可视化。

三、仿真结果及分析

(1)ZDT1 仿真结果

ZDT1经过500次迭代,最优前端由蓝点绘制而成,绿色的为理论参考集,可以看到求解结果和理论值基本吻合,且前端的分布比较均匀。其他函数同,其他函数便不进行解释,只进行结果展示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4CO5Nmx-1574172455672)(C:\Users\Mr.Hou\AppData\Roaming\Typora\typora-user-images\1574041575122.png)]

图3.1 ZDT1最优前端

(2)ZDT2仿真结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CotxvvYF-1574172455674)(C:\Users\Mr.Hou\AppData\Roaming\Typora\typora-user-images\1574042236900.png)]

图3.2 ZDT2最优前端

(3)ZDT4 仿真结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4RvFqRVv-1574172455675)(C:\Users\Mr.Hou\AppData\Roaming\Typora\typora-user-images\1574048068122.png)]
图3.3 ZDT4最优前端

  • 3
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NSGA-II(非支配排序遗传算法II)是一种经典的多目标优化算法。为了改进NSGA-II算法,在算法的选择、交叉和变异操作中引入了一些改进策略,以提高算法的性能和收敛速度。 在选择操作中,可以采用非支配排序与拥挤度计算相结合的方式来选择个体。非支配排序可以根据个体的非支配等级来判断其优劣,拥挤度计算可以评估个体在目标空间的分布情况,从而保证选择中既考虑到了个体的优越性,又考虑到了多样性。 在交叉操作中,可以采用模拟二进制杂交(SBX)算子,该算子能够在保证交换基因的多样性的同时,保持了较好的搜索效果。通过调整交叉概率和交叉分布指数参数,可以控制交叉操作的强度。 在变异操作中,可以采用多项式变异算子,该算子能够在演化过程中维持一定的多样性,从而获取更多的解集。通过调整变异概率和变异分布指数参数,可以控制变异操作的强度。 为了验证改进的NSGA-II算法,可以使用ZDT(Zitzler-Deb-Thiele)测试函数集进行测试。ZDT函数集是一组常用于评估多目标优化算法性能的标准测试函数。通过在Matlab中实现改进后的NSGA-II算法,并将其应用于ZDT函数集,可以对算法优化效果进行评估和比较。 在实验中,可以通过比较改进NSGA-II算法得到的Pareto前沿集和真实前沿集之间的距离来评估算法的性能。距离越小说明算法的收敛性和准确性越好。同时,还可以比较算法在不同测试函数上的表现,从而进一步分析算法的优劣。 总之,通过改进NSGA-II算法并使用ZDT测试函数集在Matlab中进行验证,可以评估改进算法的性能,并对其进行比较和分析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值