前言
提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。
内容由AI辅助生成,仅经笔者审核整理,请甄别食用。
文章目录
- 前言
- 🔍 一、外部存档的作用概述
- 🧠 二、为什么需要外部存档?
- 📦 三、外部存档的工作机制(分步骤详解)
- 1. **初始化时:**
- 2. **每一代更新时:**
- a. 合并当前粒子和存档:
- b. 再次筛选**非支配解**:
- c. 如果存档大小超出最大容量(如 50):
- 👨🏫 四、外部存档在算法中的角色举例
- 🎯 五、MOPSO 中没有外部存档会怎样?
- 🧩 六、扩展说明:常见外部存档机制
- ✅ 七、小结
在多目标粒子群优化(MOPSO)算法中,外部存档(External Archive) 是一个关键机制,用于存储算法迭代过程中发现的非支配解(Pareto optimal solutions)。它是多目标优化中保持帕累托解集多样性和精英性的核心组件。
🔍 一、外部存档的作用概述
功能 | 说明 |
---|---|
✅ 储存非支配解 | 存档中只保留当前发现的“最优且互不支配”的解 |
✅ 引导粒子搜索 | 存档中的解用作 领导者(leader) 引导粒子向 Pareto 前沿逼近 |
✅ 保持多样性 | 通过裁剪机制(如拥挤距离),保持解的分布均匀 |
✅ 输出最优前沿 | 算法终止后,外部存档即为近似的 Pareto 最优解集 |
🧠 二、为什么需要外部存档?
在单目标 PSO中,全局最优解是一个点,容易更新。
但在多目标优化中,不存在单一最优解,而是一个Pareto 最优解集:
- 解之间是互不可比较的(即不支配彼此)
- 所以不能简单用一个
gbest
表示最优解 - 因此引入外部存档来保存当前最优解集合(非支配解)
📦 三、外部存档的工作机制(分步骤详解)
1. 初始化时:
- 从初始种群中筛选出所有非支配解,放入存档
Rep
数学判断标准(Dominates):
a≺b⟺∀i,ai≤bi且∃j,aj<bj\mathbf{a} \prec \mathbf{b} \iff \forall i,\, a_i \leq b_i\quad \text{且} \quad \exists j,\, a_j < b_j a≺b⟺∀i,ai≤bi且∃j,aj<bj
2. 每一代更新时:
a. 合并当前粒子和存档:
Rep = [Rep, particle];
b. 再次筛选非支配解:
Rep = GetNonDominated(Rep);
c. 如果存档大小超出最大容量(如 50):
通过 ReduceArchive 执行“拥挤度裁剪”:
- 计算所有解之间的距离矩阵
- 平均距离大 = 分布稀疏 → 保留
- 平均距离小 = 密集 → 优先删除
目的是增强分布均匀性,避免解集中在某些区域
👨🏫 四、外部存档在算法中的角色举例
组件 | 单目标 PSO | 多目标 MOPSO |
---|---|---|
最优记录 | 记录单个 gbest | 维护非支配解集 Rep |
引导搜索 | 所有粒子参考同一个 gbest | 每个粒子随机选一个 leader ∈ Rep |
收敛性保障 | 通过 gbest 传导优秀解 | 通过 Rep 传导帕累托前沿 |
多样性控制 | 靠参数或变异 | 外部存档裁剪机制(如拥挤度) |
🎯 五、MOPSO 中没有外部存档会怎样?
- 📉 失去收敛性保障:非支配解不能被记录,可能被新的劣解覆盖
- 🎲 缺乏搜索方向:没有合理
leader
引导粒子逼近 Pareto 前沿 - 🔁 粒子重复搜索:多个粒子盲目收敛到相近区域,降低解的多样性
- 📈 最终结果无法展示:算法结束时没有一组可供分析的 Pareto 解集
🧩 六、扩展说明:常见外部存档机制
技术 | 功能 | 示例算法 |
---|---|---|
非支配排序 + 拥挤度裁剪 | 保留边界与分布均匀性 | MOPSO、NSGA-II |
ε-支配存档 | 保证解集均匀覆盖 | ε-MOPSO |
网格机制(Grid Archive) | 在解空间建立网格增强多样性 | MOPSO with Adaptive Grid |
✅ 七、小结
外部存档在 MOPSO 中是不可或缺的精英保存机制,它具有以下关键功能:
- 🧠 保持非支配帕累托解集
- 🚀 引导粒子朝帕累托前沿搜索
- 🎨 保证解的分布多样性
- 📊 提供最终优化结果