智能优化算法论文精读和复现(一):MOPSO

 一、MOPSO论文精读

首先附上原文链接:

​​​​​​MOPSO: a proposal for multiple objective particle swarm optimization | IEEE Conference Publication | IEEE Xplore

摘要

粒子群优化(Particle Swarm Optimization,PSO)是一种模拟鸟类飞行寻食机制,并基于种群迭代的启发式智能优化算法。原始的PSO算法被设计为专门解决单目标优化问题,本文的主要工作就是将PSO这一算法扩展应用到解决多目标优化问题的领域中去。主要的实现方法包括:

1.通过引入帕累托占优(Pareto Dominance)的概念来决定粒子的飞行方向。

2.通过维持一个全局非支配解向量的档案库来修正其他粒子的飞行方向。

引文

随着启发式优化技术的蓬勃生长,一个重要的研究方向就是设计一些更有效率的算法来保证具有较好收敛性的同时让解的多样性得以维持,PSO就是其中一种。在这篇文章中,原作者提出了一种多目标粒子群优化(Multi-Objective Particle Swarm Optimizaton)算法,让PSO能够解决多目标优化问题。这个算法基于种群迭代,并且额外维持了一个档案库(repository)和一些基于地理(geographically-based)的方法来维持解的多样性。原作者将MOPSO在一些基本测试算例上进行了数值实验,并与帕累托存档进化算法(Pareto Archive Evolution Strategy,PAES)和非支配排序遗传算法(Nondominated Sorting Genetic Algorithm Ⅱ,NSGA-Ⅱ)进行了比较。

粒子群优化

略。

方法描述

PSO和进化算法的相似性让引入帕累托排序方法来将PSO拓展到多目标算法成为了最直接的改进方案。对一个个体历史最优解的记录可以被用来存储迭代中产生的非支配解(类似于多目标进化算法中精英机制的概念)。全局吸引机制的使用和对历史非支配解的保存会更可能让最终结果向全局非支配解收敛。

所以,原作者的基本思想就是建立一个全局资料库来让每个粒子在每次迭代后保存自己的飞行经验。此外,对这个资料库的更新会使用一种对每个个体计算得到的目标函数值决定的地理系统来进行。这个技术是受帕累托存档进化策略算法的启发得到的。这个机制曾经用来让每个粒子识别应该跟随的能指引搜索过程的leader;在本文中,原作者用这种方法来让每个粒子可以选择不同的向导进行搜索。

MOPSO 的算法流程如下:

(1)初始化粒子种群POP;

(2)初始化每个粒子的速度为0;

(3)计算POP中每个粒子的适应度值;

(4)创建一个REP仓库,保存每个表现为非支配向量的粒子的位置;

(5)计算目标函数值;

(6)初始化每个粒子的\small pbest,用来指引每个粒子在搜索空间内的搜索,并且每个粒子的pbest也会被保存在仓库\small PBESTS中。

(7)在达到最大循环次数前进行循环迭代

      (a)按以下表达式更新每个粒子的速度:

\begin{equation} VEL[i+1] = W \times VEL[i] +R_{1} \times (PBESTS[i] - POP[i]) + R_{2} \times (REP[h] - POP[i]) \end{equation}

其中,\small W为惯性权重(\small W=0.4);\small R_{1}\small R_{2}\small [0,1]之间的随机数;\small PBEST[i]是第i个粒子的历史最优值(等价于原始PSO中的pbest);\small REP[h]是仓库REP中的一个值;索引h的决定方式?

      (b)按以下表达式更新每个粒子的位置:

\small \begin{equation} POP[i+1] = POP[i] +VEL[i] \end{equation}

      (c)保护越界粒子;

        (d)更新每个粒子的适应度值;

        (e)更新REP仓库;(更新方式?)

        (f)通过支配关系更新\small PBESTS

        (g)循环计数器+1

(8)终止循环迭代。

结果比较

为了量化结果以方便比较,原作者在使用相同次数的适应度值计算下(FEs)求得算法的平均运算时长,并使用以下标准度量目标函数空间。

\small \begin{equation} M_{1}^{*}=\frac{1}{\left|Y^{\prime}\right|} \sum_{\mathbf{d}^{\prime} \in Y^{\prime}} \min \left\{\left\|\mathbf{d}^{\prime}-\overline{\mathbf{d}}\right\|^{*} ; \overline{\mathbf{d}} \in \bar{Y}\right\} \end{equation}

参数设置:

MOPSO:W = 0.4; number of particles = 40; a repository of 200 particles and 30 divisions for the adaptive grid.

NSGA-Ⅱ:population size = 200; crossover rate = 0.8; tournament selection;mutation rate = 1/vars; vars are number of decision variables of the problem.

PAES:depths of 5; a size of archive of 200; a mutation rate = 1/L; L refers to the length of chromisomic string that encodes the decision variables.

测试函数:

测试函数一

\small \begin{equation} \begin{array}{r} \operatorname{Min} f_{2}\left(x_{1}, x_{2}\right)=\left(1+10 x_{2}\right) \times \\ {\left[1-\left(\frac{x_{1}}{1+10 x_{2}}\right)^{\alpha}-\frac{x_{1}}{1+10 x_{2}} \sin (2 \pi q x)\right]} \end{array} \end{equation}

其中,\small x_{1},x_{2} \in [0,1]\small q = 4,\alpha = 2.

测试函数二

\small \begin{equation} \text { Min } f_{1}(x)= \begin{cases}-x & \text { if } x \leq 1 \\ -2+x & \text { if } 1<x \leq 3 \\ 4-x & \text { if } 3<x \leq 4 \\ -4+x & \text { if } x>4\end{cases} \end{equation}

\small \begin{equation} \text { Min } f_{2}(x)=(x-5)^{2} \end{equation}

其中,\small x_{1},x_{2} \in [-5,10].

测试函数三

\small \begin{equation} \min f_{1}\left(x_{1}, x_{2}\right)=x_{1} \end{equation}

\small \begin{equation} \min f_{2}\left(x_{1}, x_{2}\right)=g\left(x_{1}, x_{2}\right) \cdot h\left(x_{1}, x_{2}\right) \end{equation}

where,

\small \begin{equation} g\left(x_{1}, x_{2}\right)=11+x_{2}^{2}-10 \cdot \cos \left(2 \pi x_{2}\right) \end{equation}

\small \begin{euqation} h\left(x_{1}, x_{2}\right)= \begin{cases}1-\sqrt{\frac{f_{1}\left(x_{1}, x_{2}\right.}{g\left(x_{1}, x_{2}\right.}} & \text { if } f_{1}\left(x_{1}, x_{2}\right) \leq g\left(x_{1}, x_{2}\right) \\ 0 & \text { otherwise }\end{cases} \end{equation}

结果讨论

在对三个测试函数的数值实验中,MOPSO的运算准确度和运算时长都明显优于另外两个算法。原作者再此对MOPSO中的一些参数的设置进行了推荐。

粒子数量:与基因算法的种群大小相似,建议使用20到80个粒子;

循环次数:与粒子数量相关,大致成反比例关系,推荐80到120次;

分组数:30到50个;

仓库大小:这个参数会决定帕累托前沿的质量。

未来工作总结

需要指出的是,PSO是针对无约束优化的一种算法,因此提出一种可以解决约束优化问题的机制就显得很有必要了。此外,还可以针对本算法中的参数进行敏感性分析。

(PS:代码部分待更新)

你可能感兴趣的:(智能优化算法论文复现,python)