前言
提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。
内容由AI辅助生成,仅经笔者审核整理,请甄别食用。
文章目录
- 前言
-
-
- 一、拐点解的数学定义与识别
-
- [1. **拐点的几何特征**](#1. 拐点的几何特征)
- [2. **自适应邻域搜索策略**](#2. 自适应邻域搜索策略)
- [3. **拐点识别的核心公式**](#3. 拐点识别的核心公式)
- 二、选择策略的三级比较机制
-
- [1. **第一级:支配关系**](#1. 第一级:支配关系)
- [2. **第二级:拐点优先级**](#2. 第二级:拐点优先级)
- [3. **第三级:加权距离比较**](#3. 第三级:加权距离比较)
- 三、算法流程与公式化步骤
-
- [1. **初始化**](#1. 初始化)
- [2. **选择与遗传操作**](#2. 选择与遗传操作)
- [3. **非支配排序与拐点识别**](#3. 非支配排序与拐点识别)
- [4. **环境选择**](#4. 环境选择)
- 四、关键公式总结与应用场景
- 五、算法优势与数学解释
- 六、参数设置与实践建议
-
KnEA(Knee-point-driven Evolutionary Algorithm)是一种针对超多目标优化问题(4个及以上目标)的高效算法,其核心在于通过识别拐点解(Knee Points)引导选择压力,平衡收敛性与多样性。以下从数学原理、关键公式到算法流程进行详细解析。
一、拐点解的数学定义与识别
1. 拐点的几何特征
拐点解是Pareto前沿上的"最凹点",其特点是:改进任一目标会导致其他多个目标显著恶化 。数学上,拐点解可通过目标空间中的梯度变化 或到超平面的距离来识别。
2. 自适应邻域搜索策略
KnEA采用自适应邻域策略动态调整搜索范围,避免手动设置参数。邻域大小由以下公式确定:
R g j = ( f max , g j − f min , g j ) ⋅ r g R_g^j = \left(f_{\text{max},g}^j - f_{\text{min},g}^j\right) \cdot r_g Rgj=(fmax,gj−fmin,gj)⋅rg
其中:
- R g j R_g^j Rgj为第 g g g代第 j j j个目标的邻域半径;
- f max , g j f_{\text{max},g}^j fmax,gj和 f min , g j f_{\text{min},g}^j fmin,gj为当前代第 j j j个目标的极值;
- r g r_g rg为自适应缩放因子,随迭代更新:
r g = r g − 1 ⋅ e − 1 − t g − 1 / T M r_g = r_{g-1} \cdot e^{-\frac{1 - t_{g-1}/T}{M}} rg=rg−1⋅e−M1−tg−1/T
这里, T T T为预设参数(控制拐点比例), M M M为目标数, t g − 1 t_{g-1} tg−1为前一代拐点解占非支配解的比例。该公式确保当拐点比例不足时,邻域半径急剧缩小以聚焦搜索。
3. 拐点识别的核心公式
对于当前非支配解 x i x_i xi,计算其到极端直线 (由两个极值解确定的超平面)的距离:
d i = ∣ A ⋅ f ( x i ) + B ∣ ∥ A ∥ d_i = \frac{\left|A \cdot f(x_i) + B\right|}{\|A\|} di=∥A∥∣A⋅f(xi)+B∣
其中:
- A A A和 B B B由极值解确定的超平面方程系数;
- f ( x i ) f(x_i) f(xi)为解 x i x_i xi的目标向量。
距离最大的解被视为当前邻域的拐点。
二、选择策略的三级比较机制
KnEA通过三级锦标赛选择实现高效筛选,公式化比较逻辑如下:
1. 第一级:支配关系
若解 a a a支配解 b b b(即 a a a的所有目标不劣于 b b b且至少一个目标更优),则选择 a a a;否则进入下一级。
2. 第二级:拐点优先级
若 a a a是拐点而 b b b不是,则选择 a a a;反之选择 b b b。若两者同为拐点或非拐点,则进入第三级。
3. 第三级:加权距离比较
计算解 a a a和 b b b的加权距离:
D ( p ) = ∑ j = 1 k 1 rank ( d p , j ) D(p) = \sum_{j=1}^k \frac{1}{\text{rank}(d_{p,j})} D(p)=j=1∑krank(dp,j)1
其中:
- d p , j d_{p,j} dp,j为解 p p p到第 j j j近邻的欧氏距离;
- rank ( d p , j ) \text{rank}(d_{p,j}) rank(dp,j)为距离的排序(距离越小,排名越高)。
选择加权距离较大的解,以确保多样性。
三、算法流程与公式化步骤
1. 初始化
随机生成初始种群 P 0 P_0 P0,计算每个个体的目标值 f ( x i ) f(x_i) f(xi)。
2. 选择与遗传操作
- 二进制锦标赛选择 :每次随机选2个个体,按三级比较规则生成 N N N个子代。
- 交叉与变异:采用模拟二进制交叉(SBX)和多项式变异,公式与NSGA-II类似。
3. 非支配排序与拐点识别
- 合并父代与子代,进行非支配排序,得到多个前沿 F 1 , F 2 , ... F_1, F_2, \dots F1,F2,...。
- 对每个前沿,使用自适应邻域公式识别拐点解。
4. 环境选择
- 优先保留拐点解,若数量不足 N N N,则从非拐点解中选择加权距离较大的补充:
Selected = arg max x ∈ F last D ( x ) \text{Selected} = \arg\max_{x \in F_{\text{last}}} D(x) Selected=argx∈FlastmaxD(x)
其中 F last F_{\text{last}} Flast为最后一个未被完全选中的前沿。
四、关键公式总结与应用场景
公式类型 | 核心公式 | 作用 |
---|---|---|
邻域半径自适应调整 | R g j = ( f max , g j − f min , g j ) ⋅ r g R_g^j = \left(f_{\text{max},g}^j - f_{\text{min},g}^j\right) \cdot r_g Rgj=(fmax,gj−fmin,gj)⋅rg | 动态缩小搜索范围,聚焦拐点 |
拐点距离计算 | d i = ∣ A ⋅ f ( x i ) + B ∣ ∣ A ∣ d_i = \frac{|A \cdot f(x_i) + B|}{|A|} di=∣A∣∣A⋅f(xi)+B∣ | 量化解的拐点程度,识别局部拐点 |
加权距离比较 | D ( p ) = ∑ j = 1 k 1 rank ( d p , j ) D(p) = \sum_{j=1}^k \frac{1}{\text{rank}(d_{p,j})} D(p)=∑j=1krank(dp,j)1 | 评估解的多样性,作为非拐点解的选择依据 |
环境选择策略 | Selected = arg max x ∈ F last D ( x ) \text{Selected} = \arg\max_{x \in F_{\text{last}}} D(x) Selected=argmaxx∈FlastD(x) | 补充非拐点解以维持种群多样性 |
五、算法优势与数学解释
- 选择压力增强:通过拐点优先级打破非支配解的平局,避免传统算法因非支配解过多导致的选择失效。
- 多样性隐式维护:加权距离基于邻域密度,天然倾向于选择分布稀疏的解,无需额外拥挤距离计算。
- 计算复杂度降低 :自适应邻域策略减少了对全局信息的依赖,时间复杂度为 O ( M N 2 ) O(MN^2) O(MN2)( M M M为目标数, N N N为种群规模),显著低于NSGA-III的 O ( M N 3 ) O(MN^3) O(MN3)。
六、参数设置与实践建议
- 参数 T T T :通常设为0.1~0.3,控制拐点解占非支配解的比例。若目标数多(如 M ≥ 8 M \geq 8 M≥8),可适当增大 T T T以增加拐点数量。
- 邻域半径初始值 r 0 r_0 r0:建议设为0.5,随迭代逐步缩小。
- 加权距离的近邻数 k k k :一般取 k = 3 k=3 k=3,平衡局部与全局信息。