标准边界交叉法(Normal-Boundary Intersection)MATLAB代码及详解
标准面生成在多目标优化算法中是非常重要的一部分,包括在NSGAIII中也使用到了参考面的生成。这里主要阐述Das I, Dennis J E.等人提出的Normal-Boundary Intersection方法的MATLAB实现以及理解阐述。
文章参考文献如下:
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.
在MOEA/D算法中需要为M个目标分配初始权重,并且每一种权重的组合方式对应着一个个体。具体的,对于M=3,即3目标问题,其目标函数的组合方式可以为(最简单的加权求和法):
f
(
x
)
=
λ
1
φ
1
(
x
)
+
λ
2
φ
2
(
x
)
+
λ
3
φ
3
(
x
)
f(x)=\lambda_{1}\varphi_{1}(x)+\lambda_{2}\varphi_{2}(x)+\lambda_{3}\varphi_{3}(x)
f(x)=λ1φ1(x)+λ2φ2(x)+λ3φ3(x)
其中,
λ
1
+
λ
2
+
λ
3
=
1
\lambda_{1}+\lambda_{2}+\lambda_{3}=1
λ1+λ2+λ3=1
对于三目标问题,Normal-Boundary Intersection方法就是针对
λ
\lambda
λ在三维平面做出均匀分配。很自然的就涉及到另外一个变量H,代表在每一个维度划分的份数。
组合数的计算方式
因此,Normal-Boundary Intersection方法的输入包含两个参数,分别是目标维度M和每一个维度划分成H份。
对于这样一个问题,通常具有
n
=
C
H
+
M
−
1
M
−
1
n=C_{H+M-1}^{M-1}
n=CH+M−1M−1
个组合方法。
我们首先解释组合数是怎么计算的。
首先,这个问题可以抽象为:
在{0,1/H,2/H,3/H,…,1}这样的数组中,放回的抽取M次,但是要求所有抽取出来的数字之和为1。
这一问题可以转化为在{0,1,2,3,…,H}这样数组中,放回的抽取M此,所有抽取出来的数字之和为H,这一问题还可以进一步转化为{1,2,3,4,…,H+1}这样数组中,放回的抽取M此,所有抽取出来的数字之和为H+m。
因此这一问题可以按照如下方式理解:
如上图所示,一共有H+M个小球,需要合理设置M-1个隔板将这H+M个小球分开,如果隔板只能放在两个小球之间,那么很自然就有
n
=
C
H
+
M
−
1
M
−
1
n=C_{H+M-1}^{M-1}
n=CH+M−1M−1
个组合方案,每一个方案都对应着一种排列方案(即隔板之间的球的个数)。
MATLAB算法实现与讲解
下面是算法实现的MATLAB代码:
1 function [N,W] = EqualWeight(H,M)
2 N = nchoosek(H+M-1,M-1);
3 Temp = nchoosek(1:H+M-1,M-1)-repmat(0:M-2,nchoosek(H+M-1,M-1),1)-1;
4 W = zeros(N,M);
5 W(:,1) = Temp(:,1)-0;
6 for i = 2 : M-1
7 W(:,i) = Temp(:,i)-Temp(:,i-1);
8 end
9 W(:,end) = H-Temp(:,end);
10 W = W/H;
11 end
代码第二行是首先计算一共有多少种解决方案,第三行是很关键的一点。
首先看nchoosek(1:H+M-1,M-1)这一函数,得到的是{1,2,3,4,…,H+M-1}数组中选择M-1个数字的所有组合,每一种组合对应的数字便是下图中的插板的位置。
这些组合方式虽然对应了一种权重的分配方法,但是不能够直接使用。首先,对于每一个隔板位置,即nchoosek(1:H+M-1,M-1)的结果,根据其插板位置前面的插板的数目进行减法,因为在权重分配中是可以相等的,即插板的位置是可以放在同一位置的,基于此确保每一个新的插板的位置是可以和前一个插板同样或更后方的位置。之后在整体减一,可以理解为插板可以插入在最左侧,对应着权重为0,执行第三行公式后,小球插板模型变成了以下样子:
比如说M=3,H=5, 选择其中的一个组合方式,例如:
那么可以得到一个组合为{3,4,5}最后一个5是因为没有插入的序号,初始化为5,另数组后一列减去前一列,很自然得到{3,1,1},对应着插板范围内的小球个数,最后整体除以5得到一种权重的分配方案,对所有组合方案进行同样处理,就得到了所有的权重分配方式。