Page 156 - 《软件学报》2021年第12期
P. 156
3820 Journal of Software 软件学报 Vol.32, No.12, December 2021
10. end
2.5 选择算子
选择算子是在候选解集中选择部分解进行真实评估,具体见算法 4.其先是找到每个解 x∈X 的邻居参考向
量,然后根据是否存在活跃的邻居参考向量,把 x 加入 X a 或 X ia .这里的活跃与否是看该参考向量在种群 P 中是
否有相关解,即该子问题上是否存在已经真实评估的解.接下来,算法对 X a 和 X ia 进行筛选,删除一些希望渺茫的
*
解,见算法 5.然后,对解集 X 使用 Kmeans 方法聚类,划分成μ个簇,并在每个簇中选择一个与理想点 z 距离最小的
解.与文献[17,18]中所说明的一致,在本文实验中,μ设置为 5.
算法 4. 选择算子 Selection.
输入:P:种群 P;
W:参考向量集;
X:候选解集;
μ:选出解的数量;
输出:X:候选解集.
1. for 每个 x∈X do
2. 设置与 x 相差角度小于θ th 的参考向量为 x 的邻居参考向量;
3. if x 存在活跃的邻居参考向量 then
4. X a =X a ∪x;
5. else
6. X ia =X ia ∪x;
7. end
8. end
9. 对 X a 和 X ia 进行筛选; //算法 5;
10. X=X a ∪X ia ;
11. 对 X 使用 Kmeans 方法聚类,划分成μ个簇;
*
12. 对于每个簇,保留距离 z 最小的解;
算法 5. 筛选.
1. Xr=MCS(P); //计算 P 的最小相关解集,见算法 2
*
2. 记 d(Xr,z )的最大值为 d th ;
*
3. 删除 X ia 中 d(x,z )>d th 的 x;
4. for 每个 x∈X a do
5. 把 Xr 中对应 x 的邻居参考向量的解加入 Xr′;
*
6. 升序排序 d a =d(Xr′,z );
7. d = d a ⎡ 0.25 | a d× |⎤ ⎢ ⎥ ;
th
*
8. 若 d(x,z )>d th ,则在 X a 中删除 x;
9. end
由于模型评估具有一定的误差,真实评估的函数值相对模型评估的函数值会发生一定程度的偏移.这里,我
们根据解的不确定性来确定其邻居参考向量.算法 4 中的阈值θ th 的计算如公式(12):
⎛ ˆˆ′ ⎞
⋅ yy
θ = arccos ⎜ ⎟ (12)
th
⋅
|| ⎝ ˆ || || ′ y ˆ || ⎠ y
,
y ˆ′ = y ˆ +× ( s s s− ˆˆ ˆ , ,...,s ˆ ) (13)
p
m
3
1
2
其中, ˆ′ y 是在置信范围内距离 ˆ y 角度较大的一个解.