由于测试问题不同目标的量纲或者范围不同,若直接进行运算,则量纲大的值会覆盖掉小的值,因此需要进行标准化.
在一些文章中,提到如果有一些点,在一个目标上的值很大,在另外目标上值很小,这些点就更靠近这个坐标轴,也就是所谓的extreme point(极值点、极限点).
在NSGAIII中,通过最小化ASF(成就标量函数)来寻找某一个目标轴上的最小点,ASF函数表示如下:
A S F = max M i = 1 f i ′ ( x ) / w i ASF=\underset{i=1}{\overset{M}{\max}}f_{i}^{'}\left( x \right) /w_i ASF=i=1maxMfi′(x)/wi
其中 f i ′ ( x ) f_{i}^{'}\left( x \right) fi′(x) 为原目标值减去理想点之后的值.
权重向量 W = ( w 1 , w 2 , . . . , w M ) T W=\left( w_1,w_2,...,w_M \right) ^T W=(w1,w2,...,wM)T,当求第i维目标轴的极值点时, w i w_i wi=1,其他值等于0(通常用一个很小的值代替,如10的负6次方).
举一个实际的例子来说明,假设有三个点(1,3,0.3)、(2,6,0.3)和(0.1,0.2,3).求其在第一个目标轴上的极值点.
计算过程如下:
因为是计算在第一维目标轴上的极值点,因此 W = ( 1 , 1 0 − 6 , 1 0 − 6 ) W=\left( 1,10^{-6},10^{-6} \right) W=(1,10−6,10−6) .
对于第一个点,计算可得到:
(1,3,0.3)/(1,10-6,10-6)=(1,3*106,0.3*106),最大值为3*106,即ASF1 =3*106 .(此处的除法为点除法)
对于第二个点,计算可得到:
(2,6*106,0.3*106),最大值为ASF2 =6*106.
对于第三个点,计算可得到:
(0.1,0.2*106,3*106),最大值为ASF3 =3*106.
由ASF值可得,ASF的最小值由第一个点和第二个点共同取得,因此两个点均为极值点(两点任选一个).
注意:要先计算单个个体的最大值,然后再取最小的ASF值.
对于一个二维平面来说,已知三个点即可确定一个平面(三个点不在一条直线上).
二维平面方程可以表示为:ax+by+cz = d.或者ax+by+cz=1.
假设有三个点(-1,1,2)、(2,0,-3)和(5,1,-2).可组成方程组:
(-1)*a+b+2*c=1
2*a-3*c=1
5*a+b-2*c=1
联立方程组可解得:a=-0.4;b=1.8;c=-0.6 即得平面方程.
在matlab中,求a、b和c的方式是矩阵求逆,如下:
( a b c ) = ( − 1 1 2 2 0 − 3 5 1 − 2 ) − 1 ( 1 1 1 ) \left( \begin{array}{c} a\\ b\\ c\\ \end{array} \right) =\left( \begin{matrix} -1& 1& 2\\ 2& 0& -3\\ 5& 1& -2\\ \end{matrix} \right) ^{-1}\left( \begin{array}{c} 1\\ 1\\ 1\\ \end{array} \right) ⎝⎛abc⎠⎞=⎝⎛−1251012−3−2⎠⎞−1⎝⎛111⎠⎞
在上式中,求得的平面方程为(-0.4)x+1.8y+(-0.6)z=1.
求x坐标轴上的截点方法为,令y和z等于0,求得x = -1/0.4,因此截点为(-1/0.4,0,0).其他坐标轴上的截点求法类似.