使用NBC物种的差分多模态优化


论文简介

  论文题目为Differential Evolution for Multimodal Optimization With Species by Nearest-Better Clustering,发表于IEEE Transactions on Cybernetics ( Volume: 51, Issue: 2, February 2021)


多模态优化问题 (Multimodal optimization problem, MMOPS)

  多模态优化问题包含多个全局和局部峰值,解决这些问题旨在寻找到全部最优解,在这篇论文中特指全局最优解。


Nearest-Better Clustering

  NBC在多模态优化中用于将种群划分为多个物种,同时追踪多个最优解。

\begin{algorithm}
    \caption{NBC}
    \begin{algorithmic}
    \STATE 按照适应度从最好到最差对种群 $P$ 排序;
    \STATE 计算每对个体的距离;
    \STATE 创建空生成树 $T$;
    \FOR{种群 $P$ 中每个个体 $x_i$}
        \STATE 找到最近的更好邻居 $x_{i,nb}$;
        \STATE 在 $x_i$ 和 $x_{i,nb}$ 之间创建一条边;
        \STATE 将该边添加到 $T$;
    \ENDFOR
    \STATE 计算 $T$ 中所有边的平均距离 $\mu_{dist}$;
    \FOR{$T$ 中所有边 $e$}
        \IF{$e$ 的距离大于 $\phi\times\mu_{dist}$}
            \STATE 切断$e$并记录种子$(seed)$
        \ENDIF
    \ENDFOR
\end{algorithmic}
\end{algorithm}

  至此生成树\(T\)被划分为一些子树,每棵子树表示一个物种 (species),子树的根节点视为物种的种子 (seed)。对于一条边的两个节点,Nearest-Better邻居被称为leader,另一个被称为follower

  NBC与现有的niching方法相比NBC不需要先验知识(例如峰值数量),并且NBC只需要设置一个参数ϕ控制物种的数量。当ϕ较小时,获得的物种更多;而增加ϕ会导致物种减少。一般来说,ϕ被设定为2.0。


NBC-Minsize

  当ϕ设置为相对较小的值时,种群可以被划分为更多的物种。因此,不同的物种可以定位更多有前途的区域。在本文中,参数ϕ被设置为1.0。然而,较小的ϕ值会导致过多的分段。此外,只包含少数个体(例如一个或两个个体)的物种数量会大大增加,使物种无法与DE的变异算子进行演化。

  因此,在本文中,参数\(minsize\)用于限制物种中个体的最小数量。需要注意的是,\(minsize\)的值必须谨慎处理。如果它太小,最小尺寸限制机制就失去了作用;如果太大,很可能两个位于不同峰顶的物种仍然会连接在一起。

  为了获得更好的结果,\(minsize\)应该在早期取一个较小的值,在中期和后期取相对较大的值。在早期,由于种群没有定位在峰顶,它应该被划分为更多的物种。在中期和后期,由于种群大致(或精确地)定位在多个峰顶,较大的\(minsize\)允许定位局部最优解的物种被纳入定位全局最优解的附近物种。因此,物种更快地收敛到全局最优解。

  在这篇论文中\(minsize\)被设置为: \[minsize(g) = 5+g/2\] \(g\)表示当前代数,\(minsize\)最开始设置为5以确保差分变异算子能够工作,为了避免\(minsize\)过大,设置上界如下: \[bound(g) = max(10,3*D)\] 其中D为问题的维度即解空间的维度。

\begin{algorithm}
    \caption{NBC-minisize}
    \begin{algorithmic}
    \STATE 设置 $minisize$;
    \STATE 构造完整的生成树 $T$;
    \STATE 计算平均距离 $\mu_{dist}$;
    \STATE 计算 $follow$ 向量;
    \STATE 对 $T$ 中的所有边 $e$ 从长到短排序;
    \FOR{each $e\in T$}
        \IF{$e$ 的距离大于 $\phi\times\mu_{dist}$}
            \STATE 设$e_f$ 为 $e$ 的 $follower$ 个体;
            \STATE 设 $e_r$ 为包含 $e_f$ 的子树的根;
            \IF{$follow(e_f)\ge minisize$ \AND $follow(e_r)-follow(e_f)\ge minisize$}
                \STATE 切断边 $e$;
                \STATE 设$e_l$ 是 $e$ 的 $leader$ 个体;
                \FOR{从 $e_l$ 到 $e_r$ 的每条路径上的个体$x$}
                    \STATE $follow(x)=follow(x)-follow(e_f)$;
                \ENDFOR
            \ENDIF
        \ENDIF
    \ENDFOR
    \STATE 计算 $T$ 中所有边的平均距离 $\mu_{dist}$;
\end{algorithmic}
\end{algorithm}

  \(follow\)向量中的每个元素代表以相应个体为根的子树的节点个数,并且被初始化为1。 接着所有边根据\(follower\)适应度从优到劣排序。对于每条边,如果距离大于\(\phi\times\mu_{dist}\),且切断后的两个物种大小都不小于\(minisize\),就切断并记录种子。

物种平衡策略

  物种平衡策略可以防止少数物种占据绝大多数的个体来预防种群仅收敛到较大峰值宽度的少数最优值。 \(nums\)向量表示所有种群的的物种个数。开始初始化一个变量rest,用于记录从大物种中移除的个体数。接着计算 \(nums\) 向量的平均值 \(\mu_{avg}\) ,计算阈值 \(\mu_\lambda\) ,它是 \(\lambda\)\(\mu_{avg}\) 的乘积,其中 \(\lambda\) 是一个权重参数,用于控制物种的平衡程度。创建一个空集合 \(s\) ,用于记录大小小于 \(\mu_{avg}\) 的物种的索引。

FBK-DE

\begin{algorithm}
    \caption{FBK-DE}
    \begin{algorithmic}
        \STATE 设置种群大小 $NP$;
        \STATE 随机初始化种群 $P(0)$;
        \STATE 评估 $P(0)$;
        \STATE $g=0$;
        \WHILE {未达到停止条件}
            \STATE 通过NBC-minisize算法获得物种;
            \STATE 通过物种平衡策略获得物种大小;
            \FOR {每个物种 $s_i$}
                \STATE 个体进化;
                \IF {$nums(i)>种群大小$}
                \STATE 通过高斯分布在最优值附近产生新个体;
            \ENDIF
            \STATE $g=g+1$;
            \ENDFOR
        \ENDWHILE

    \end{algorithmic}
\end{algorithm}

代码实现

To be continue...


文章作者: codesimp1e
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 codesimp1e !
  目录