目录

  • 常规归一化操作
  • 种群个体的自适应归一化操作
    • 计算种群理想点
    • 转换种群目标函数值
    • 计算每个坐标轴对应的极值点
    • 计算超平面与坐标轴的截距
    • 归一化种群目标函数值
    • 种群自适应归一化操作伪代码
  • NSGA-Ⅲ代码获取方式
  • 参考文献
  • 近期你可能错过了的好文章

上个月我们在多目标优化 | NSGA-Ⅲ(上篇,附MATLAB代码)这篇推文中,为各位回顾了NSGA-Ⅱ,同时也讲解了多目标优化算法NSGA-Ⅲ中的参考点生成方法。今天我们书接上回,为各位讲解NSGA-Ⅲ中的种群个体的自适应归一化操作

首先需要明确一个问题,为什么需要进行归一化处理?

答:由于后面我们将每一个解和参考点相互联系从而维持种群多样性,参考点又是均匀分布在目标空间的,而每个解的各个目标函数尺度不一样导致解的偏向性不一样,比如目标函数 f 1 f_{1} f1​的范围为 [ 0 , 1 ] [0,1] [0,1],目标函数 f 2 f_{2} f2​的范围为 [ 0 , 100 ] [0,100] [0,100],那么在联系解和参考点时, f 1 f_{1} f1​和 f 2 f_{2} f2​起的作用就不“公平”了。(参考[7])

目录

  1. 常规归一化操作
  2. 种群个体的自适应归一化操作
  3. NSGA-Ⅲ代码获取方式
  4. 参考文献

常规归一化操作

在生成若干参考点后,接下来需要对种群中个体的目标函数值进行归一化操作。常规归一化操作的公式如下:
f i , j n = f i , j − f i min ⁡ f i max ⁡ − f i min ⁡ i = 1 , 2 , ⋯ , M , j = 1 , 2 , ⋯ , N f_{i,j}^{n}=\frac{f_{i,j}-f_{i}^{\min }}{f_{i}^{\max }-f_{i}^{\min }} \quad i=1,2, \cdots, M, \quad j=1,2, \cdots, N fi,jn​=fimax​−fimin​fi,j​−fimin​​i=1,2,⋯,M,j=1,2,⋯,N
其中, f i , j n f_{i,j}^{n} fi,jn​表示第 j j j个个体第 i i i个目标归一化处理后的目标函数值, f i , j f_{i,j} fi,j​第 j j j个个体第 i i i个目标归一化处理前的目标函数值, f i min ⁡ f_{i}^{\min } fimin​表示种群个体中第 i i i个目标的最小值目标函数值, f i max ⁡ f_{i}^{\max } fimax​表示种群个体中第 i i i个目标的最大值目标函数值, M M M表示目标函数值维数, N N N表示种群数目。

**【举例】**假设种群中有3个个体,这3个体的目标函数值分别为 ( 1 , 6 ) (1,6) (1,6)、 ( 2 , 5 ) (2,5) (2,5)、 ( 3 , 4 ) (3,4) (3,4),则采用上述公式对这三个个体进行归一化操作的计算过程如下:
第 1 维目标函数值的最小值 f 1 min ⁡ = m i n ( 1 , 2 , 3 ) = 1 第1维目标函数值的最小值f_{1}^{\min}=min(1,2,3)=1 第1维目标函数值的最小值f1min​=min(1,2,3)=1

第 1 维目标函数值的最大值 f 1 max ⁡ = m a x ( 1 , 2 , 3 ) = 3 第1维目标函数值的最大值f_{1}^{\max}=max(1,2,3)=3 第1维目标函数值的最大值f1max​=max(1,2,3)=3

第 2 维目标函数值的最小值 f 2 min ⁡ = m i n ( 6 , 5 , 4 ) = 4 第2维目标函数值的最小值f_{2}^{\min}=min(6,5,4)=4 第2维目标函数值的最小值f2min​=min(6,5,4)=4

第 2 维目标函数值的最大值 f 2 max ⁡ = m a x ( 6 , 5 , 4 ) = 6 第2维目标函数值的最大值f_{2}^{\max}=max(6,5,4)=6 第2维目标函数值的最大值f2max​=max(6,5,4)=6

个体 1 归一化处理后的第 1 维目标函数值 f 1 , 1 n = f 1 , 1 − f 1 min ⁡ f 1 max ⁡ − f 1 min ⁡ = 1 − 1 3 − 1 = 0 个体1归一化处理后的第1维目标函数值f_{1,1}^{n}=\frac{f_{1,1}-f_{1}^{\min }}{f_{1}^{\max }-f_{1}^{\min }}=\frac{1-1}{3-1}=0 个体1归一化处理后的第1维目标函数值f1,1n​=f1max​−f1min​f1,1​−f1min​​=3−11−1​=0

个体 1 归一化处理后的第 2 维目标函数值 f 2 , 1 n = f 2 , 1 − f 2 min ⁡ f 2 max ⁡ − f 2 min ⁡ = 6 − 4 6 − 4 = 1 个体1归一化处理后的第2维目标函数值f_{2,1}^{n}=\frac{f_{2,1}-f_{2}^{\min }}{f_{2}^{\max }-f_{2}^{\min }}=\frac{6-4}{6-4}=1 个体1归一化处理后的第2维目标函数值f2,1n​=f2max​−f2min​f2,1​−f2min​​=6−46−4​=1

个体 2 归一化处理后的第 1 维目标函数值 f 1 , 2 n = f 1 , 2 − f 1 min ⁡ f 1 max ⁡ − f 1 min ⁡ = 2 − 1 3 − 1 = 1 2 个体2归一化处理后的第1维目标函数值f_{1,2}^{n}=\frac{f_{1,2}-f_{1}^{\min }}{f_{1}^{\max }-f_{1}^{\min }}=\frac{2-1}{3-1}=\frac{1}{2} 个体2归一化处理后的第1维目标函数值f1,2n​=f1max​−f1min​f1,2​−f1min​​=3−12−1​=21​

个体 2 归一化处理后的第 2 维目标函数值 f 2 , 2 n = f 2 , 2 − f 2 min ⁡ f 2 max ⁡ − f 2 min ⁡ = 5 − 4 6 − 4 = 1 2 个体2归一化处理后的第2维目标函数值f_{2,2}^{n}=\frac{f_{2,2}-f_{2}^{\min }}{f_{2}^{\max }-f_{2}^{\min }}=\frac{5-4}{6-4}=\frac{1}{2} 个体2归一化处理后的第2维目标函数值f2,2n​=f2max​−f2min​f2,2​−f2min​​=6−45−4​=21​

个体 3 归一化处理后的第 1 维目标函数值 f 1 , 3 n = f 1 , 3 − f 1 min ⁡ f 1 max ⁡ − f 1 min ⁡ = 3 − 1 3 − 1 = 1 个体3归一化处理后的第1维目标函数值f_{1,3}^{n}=\frac{f_{1,3}-f_{1}^{\min }}{f_{1}^{\max }-f_{1}^{\min }}=\frac{3-1}{3-1}=1 个体3归一化处理后的第1维目标函数值f1,3n​=f1max​−f1min​f1,3​−f1min​​=3−13−1​=1

个体 3 归一化处理后的第 2 维目标函数值 f 2 , 3 n = f 2 , 3 − f 2 min ⁡ f 2 max ⁡ − f 2 min ⁡ = 4 − 4 6 − 4 = 0 个体3归一化处理后的第2维目标函数值f_{2,3}^{n}=\frac{f_{2,3}-f_{2}^{\min }}{f_{2}^{\max }-f_{2}^{\min }}=\frac{4-4}{6-4}=0 个体3归一化处理后的第2维目标函数值f2,3n​=f2max​−f2min​f2,3​−f2min​​=6−44−4​=0

从上述公式和例子中可以看出,归一化处理实际上是将目标函数值放缩在0~1之间


种群个体的自适应归一化操作

NSGA-Ⅲ中并没有采用常规的归一化操作,而是采用了一种自适应归一化操作,具体步骤如下:

STEP1:计算种群理想点(ideal point);

STEP2:转换种群目标函数值;

STEP3:计算每个坐标轴对应的极值点(extreme points);

STEP4:计算超平面与坐标轴的截距;

STEP5:归一化种群目标函数值。

计算种群理想点

种群 S t S_{t} St​的理想点实际上为 ∪ τ = 0 t S τ \cup_{\tau=0}^{t} S_{\tau} ∪τ=0t​Sτ​中各维目标函数值的最小值,即 z ˉ = ( z 1 min ⁡ , z 2 min ⁡ , … , z M min ⁡ ) \bar{z}=\left(z_{1}^{\min }, z_{2}^{\min }, \ldots, z_{M}^{\min }\right) zˉ=(z1min​,z2min​,…,zMmin​)。其中 z ˉ \bar{z} zˉ表示理想点, z j min ⁡ z_{j}^{\min } zjmin​表示第 i i i个目标的最小值目标函数值, M M M表示目标函数值数目,种群 S t S_{t} St​的理想点计算公式如下:
z j m i n = min ⁡ s ∈ ( ∪ τ = 0 t S τ ) f j ( s ) z_{j}^{\mathrm{min}}=\min _{\mathbf{s} \in\left(\cup_{\tau=0}^{t} S_{\tau}\right)} f_{j}(\mathbf{s}) zjmin​=s∈(∪τ=0t​Sτ​)min​fj​(s)
**【举例】**假设种群 S 0 S_{0} S0​中包含4个个体,目标函数数目为3,每个个体的目标函数值分别为(1,5,9),(4,2,8),(3,4,7),(6,1,6)。
z 1 m i n = min ⁡ s ∈ S 0 f 1 ( s ) = min ⁡ ( 1 , 4 , 3 , 6 ) = 1 z_{1}^{\mathrm{min}}=\min _{\mathbf{s} \in S_{0}} f_{1}(\mathbf{s})=\min(1,4,3,6)=1 z1min​=s∈S0​min​f1​(s)=min(1,4,3,6)=1

z 2 m i n = min ⁡ s ∈ S 0 f 2 ( s ) = min ⁡ ( 5 , 2 , 4 , 1 ) = 1 z_{2}^{\mathrm{min}}=\min _{\mathbf{s} \in S_{0}} f_{2}(\mathbf{s})=\min(5,2,4,1)=1 z2min​=s∈S0​min​f2​(s)=min(5,2,4,1)=1

z 3 m i n = min ⁡ s ∈ S 0 f 3 ( s ) = min ⁡ ( 9 , 8 , 7 , 6 ) = 6 z_{3}^{\mathrm{min}}=\min _{\mathbf{s} \in S_{0}} f_{3}(\mathbf{s})=\min(9,8,7,6)=6 z3min​=s∈S0​min​f3​(s)=min(9,8,7,6)=6

则种群 S 0 S_{0} S0​的理想点为
z ˉ = ( z 1 min ⁡ , z 2 min ⁡ , z 3 min ⁡ ) = ( 1 , 1 , 6 ) \bar{z}=\left(z_{1}^{\min }, z_{2}^{\min }, z_{3}^{\min }\right)=(1,1,6) zˉ=(z1min​,z2min​,z3min​)=(1,1,6)

转换种群目标函数值

在计算出理想点后,接下来就可以对种群 S t S_{t} St​中每个个体的目标函数值进行转换,即每个个体目标函数值减去对应维的理想点目标函数值,其公式如下:
f j ′ ( s ) = f j ( s ) − z j min ⁡ ∀ s ∈ S t f_{j}^{\prime}(\mathbf{s})=f_{j}(\mathbf{s})-z_{j}^{\min } \quad \forall \mathbf{s} \in S_{t} fj′​(s)=fj​(s)−zjmin​∀s∈St​
【举例】承接上例,对4个个体目标函数值进行转换,转换结果如下:
个体 1 转换后的目标函数值 = ( 1 − 1 , 5 − 1 , 9 − 6 ) = ( 0 , 4 , 3 ) 个体1转换后的目标函数值=(1-1,5-1,9-6)=(0,4,3) 个体1转换后的目标函数值=(1−1,5−1,9−6)=(0,4,3)

个体 2 转换后的目标函数值 = ( 4 − 1 , 2 − 1 , 8 − 6 ) = ( 3 , 1 , 2 ) 个体2转换后的目标函数值=(4-1,2-1,8-6)=(3,1,2) 个体2转换后的目标函数值=(4−1,2−1,8−6)=(3,1,2)

个体 3 转换后的目标函数值 = ( 3 − 1 , 4 − 1 , 7 − 6 ) = ( 2 , 3 , 1 ) 个体3转换后的目标函数值=(3-1,4-1,7-6)=(2,3,1) 个体3转换后的目标函数值=(3−1,4−1,7−6)=(2,3,1)

个体 4 转换后的目标函数值 = ( 6 − 1 , 1 − 1 , 6 − 6 ) = ( 5 , 0 , 0 ) 个体4转换后的目标函数值=(6-1,1-1,6-6)=(5,0,0) 个体4转换后的目标函数值=(6−1,1−1,6−6)=(5,0,0)

计算每个坐标轴对应的极值点

极值点这部分内容属于自适应归一化操作中最难理解的一部分内容,首先明确一个事项,极值点数目等于目标函数数目。通过对常规归一化操作的学习,我们了解到归一化实际上是在指定范围内进行放缩操作,其中放缩公式的分母即为各个目标函数的最大值与最小值的差值

而在NSGA-Ⅲ中,归一化采用放缩的思想仍然是不变的,只不过放缩公式的分母不是各个目标函数的最大值与最小值的差值,而是各个坐标轴截距与所对应目标函数最小值的差值。

至于如何计算各个坐标轴截距,就需要极值点进行求解。

关于极值点,个人是这样理解的。极值点中的“极”字,可以理解为“极限”的意思,也就是说无限趋近与指定坐标轴的点。举一个简单的例子, ( 1000 , 1 ) (1000,1) (1000,1)比 ( 1 , 1 ) (1,1) (1,1)更趋近于 x x x轴

在上述对于“极限”理解的基础上,极值点的计算公式如下:
A S F ( x , w ) = max ⁡ i = 1 M f i ′ ( x ) / w i , x ∈ S t z j , max ⁡ = s : argmin ⁡ s ∈ S t A S F ( s , w ) , w = ( ϵ , … , ϵ ) , ϵ = 1 0 − 6 , w j = 1 \begin{array}{c}A S F(x, w)=\max _{i=1}^{M} f_{i}^{\prime}(x) / w_{i}, x \in S_{t} \\ z^{j, \max }=s: \operatorname{argmin}_{s \in S_{t}} A S F\left(s, w\right), w=(\epsilon, \ldots, \epsilon), \epsilon=10^{-6}, w_{j}=1\end{array} ASF(x,w)=maxi=1M​fi′​(x)/wi​,x∈St​zj,max=s:argmins∈St​​ASF(s,w),w=(ϵ,…,ϵ),ϵ=10−6,wj​=1​
【举例】承接上例,求出3个极值点的计算过程如下:

首先找出趋近于** x x x轴**的极值点,需要注意的是此时 w 1 = 1 w_{1}=1 w1​=1,则 w = ( 1 , 1 0 − 6 , 1 0 − 6 ) w=(1,10^{-6},10^{-6}) w=(1,10−6,10−6),然后分别计算4个个体的 A S F ( x , w ) A S F(x, w) ASF(x,w),
个体 1 的 A S F ( x 1 , w ) = max ⁡ i = 1 M f i ′ ( x ) / w i = m a x ( 0 / 1 , 4 / 1 0 − 6 , 3 / 1 0 − 6 ) = m a x ( 0 , 6 × 1 0 6 , 3 × 1 0 6 ) = 6 × 1 0 6 个体1的ASF(x_{1},w)=\max _{i=1}^{M} f_{i}^{\prime}(x) / w_{i}=max(0/1,4/10^{-6},3/10^{-6})=max(0,6\times10^{6},3\times10^{6})=6\times10^{6} 个体1的ASF(x1​,w)=i=1maxM​fi′​(x)/wi​=max(0/1,4/10−6,3/10−6)=max(0,6×106,3×106)=6×106

个体 2 的 A S F ( x 2 , w ) = max ⁡ i = 1 M f i ′ ( x ) / w i = m a x ( 3 / 1 , 1 / 1 0 − 6 , 2 / 1 0 − 6 ) = m a x ( 3 , 1 × 1 0 6 , 2 × 1 0 6 ) = 2 × 1 0 6 个体2的ASF(x_{2},w)=\max _{i=1}^{M} f_{i}^{\prime}(x) / w_{i}=max(3/1,1/10^{-6},2/10^{-6})=max(3,1\times10^{6},2\times10^{6})=2\times10^{6} 个体2的ASF(x2​,w)=i=1maxM​fi′​(x)/wi​=max(3/1,1/10−6,2/10−6)=max(3,1×106,2×106)=2×106

个体 3 的 A S F ( x 3 , w ) = max ⁡ i = 1 M f i ′ ( x ) / w i = m a x ( 2 / 1 , 3 / 1 0 − 6 , 1 / 1 0 − 6 ) = m a x ( 2 , 3 × 1 0 6 , 1 × 1 0 6 ) = 3 × 1 0 6 个体3的ASF(x_{3},w)=\max _{i=1}^{M} f_{i}^{\prime}(x) / w_{i}=max(2/1,3/10^{-6},1/10^{-6})=max(2,3\times10^{6},1\times10^{6})=3\times10^{6} 个体3的ASF(x3​,w)=i=1maxM​fi′​(x)/wi​=max(2/1,3/10−6,1/10−6)=max(2,3×106,1×106)=3×106

个体 4 的 A S F ( x 4 , w ) = max ⁡ i = 1 M f i ′ ( x ) / w i = m a x ( 5 / 1 , 0 / 1 0 − 6 , 0 / 1 0 − 6 ) = m a x ( 5 , 0 × 1 0 6 , 0 × 1 0 6 ) = 5 个体4的ASF(x_{4},w)=\max _{i=1}^{M} f_{i}^{\prime}(x) / w_{i}=max(5/1,0/10^{-6},0/10^{-6})=max(5,0\times10^{6},0\times10^{6})=5 个体4的ASF(x4​,w)=i=1maxM​fi′​(x)/wi​=max(5/1,0/10−6,0/10−6)=max(5,0×106,0×106)=5

在求得4个个体求得的 A S F ( x , w ) A S F(x, w) ASF(x,w)后,采用下述公式求得第1个极值点:
z 1 , max ⁡ = s : argmin ⁡ s ∈ S t A S F ( s , w ) = s : argmin ⁡ ( 6 × 1 0 6 , 2 × 1 0 6 , 3 × 1 0 6 , 5 ) = ( 5 , 0 , 0 ) z^{1, \max }=s: \operatorname{argmin}_{s \in S_{t}} A S F\left(s, w\right)=s:\operatorname{argmin} (6\times10^{6},2\times10^{6},3\times10^{6},5)=(5,0,0) z1,max=s:argmins∈St​​ASF(s,w)=s:argmin(6×106,2×106,3×106,5)=(5,0,0)
即比较4个个体求得的 A S F ( x , w ) A S F(x, w) ASF(x,w),发现个体4的 A S F ( x , w ) A S F(x, w) ASF(x,w)最小。因此第1个极值点即为 ( 5 , 0 , 0 ) (5,0,0) (5,0,0),即 ( 5 , 0 , 0 ) (5,0,0) (5,0,0)相比于其它点更趋近于** x x x轴**。

按照上述求解步骤,求出另外2个极值点分别为 ( 2 , 3 , 1 ) (2,3,1) (2,3,1)和 ( 3 , 1 , 2 ) (3,1,2) (3,1,2),即 z 2 , max ⁡ = ( 2 , 3 , 1 ) , z 3 , max ⁡ = ( 3 , 1 , 2 ) z^{2,\max}=(2,3,1),z^{3,\max}=(3,1,2) z2,max=(2,3,1),z3,max=(3,1,2)。

计算超平面与坐标轴的截距

在求得极值点后,接下来通过求解线性方程组即可获取与各个坐标轴的截距。2维空间2个极值点有2个截距,3维空间3个极值点有3个截距,4维空间4个极值点有4个截距,依此类推,n维空间n个极值点有n个截距。

在3维空间中,3个极值点可以形成空间平面。当空间维数大于3时,即形成超平面。

以3维空间为例,截距式平面方程为
x a + y b + z c = 1 \dfrac{x}{a}+\dfrac{y}{b}+\dfrac{z}{c}=1 ax​+by​+cz​=1
假设3个点的坐标分别为 ( x 1 , y 1 , z 1 ) , ( x 2 , y 2 , z 2 ) , ( x 3 , y 3 , z 3 ) (x_1,y_1,z_1),(x_2,y_2,z_2),(x_3,y_3,z_3) (x1​,y1​,z1​),(x2​,y2​,z2​),(x3​,y3​,z3​),则带入上述平面方程,得出如下线性方程组:
{ x 1 a + y 1 b + z 1 c = 1 x 2 a + y 2 b + z 2 c = 1 x 3 a + y 3 b + z 3 c = 1 → [ x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 ] [ 1 a 1 b 1 c ] = [ 1 1 1 ] → [ 1 a 1 b 1 c ] = [ x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 ] − 1 [ 1 1 1 ] \left\{\begin{array}{l} \frac{x_1}{a}+\frac{y_1}{b}+\frac{z_1}{c}=1 \\ \frac{x_2}{a}+\frac{y_2}{b}+\frac{z_2}{c}=1 \\ \frac{x_3}{a}+\frac{y_3}{b}+\frac{z_3}{c}=1 \end{array} \rightarrow\left[\begin{array}{lll} x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ x_3 & y_3 & z_3 \end{array}\right]\left[\begin{array}{l} \frac{1}{a} \\ \frac{1}{b} \\ \frac{1}{c} \end{array}\right]=\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right] \rightarrow\left[\begin{array}{l} \frac{1}{a} \\ \frac{1}{b} \\ \frac{1}{c} \end{array}\right]=\left[\begin{array}{lll} x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ x_3 & y_3 & z_3 \end{array}\right]^{-1}\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right]\right. ⎩ ⎨ ⎧​ax1​​+by1​​+cz1​​=1ax2​​+by2​​+cz2​​=1ax3​​+by3​​+cz3​​=1​→ ​x1​x2​x3​​y1​y2​y3​​z1​z2​z3​​ ​ ​a1​b1​c1​​ ​= ​111​ ​→ ​a1​b1​c1​​ ​= ​x1​x2​x3​​y1​y2​y3​​z1​z2​z3​​ ​−1 ​111​ ​
推广到n维空间,线性方程组如下:
{ f 1 , 1 a 1 + f 2 , 1 a 2 + ⋯ + f n , 1 a n = 1 f 1 , 2 a 1 + f 2 , 2 a 2 + ⋯ + f n , 2 a n = 1 ⋮ f 1 , n a 1 + f 2 , n a 2 + ⋯ + f n , n a n = 1 → [ f 1 , 1 f 2 , 1 ⋯ f n , 1 f 1 , 2 f 2 , 2 ⋯ f n , 2 ⋮ ⋮ ⋱ ⋮ f 1 , n f 2 , n ⋯ f n , n ] [ 1 a 1 1 a 2 ⋮ 1 a n ] = [ 1 1 ⋮ 1 ] → [ 1 a 1 1 a 2 ⋮ 1 a n ] = [ f 1 , 1 f 2 , 1 ⋯ f n , 1 f 1 , 2 f 2 , 2 ⋯ f n , 2 ⋮ ⋮ ⋱ ⋮ f 1 , n f 2 , n ⋯ f n , n ] [ 1 1 ⋮ 1 ] \left\{\begin{array}{c} \frac{f_{1,1}}{a_1}+\frac{f_{2,1}}{a_2}+\cdots+\frac{f_{n, 1}}{a_n}=1 \\ \frac{f_{1,2}}{a_1}+\frac{f_{2,2}}{a_2}+\cdots+\frac{f_{n, 2}}{a_n}=1 \\ \vdots \\ \frac{f_{1, n}}{a_1}+\frac{f_{2, n}}{a_2}+\cdots+\frac{f_{n, n}}{a_n}=1 \end{array} \rightarrow\left[\begin{array}{cccc} f_{1,1} & f_{2,1} & \cdots & f_{n, 1} \\ f_{1,2} & f_{2,2} & \cdots & f_{n, 2} \\ \vdots & \vdots & \ddots & \vdots \\ f_{1, n} & f_{2, n} & \cdots & f_{n, n} \end{array}\right]\left[\begin{array}{c} \frac{1}{a_1} \\ \frac{1}{a_2} \\ \vdots \\ \frac{1}{a_n} \end{array}\right]=\left[\begin{array}{c} 1 \\ 1 \\ \vdots \\ 1 \end{array}\right] \rightarrow\left[\begin{array}{c} \frac{1}{a_1} \\ \frac{1}{a_2} \\ \vdots \\ \frac{1}{a_n} \end{array}\right]=\left[\begin{array}{cccc} f_{1,1} & f_{2,1} & \cdots & f_{n, 1} \\ f_{1,2} & f_{2,2} & \cdots & f_{n, 2} \\ \vdots & \vdots & \ddots & \vdots \\ f_{1, n} & f_{2, n} & \cdots & f_{n, n} \end{array}\right]\left[\begin{array}{c} 1 \\ 1 \\ \vdots \\ 1 \end{array}\right]\right. ⎩ ⎨ ⎧​a1​f1,1​​+a2​f2,1​​+⋯+an​fn,1​​=1a1​f1,2​​+a2​f2,2​​+⋯+an​fn,2​​=1⋮a1​f1,n​​+a2​f2,n​​+⋯+an​fn,n​​=1​→ ​f1,1​f1,2​⋮f1,n​​f2,1​f2,2​⋮f2,n​​⋯⋯⋱⋯​fn,1​fn,2​⋮fn,n​​ ​ ​a1​1​a2​1​⋮an​1​​ ​= ​11⋮1​ ​→ ​a1​1​a2​1​⋮an​1​​ ​= ​f1,1​f1,2​⋮f1,n​​f2,1​f2,2​⋮f2,n​​⋯⋯⋱⋯​fn,1​fn,2​⋮fn,n​​ ​ ​11⋮1​ ​

**【举例】**承接上例,计算出上述3个极值点 ( 5 , 0 , 0 ) , ( 2 , 3 , 1 ) , ( 3 , 1 , 2 ) (5,0,0),(2,3,1),(3,1,2) (5,0,0),(2,3,1),(3,1,2)所构成的平面与各个坐标轴的截距。
{ 5 a + 0 b + 0 c = 1 2 a + 3 b + 1 c = 1 3 a + 1 b + 2 c = 1 → [ 5 0 0 2 3 1 3 1 2 ] [ 1 a 1 b 1 c ] = [ 1 1 1 ] → [ 1 a 1 b 1 c ] = [ 5 0 0 2 3 1 3 1 2 ] − 1 [ 1 1 1 ] = [ 0.2 0 0 − 0.04 0.4 − 0.2 − 0.28 − 0.2 0.6 ] [ 1 1 1 ] = [ 0.2 0.16 0.12 ] \left\{\begin{array}{l} \frac{5}{a}+\frac{0}{b}+\frac{0}{c}=1 \\ \frac{2}{a}+\frac{3}{b}+\frac{1}{c}=1 \\ \frac{3}{a}+\frac{1}{b}+\frac{2}{c}=1 \end{array} \rightarrow\left[\begin{array}{lll} 5 & 0 & 0 \\ 2 & 3 & 1 \\ 3 & 1 & 2 \end{array}\right]\left[\begin{array}{l} \frac{1}{a} \\ \frac{1}{b} \\ \frac{1}{c} \end{array}\right]=\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right] \rightarrow\left[\begin{array}{l} \frac{1}{a} \\ \frac{1}{b} \\ \frac{1}{c} \end{array}\right]=\left[\begin{array}{lll} 5 & 0 & 0 \\ 2 & 3 & 1 \\ 3 & 1 & 2 \end{array}\right]^{-1}\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right]=\left[\begin{array}{ccc} 0.2 & 0 & 0 \\ -0.04 & 0.4 & -0.2 \\ -0.28 & -0.2 & 0.6 \end{array}\right]\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right]=\left[\begin{array}{c} 0.2 \\ 0.16 \\ 0.12 \end{array}\right]\right. ⎩ ⎨ ⎧​a5​+b0​+c0​=1a2​+b3​+c1​=1a3​+b1​+c2​=1​→ ​523​031​012​ ​ ​a1​b1​c1​​ ​= ​111​ ​→ ​a1​b1​c1​​ ​= ​523​031​012​ ​−1 ​111​ ​= ​0.2−0.04−0.28​00.4−0.2​0−0.20.6​ ​ ​111​ ​= ​0.20.160.12​ ​

[ 1 a 1 b 1 c ] = [ 0.2 0.16 0.12 ] → [ a b c ] = [ 5 6.25 8.33 ] \left[\begin{array}{l} \frac{1}{a} \\ \frac{1}{b} \\ \frac{1}{c} \end{array}\right]=\left[\begin{array}{c} 0.2 \\ 0.16 \\ 0.12 \end{array}\right] \rightarrow\left[\begin{array}{l} a \\ b \\ c \end{array}\right]=\left[\begin{array}{c} 5 \\ 6.25 \\ 8.33 \end{array}\right] ​a1​b1​c1​​ ​= ​0.20.160.12​ ​→ ​abc​ ​= ​56.258.33​ ​

则3个极值点 ( 5 , 0 , 0 ) , ( 2 , 3 , 1 ) , ( 3 , 1 , 2 ) (5,0,0),(2,3,1),(3,1,2) (5,0,0),(2,3,1),(3,1,2)所构成的平面与 x y z xyz xyz坐标轴的截距分别为 a = 5 , b = 6.25 , c = 8.33 a=5,b=6.25,c=8.33 a=5,b=6.25,c=8.33。

极值点与截距的示意图如下图所示:

归一化种群目标函数值

最后一步是对种群中每个个体每一维度的目标函数值进行归一化处理,实际上就是使用转换后的目标函数值除以截距。
f i n ( x ) = f i ′ ( x ) a i − z i min ⁡ = f i ( x ) − z i min ⁡ a i − z i min ⁡ , for  i = 1 , 2 , … , M f_i^n(\mathbf{x})=\frac{f_i^{\prime}(\mathbf{x})}{a_i-z_i^{\min }}=\frac{f_i(\mathbf{x})-z_i^{\min }}{a_i-z_i^{\min }}, \quad \text { for } i=1,2, \ldots, M fin​(x)=ai​−zimin​fi′​(x)​=ai​−zimin​fi​(x)−zimin​​, for i=1,2,…,M
【举例】承接上例,4个个体归一化后各个维度的目标函数值分别如下:
个体 1 第 1 个目标转换后的目标函数值 f 1 n ( x 1 ) = f 1 ′ ( x 1 ) a = 0 5 = 0 个体1第1个目标转换后的目标函数值f_1^n(\mathbf{x_1})=\frac{f_1^{\prime}(\mathbf{x_1})}{a}=\frac{0}{5}=0 个体1第1个目标转换后的目标函数值f1n​(x1​)=af1′​(x1​)​=50​=0

个体 1 第 2 个目标转换后的目标函数值 f 2 n ( x 1 ) = f 2 ′ ( x 1 ) a = 4 6.25 = 0.64 个体1第2个目标转换后的目标函数值f_2^n(\mathbf{x_1})=\frac{f_2^{\prime}(\mathbf{x_1})}{a}=\frac{4}{6.25}=0.64 个体1第2个目标转换后的目标函数值f2n​(x1​)=af2′​(x1​)​=6.254​=0.64

个体 1 第 3 个目标转换后的目标函数值 f 3 n ( x 1 ) = f 3 ′ ( x 1 ) a = 3 8.33 = 0.36 个体1第3个目标转换后的目标函数值f_3^n(\mathbf{x_1})=\frac{f_3^{\prime}(\mathbf{x_1})}{a}=\frac{3}{8.33}=0.36 个体1第3个目标转换后的目标函数值f3n​(x1​)=af3′​(x1​)​=8.333​=0.36

则个体1归一化后的目标函数值为 f n ( x 1 ) = ( 0 , 0.64 , 0.36 ) f^n(\mathbf{x_1})=(0,0.64,0.36) fn(x1​)=(0,0.64,0.36)。

同理,个体2归一化后的目标函数值为 f n ( x 2 ) = ( 0.6 , 0.16 , 0.24 ) f^n(\mathbf{x_2})=(0.6,0.16,0.24) fn(x2​)=(0.6,0.16,0.24),个体3归一化后的目标函数值为 f n ( x 3 ) = ( 0.4 , 0.48 , 0.12 ) f^n(\mathbf{x_3})=(0.4,0.48,0.12) fn(x3​)=(0.4,0.48,0.12),个体4归一化后的目标函数值为 f n ( x 4 ) = ( 1 , 0 , 0 ) f^n(\mathbf{x_4})=(1,0,0) fn(x4​)=(1,0,0)。

种群自适应归一化操作伪代码

自适应归一化操作伪代码如下:

其中,第2行计算理想点的公式,应该改为 z j m i n = min ⁡ s ∈ ( ∪ τ = 0 t S τ ) f j ( s ) z_{j}^{\mathrm{min}}=\min _{\mathbf{s} \in\left(\cup_{\tau=0}^{t} S_{\tau}\right)} f_{j}(\mathbf{s}) zjmin​=mins∈(∪τ=0t​Sτ​)​fj​(s)。


NSGA-Ⅲ代码获取方式

https://yarpiz.com/456/ypea126-nsga3


参考文献

  1. Katoch S, Chauhan S S, Kumar V. A review on genetic algorithm: past, present, and future[J]. Multimedia Tools and Applications, 2021, 80: 8091-8126.
  2. Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective genetic algorithm: NSGA-II[J]. IEEE transactions on evolutionary computation, 2002, 6(2): 182-197.
  3. Deb K, Jain H. An evolutionary many-objective optimization algorithm using reference-point-based nondominated sorting approach, part I: solving problems with box constraints[J]. IEEE transactions on evolutionary computation, 2013, 18(4): 577-601.
  4. Tian Y, Cheng R, Zhang X, et al. PlatEMO: A MATLAB platform for evolutionary multi-objective optimization [educational forum][J]. IEEE Computational Intelligence Magazine, 2017, 12(4): 73-87.
  5. Mostapha Kalami Heris, NSGA-III: Non-dominated Sorting Genetic Algorithm, the Third Version — MATLAB Implementation (URL: https://yarpiz.com/456/ypea126-nsga3), Yarpiz, 2016.
  6. Das I, Dennis J E. Normal-boundary intersection: A new method for generating the Pareto surface in nonlinear multicriteria optimization problems[J]. SIAM journal on optimization, 1998, 8(3): 631-657.
  7. 遗传算法之NSGA-III原理分析和代码解读(https://zhuanlan.zhihu.com/p/146618031)

想快速入门智能优化算法的小伙伴可以阅读我们的书籍,本书对算法的讲解详细易懂,对代码的注释也十分完备。

OK,今天就到这里啦。我们已经推出粉丝交流群,各位小伙伴赶快加入吧!!!


咱们下期再见

近期你可能错过了的好文章

新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》

优化算法 | 灰狼优化算法(文末有福利)

优化算法 | 鲸鱼优化算法

遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码

粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码

公众号:优化算法交流地
知乎 | bilibili | CSDN:随心390

多目标优化 | NSGA-Ⅲ(中篇,附MATLAB代码)相关推荐

  1. 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化.文章详细介绍了YOLOv4的 ...

  2. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)

    前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...

  3. 【智能优化算法】基于文化和谐和学习算法优化模糊函数FUZZY附matlab代码

    1 简介 This paper studies the constrained optimization problem for nonlinear diesel blending. A new hy ...

  4. 【储能优化】基于粒子群求解考虑分时电价-需求响应后的风光柴油储能优化配置模型附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 阿基米德优化算法AOA附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  6. 【光伏】基于战争策略算法WSO优化光伏模型附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  7. 【优化调度】基于粒子群优化防洪调度附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  8. 【滤波跟踪】基于交互式多模型的UKF滤波机动目标跟踪问题研究附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  9. 多目标飞蛾扑火算法 (NSMFO) 附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  10. 智能优化算法-菲克定律算法Fick‘s Law Algorithm(附Matlab代码)

    引言 菲克定律算法Fick's Law Algorithm是一种新的基于物理的元启发式算法,称为菲克定律优化(FLA),其中利用了菲克第一扩散规则.于2022年发表在SCI 一区Knowledge-B ...

最新文章

  1. 关于System.TypeInitializationException异常
  2. python入门教程书籍-初学者最好的Python书籍
  3. C++中getline函数的使用
  4. java学习笔记(三)----成员权限,构造函数,this用法
  5. mysql seconds_behind_master_MySQL 复制延迟 Seconds_Behind_Master 究竟是如何计算的
  6. graal java_使用SparkJava和Graal的本机微服务
  7. 华为手机解锁码计算工具_一部华为手机解锁无数翻译,你浪费了此功能吗?
  8. 不可或缺的PrepareImageRegions函数
  9. ? extends T 与 ? super T
  10. Git 本地分支关联远程分支
  11. Spring源码之bean的属性填充populateBean方法解读
  12. 3D旋转相册html+css代码分享
  13. iapp进度条倒计时_‎App Store 上的“纪念日提醒 - days matter · 倒数倒计时”
  14. java 背单词系统_背单词系统
  15. C++之模板类模板函数
  16. 只要干不死,就往死里干
  17. 微波信号发生器典型应用——TFN TG115 微波信号发生器 100KHz-15GHz
  18. android仿微信发送位置,Android仿微信发送位置-百度地图
  19. OC xcode 两个view重叠,先后层次关系的调整
  20. 推荐几种加快火狐浏览器速度的办法

热门文章

  1. C++之const关键字
  2. 正则——身份证,手机号,姓名
  3. 数据分析学习笔记:因子分析
  4. JAVA 点菜系统数据库课程设计
  5. 管道流量采集实验指导书
  6. Mock(Mockito)单元测试实战
  7. canvas刻画时间轴
  8. (已解决)wps2023无法加载此加载项程序mathpage.wll
  9. 关于外贸的相关知识和经验(上)
  10. C语言 neutralize函数,三种常用分子模拟软件绍.doc