📜  龙飞优化

📅  最后修改于: 2022-05-13 01:58:08.765000             🧑  作者: Mango

龙飞优化

由于其简单、易于操作、防止局部最优的能力以及无衍生品的问题,元启发式在过去的三个十年中经常被使用。探索和利用是两个基本的元启发式特征。第一个展示了该算法如何能够检测新的搜索区域,而第二个则专注于寻找最佳解决方案,这是一个有前途的搜索区域。元启发式成功是一种可以平衡探索与利用的成功。

元启发式有几种分类。

  • 自然启发与非自然启发
  • 基于人口的与单点搜索
  • 动态目标函数与静态目标函数
  • 一个社区与多个社区
  • 内存使用与无记忆方法

然而,受自然启发的分类被广泛使用。受自然启发的分类可以进一步分为四类群体智能技术、人类相关技术、进化技术和基于物理的技术。

这些自然启发算法的一些例子是亨利气体溶解度优化、猫群优化、基于教学的优化等。

在本文中,我们将讨论蜻蜓优化,这是一种群体智能优化技术。

灵感

蜻蜓优化具有静态、动态阶段,分别类似于元启发式优化中的探索、开发。在静态阶段,蜻蜓创建子群并飞越不同的区域。在动态阶段,蜻蜓成群结队并沿一个方向飞行。根据 Reynolds 在 1987 年发表的一篇研究论文 Flocks, herds and school: a Distributed behavior model a swarm 遵循三个基本阶段:

  1. 分离:是指将其他实体附近的实体之间的静态碰撞最小化。
  2. Alignment:指实体的速度与其他本地实体的速度相匹配。
  3. 凝聚力:指实体趋向邻域质量中心的趋势。

除了这些提到的原则之外,对于任何基本上有两种形式的群体来说,生存都是至关重要的:被食物来源所吸引和被天敌击退。

数学模型

让我们定义蜻蜓优化的灵感部分中提到的原则。

分离:

S_i =  -\sum_{j=1}^{N} X - X_j

其中X , X j分别表示当前个体的位置, j th相邻个体, N是相邻个体的数量。

结盟:

A_i = \frac{\sum_{j=1}^N V_j}{N}

其中V j表示第j相邻个体的速度

凝聚:

C_i = \frac{\sum_{j=1}^N X_j}{N} -X

其中X , X j分别表示当前个体的位置, j th相邻个体, N是相邻个体的数量。

景点:

F_i =X^+ -  X

其中X、X +分别表示当前个体的位置、食物来源。

排斥:

R_i = X^- +X

其中X , X 分别表示当前个体、天敌的位置。

考虑两个向量来更新人造蜻蜓在搜索空间中的位置并模拟它们的运动:

  • 步向量 ( \Delta X        )
  • 位置向量 ( X        )。

步长向量表示蜻蜓的运动方向,定义如下(1):

 \Delta X_{t+1} = (sS_i + aA_i + cC_i + fF_i + rR_i)+w\Delta X_t

其中s、a、c、f、r是它们各自阶段的权重,即分离、对齐、内聚、吸引、排斥,w 是惯性权重,t 是迭代计数器。

可以实现改变这些权重探索和开发阶段的值。

位置向量简单地使用步向量计算为 (2):

X_{t+1} = X_t + \Delta X_{t+1}

对于探索阶段,分配低内聚权重(c)和高对齐权重(a),类似地对于开发,分配低对齐权重(a)和高内聚权重(c)。

位置向量给出了蜻蜓的位置,但是当没有相邻解时,蜻蜓需要在随机搜索空间中飞行,并且它们的位置使用位置向量的修改方程 (3) 进行更新:

X_{t+1} = X_t + X_t.levy(d)

其中 levy(d) 是:

Levy(x) = 0.01 \frac{r_1.\sigma }{|r_2|^{\frac{1}{\beta}}}

其中 r1, r2 范围在 [0,1],β 为常数,σ 计算如下:

\sigma = \bigg(\frac{(\beta!\times\sin (\frac{\pi \beta}{2}))}{\big(\frac{\beta -1}{2}\big)! \times \beta \times 2^{(\frac{\beta-1}{2})}}\bigg)^\frac{1}{\beta}

算法

初始化蜻蜓种群 X i和它们各自的步 vectos \Delta X_i    对于 i=1,2,…,n

迭代未结束或优化结果未达到

  • 计算每只蜻蜓的适应度函数
  • 更新权重 s、a、c、f、r、w 和食物来源、天敌
  • 计算分离 (S)、对齐 (A)、内聚 (C)、吸引力 (F) 和排斥 (R)
  • 使用他们的方程式
  • 如果邻居(蜻蜓) \geq    1
    • 更新速度向量 ( \Delta X    ) 和位置向量 ( X    ) 使用等式 1 和 2
  • 别的
    • 使用等式 3 更新位置向量

结束时

这就是蜻蜓优化的工作原理

参考:

  • https://link.springer.com/content/pdf/10.1007/s00521-015-1920-1.pdf
  • https://dl.acm.org/doi/abs/10.1145/37401.37406