1. 为什么做这个算法:从WAA的瓶颈说起
做过多目标优化的人应该都有这种体会:测试函数跑了一堆,IGD、HV指标算得头皮发麻,最后发现算法之间的差距其实都藏在一些很细节的机制设计上。MOWAA这个工作,本质上是把两个耳熟能详的改进策略——高斯扰动和竞争学习——以一种比较自然的方式嵌进了加权平均算法的框架里,然后放到DTLZ1到DTLZ7这组标准测试函数上做了系统性验证,最后又拿到盘式制动器设计这种带约束的工程问题上检验了一把。
先说清楚一个概念:WAA,也就是加权平均算法,核心逻辑非常朴素。它跟遗传算法那种"二进制交叉+多项式变异"的组合不一样,WAA的思路是直接从当前种群中选取若干个体,按权重线性组合生成新个体。你可以把它理解成一种"向量插值"式的搜索:父代个体在决策空间里围出来的那块区域,就是子代可能落位的地方。这种策略在单目标优化里表现得中规中矩,但在多目标场景下就暴露出了问题。
问题出在哪?多目标优化的难点从来不是"找到最优解",而是"找到一组分布均匀、同时逼近真实Pareto前沿的解"。WAA的线性加权组合天然倾向于生成靠近父代几何中心的子代,这就导致两个后果:第一,种群容易朝某个方向聚集,多样性崩掉;第二,如果父代整体都陷在某个局部前沿附近,加权平均生成的子代大概率还是在同一个局部区域里打转,收敛性也上不去。说白了,它没有一种"向外探索"的机制。
高斯扰动和竞争学习就是冲着这两个缺陷去的。高斯扰动给加权平均生成的子代加了一个随机偏移量,相当于在局部搜索和全局探索之间放了一根可调松紧的弹簧;竞争学习则通过个体之间的比较和淘汰,给种群注入持续的进化压力,让"好区域"的个体获得更多繁殖机会。这两个机制单独拎出来都不算新鲜,但组合在一起,得到的MOWAA在DTLZ系列上的表现确实有点意思。
这篇博文我会按这样的顺序展开:先讲清楚MOWAA的三个核心机制以及它们为什么这么设计,再逐个分析DTLZ1到DTLZ7这七个测试函数分别考察算法的什么能力,然后聊盘式制动器设计问题怎么建模、怎么对接算法,最后给出Matlab代码实现的关键细节和我在复现过程中踩过的一些坑。适合对多目标进化算法有一定基础、想自己动手改进算法并做实验对比的读者,也适合正在做工程优化课题、需要找一个靠谱优化器来用的同学。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
