最近看了一篇粒子群算法求解多目标优化问题的中文论文,做个笔记
一。多目标优化问题
二。多目标优化算法
论文中提出,由于PSO中粒子是跟随着群里中最好的粒子快速向一点收敛,因此直接用PSO算法处理多目标优化,很容易收敛于非劣最优域的局部最优解。
论文所提算法思想为:
1.对应于第i个优化子目标函数,粒子群为其优化得到第i个子问题的全局最优gBest[i]和个体最优pBest[i,j]。(j是第j个粒子)
2.更新每个粒子速度时,用每个子问题的全局最优的均值gBest[i]作为全局极值;
每个粒子的pBest[i, j]通过判断pBest[i,j]相较于gBest[i]的离散程度,决定是取pBest均值还是再pBest[i,j]中随机选取。
例如:目前同时需要优化2个目标函数,在用PSO分别对2个问题优化完后,得到pBest[1, j]和pBest[2, j],计算这两个向量间的距离得到dpBest[i];同理,针对全局最优,也求出问题1全局最优粒子和问题2的最优粒子的距离得到dgBest。如果dpBest[i]<dgBest,pBest[i]就在pBest[i,j]中随机选取。否则取问题1个体最优和问题2个体最优的均值。
论文为什么提出这个算法?
- 对于多目标优化问题,作者目标是需要同时找到一组最优可接受解集,是一组,而PSO只能收敛得到一个解。
论文提出了哪些改进?
- 相对于直接将子目标的分数加权求和来优化多目标问题的PSO,改算法不需要给出权重,(权重需要先验知识,又是一堆超参数)
- 能同时得到一组解集,且该解集是较为均匀分布在非劣最优目标域。
论文中算法有哪些不足,有没有改进的办法?
- 在计算个体目标最优时,比较完距离后,要么是取2个子目标个体最优的均值,要么是随机取其中一个。文中也说了可以将求平均改成按比例动态选取。感觉这样多样性不是很足,还是比较容易早熟
- 文中的多目标粒子群优化算法,是先用了单目标优化算法逐个对每个目标优化来初始化的。首先想象苏联的米格战斗机,不求每个零部件最好,但是他们组合在一起整体效果就非常好。文中这种初始化方法有点类似于每一个零件都选最好的,这个初始化方法应该有改进的地方。