多目标优化算法之SPEA2

Strength Pareto Evolutionary Algorithm (SPEA)
算法步骤:
Step1:初始化种群P(大小为N)和空的外部储备集P‘(大小为N’)
Step2:将P中的非支配解复制到P’
Sep3:如果P’大小超过N’,通过聚类的方法移除
Step4:计算P和P’中的所有个体适应值
Step5:从P+P’中进行选择操作,直到交配池填满
Step6:交配池中个体进行变异和交叉操作
Step7:是否达到最大迭代次数,if 停止, else Step2.


关于适应值分配
对于P’来说, f i = s i = n N + 1 f_i=s_i=\frac{n}{N+1} fi=si=N+1n 其中 s i ∈ [ 0 , 1 ) s_i\in[0,1) si[0,1),n是P’中每个个体i支配P中的解的个数,加1保证取值在0到1区间内
对于P来说, f j f_j fj=1+ ∑ i , j ≺ ‾ i s i \sum_{i,j\underline{\prec}{i}}s_i i,jisi    w h e r e f j ∈ [ 1 , N ) where f_j\in[1,N) wherefj[1,N), s i s_i si表示中种群P中的个体j被非支配解集P’中个体i支配。即P中所有支配j的个体。加1保证P’中的适应度均比P好(适应度值越小,具体有更高的保留到下一代的概率)。如下图所示,
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210112201747770.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzal9qZXJyeTUyMQ==,size_16,color_
文献中提到的聚类方法
当非支配解集增加导致选择压力减小,减慢搜索速度。
聚类步骤:
Step1:初始化聚类集合C,P’中的每个个体构成一个聚类。 C = ∪ i { { i } } C=\cup_i\{\{i\}\} C=i{ { i}}
Step2:if |C| ≤ \leq N’ (即簇的所有个体小于给定的最大值), go step5, else Step3.
Step3:计算不同簇间两个个体的距离
d = 1 ∣ c 1 ∣ ⋅ ∣ c 2 ∣ ⋅ ∑ i 1 ∈ c 1 , i 2 ∈ c 2 ∣ ∣ i 1 − i 2 ∣ ∣ d=\frac{1}{|c_1|\cdot|c_2|}\cdot\sum_{i_1\in{c_1},i_2\in{c_2}}\lvert\vert{i_1-i_2}\vert\vert d=c1c21i1c1,i2c2i1i2
Step4:将存在最小距离d的两个簇合并,go to Step2。
Step5:从每个簇中选择一个具有代表个体。(簇内某个个体到其他个体的平均距离最小的个体)作为代表解。
参考文献:Multiobjective Evolutionary Algorithms:A Comparative Case Study and the Strength Pareto Approach


算法升级SPEA2-----Improving the Strength Pareto Evolutionary Algorithm
SPEA缺点:
1.当archive中只有一个,多个个体具有相同适应值。选择压力减小,退化成随机搜索算法
2.聚类只用在储备集archive而为用在中种群所有个体中,丢失外部解集。
3.
与SPEA不同之处:

  • 适应度计算
  • 邻近估计,更加精准搜索
  • 新的存档截断方法,保证边界值的保留
  • archive大小固定
    算法步骤
    N N N(种群大小), N ‾ ( a r c h i v e 大 小 ) \overline{N}(archive大小) N(archive) T ( 最 大 迭 代 次 数 ) T(最大迭代次数) T()
    Step1:初始化,种群 P 0 P_0 P0,空的archive P ‾ 0 \overline{P}_0 P0, t = 0 t=0 t=0
    Step2:计算适应度
    Step3:环境选择:将 P t P_t Pt P ‾ t \overline{P}_t Pt中的所有非支配解集复制到 P ‾ t + 1 \overline{P}_{t+1} Pt+1
    如果 P ‾ t + 1 \overline{P}_{t+1} Pt+1个数> N ‾ \overline{N} N,进行剪枝操作
    否则,选择 P t P_t Pt P ‾ t \overline{P}_t Pt中的支配解集添加到 P ‾ t + 1 \overline{P}_{t+1} Pt+1中,具体下方的环境选择
    Step4:t>T的或者满足其他的终止条件,将A作为PT+1中非支配解所代表的决策变量集合输出
    Step5:选择操作,对 P ‾ t + 1 \overline{P}_{t+1} Pt+1进行锦标赛选择放入交配池
    Step6:交配池中的个体进行重组和变异,,将结果存入集合 P ‾ t + 1 \overline{P}_{t+1} Pt+1,迭代次数+1回到Step2.
    适应度计算:
    S ( i ) = ∣ { j ∣ j ∈ P t + P ‾ t ∧ j ≺ i } ∣ S(i)=|\{j|j\in{P_t+\overline{P}_t}\land{}j\prec{i}\}| S(i)={ jjPt+Ptji}
    R ( i ) = ∑ j ∈ P t + P ‾ t , i ≺ j S ( j ) R(i)=\sum_{j\in{}P_t+\overline{P}_t,i\prec{j}}{S(j)} R(i)=jPt+Pt,ijS(j)
    其中 s ( i ) s(i) s(i)表示个体i支配的个体数。R(i)表示原始适应值,表示个体i,支配i的每个个体j支配的所有个体数之和
    在这里插入图片描述
    当多个个体不相互支配时,R(i)难以实现其作用,因此,在SPEA2中。选k邻近估算密度。计算每个个体到储备集和种群中所有个体的距离,按照递增排序,选第k个作为 σ i k \sigma^k_i σik
    D ( i ) = 1 σ i k + 2 D(i)=\frac{1}{\sigma^k_i+2} D(i)=σik+21其中 k = N + N ‾ k=\sqrt{N+\overline{N}} k=N+N ,分母加2保证值(0,1)
    F ( i ) = R ( i ) + D ( i ) F(i)=R(i)+D(i) F(i)=R(i)+D(i)
    环境选择
    (1) ∣ p ‾ t + 1 ∣ < ∣ N ‾ ∣ |\overline{p}_{t+1}|<|\overline{N}| pt+1<N, P t + P ‾ t P_t+\overline{P}_t Pt+Pt中所有个体根据适应度排序选择前 N ‾ − ∣ p ‾ t + 1 ∣ \overline{N}-|\overline{p}_{t+1}| Npt+1
    (2) ∣ p ‾ t + 1 ∣ > ∣ N ‾ ∣ |\overline{p}_{t+1}|>|\overline{N}| pt+1>N,其中 j ∈ P ‾ t + 1 j\in\overline{P}_{t+1} jPt+1.每次迭代中淘汰个体i,其中i满足
    i ≤ d j :    ⟺    ∀ 0 < k < ∣ P ‾ t + 1 ∣ : σ i k = σ j k ∨ ∃ 0 < k < ∣ P ‾ t + 1 ∣ : [ ( ∀ 0 < l < k : σ i l = σ j l ) ∧ σ i k < σ j k ] i\leq_dj:\iff \forall0<k<|\overline{P}_{t+1}|:\sigma_i^k=\sigma_j^k\lor\exist 0<k<|\overline{P}_{t+1}|:[(\forall 0<l<k:\sigma_i^l=\sigma_j^l)\land\sigma_i^k<\sigma_j^k] idj:0<k<Pt+1σik=σjk0<k<Pt+1:[(0<l<k:σil=σjl)σik<σjk]其中 σ i k \sigma_i^k σik
    代表个体i与第k个邻居的距离,上面公式表示具有最小距离的个体被选中删除,如果有多个个体都是距离最小值,则考虑第二个最小距离值,以此类推.具体情况如下图:
    在这里插入图片描述

参考文献:SPEA2: Improving the Strength Pareto Evolutionary Algorithm

猜你喜欢

转载自blog.csdn.net/wsj_jerry521/article/details/112511701