多种群协同进化粒子群算法CMPSO
一、算法简介
- 简介:传统的多目标进化算法(moea)在求解多目标优化问题时将多个目标作为一个整体来考虑。然而,由于不同的目标经常相互冲突,这种考虑可能会给个体分配适应度带来困难。为了避免这一困难,本文提出了一种新的协同进化技术,称为多目标多种群(MPMO)。MPMO的新颖之处在于,它提供了一种简单直接的方法来解决MOPs,让每个群体只对应一个目标。这样就可以解决适应度分配问题,因为每个种群中个体的适应度可以由相应的目标来分配。MPMO是一种通用技术,每个种群都可以使用现有的优化算法。本文对每个种群采用粒子群优化(PSO),并在粒子群优化技术的基础上开发了协同进化多群粒子群优化(CMPSO)算法。此外,CMPSO通过使用外部共享存档来交换不同种群的搜索信息,并使用两种新颖的设计来提高性能。
-
一种设计是修改速度更新公式,利用不同种群找到的搜索信息快速逼近整个Pareto前沿(PF)。
-
另一种设计是使用精英学习策略进行存档更新,引入多样性以避免局部PFs。
第m个种群中的个体由第m个目标函数分配适应度值。这样,个体不再会被相互冲突的目标所迷惑,同时可以由对应的目标引导以搜索Pareto前沿面的不同区域。 但是,这样可能存在一个弊端,种群个体趋于集中并各自针对Pareto前沿面特定的区域进行优化。因此需要信息共享机制促进种群之间的交流,进而有效地逼近整个PF。 CMPSO使用一个存储所有群体非支配解的外部存档(记为A),所有粒子群体都可以通过访问该外部存档共享信息。
-
-
CMPSO的创新点和优点
- 不同于现有算法将目标群作为一个整体来考虑,CMPSO是一种基于MPMO技术的协同进化多群算法。每个群体通过只考虑一个目标来优化。然后,不同的群体将相互合作,以有效地逼近整个PF。
- 由于每个群体只优化一个目标,CMPSO不仅避免了适应度分配的困难,而且还受益于每个群体使用传统粒子群算法或改进粒子群算法来优化单个目标。
- 由于使用外部共享存档来存储在不同群体中找到的非支配解,因此每个群体可以通过共享存档与其他群体进行通信,并可以使用其他群体提供的信息快速近似整个PF。
- 由于在存档更新过程中使用了精英策略,因此期望该算法能够在具有多模态目标函数的MOP中跳出局部PFs。
-
速度和位置更新公式
第m个群中的每个粒子i随机初始化其速度V m i和位置Xm i,计算Xmi,并使pBestm i与Xmi相同 在进化过程中的每一代中,对于第m个粒子群,每个粒子i通过其个人历史最佳位置pBestm的影响更新其速度和位置 群的全局最佳位置gBestm,以及由粒子i从存档中选择的存档位置Archivem i=[Ami1,Ami2,…,Am iD]。
- 速度更新公式:
- 位置更新公式:
二、算法流程
在算法中存档标记为A,存档被初始化为空,并在每一代中更新。在CMPSO中,存档的最大大小设置为NA,当前一代中的存档大小表示为na。在每一代结束时,存档A都会更新。
-
存档更新过程:
-
首先,将新集合S初始化为空。然后,将每个群中每个粒子的pBest加入到集合s中,将旧档案A中的所有解都加入到集合s中,然后对档案A中的每个解执行ELS,形成新解。然后将所有的新解添加到集合S。
-
上述操作后,集合S有(N×M + 2×na)的解决方案,其中N和M是种群规模和种群数量(目标数量), na是旧存档a的解的个数。
-
然后,对集合S执行非支配解确定过程,以确定所有非支配解并将它们存储在集合R中。
-
如果R的大小(非支配解的数量)不大于NA,则将所有非支配解存储在新存档A中,并将na设置为R的大小。
-
否则,将根据密度对所有非支配解进行排序,并选择前NA个不太拥挤的解存储到新存档A,并将数字na设置为NA
-
(a)ELS
对于存档A中的每个解Ai,首先令新解Ei等于Ai,然后随机选择一个维d进行高斯扰动
其中Xmax,d和Xmin,d分别是第d维的上界和下界。高斯(0,1)是高斯分布产生的一个随机值,均值为0,标准差为1。扰动后对Eid进行检查,保证在[Xmin,d, Xmax,d]的搜索范围内;否则,Eid被设置为对应的边界。然后计算新解Ei的所有目标,并将新解Ei加入集合S。
(b)确定非支配解
集合R用于存储非支配解,并将其初始化为空。然后,对于集合S中的每个解i,检查解i是否被任何其他解j支配。如果解i不被任何其他解支配,则将解i添加到集合R中。此检查过程对集合S中的所有解执行,并确定所有非支配解并存储在集合R中。
(c)基于密度的选择
给定一组解R,每个解的距离初始化为零。然后,根据每个目标值对所有解进行排序,从最小到最大。对于每个目标,边界解,即在该目标上具有最小值和最大值的解,被赋予无限距离值。其他解的距离通过两个相邻解之间目标值的绝对归一化差来增加。在密度估计之后,集合R中的所有解都被分配一个距离。然后,我们选择距离大的前NA解作为新档案A。
- CMPSO完整算法:
初始化时,初始化M个swarm,每个swarm有N个粒子,将存档A设置为空。
对于第m群中的每个粒子i,初始化其速度V m i和位置Xm i,计算Xm i的所有目标,令pBestm i与Xm i相等。根据第m个目标的适应度对所有的pBestm进行比较,以确定第m个群体的全局最佳位置gBestm。初始化完成后,更新存档A,算法开始进化过程。
在进化过程的每一代中,第m个群中的每个粒子i首先从A中随机选择一个存档解,然后根据式(6)和式(7)更新其速度和位置。计算新位置Xm i的所有目标,如果Xm i的第m个目标小于pBestm i的第m个目标,则Xm i将取代历史最佳位置pBestm i。此外,如果pBestm i在第m个目标上的适应度值比gBestm小,则gBestm将被pBestm i取代。在生成结束时,更新存档A,并重复该过程,直到满足终止条件。当算法完成时,将报告存档A中的解决方案。
-
收敛性和多样性:
-
收敛性:CMPSO 通过多种群协同进化、共享存档和精英学习策略,快速逼近 Pareto 前沿。
-
多样性:CMPSO 通过非支配排序、拥挤距离计算和多种群设计,确保解集分布均匀。
-