码迷,mamicode.com
首页 > 编程语言 > 详细

萤火虫算法

时间:2021-06-06 19:04:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:div   strong   tla   代码实现   play   2008年   变化   ref   理想   

1. 萤火虫优化算法背景

技术图片
受萤火虫发光强度的启发,2008年,英国剑桥大学学者Xin-She Yang提出萤火虫算法(Firefly Algorithm, FA)。自然界中,萤火虫可以发出短促、有节奏的闪光。通常这种闪光仅在一定范围内可见。萤火虫通过闪光可以吸引异性和猎取食物。为了使算法更加简单,该算法只考虑了萤火虫强度的变化和吸引力这两个因素。

2. 萤火虫优化算法理想化数学模型

依照萤火虫发光的特性,给出以下理想化规则:
(1) 萤火虫不分雌雄,每个萤火虫都会被比它发光更亮的萤火虫吸引;
(2) 吸引力与发光强度成正比;
(3) 萤火虫的亮度由目标函数值决定。

3. 萤火虫优化算法的更新过程

3.1 绝对亮度的定义

为了表示萤火虫\(i\)的亮度随距离\(r\)的变化,定义如下绝对亮度:
萤火虫\(i\)绝对亮度为距离\(r=0\)时的亮度,记为\(I_i\).
注意:为了降低算法的复杂度,假定萤火虫\(i\)的绝对亮度\(I_i\)\(x_i\)的目标函数值相等。

3.2 相对亮度的定义

为了表示萤火虫\(i\)对萤火虫\(j\)的吸引大小,定义如下相对亮度:
萤火虫\(i\)在萤火虫\(j\)位置的光强度,记为\(I_{ij}\)

\[I_{ij}(r_{ij}) = I_ie^{-\gamma{r_{ij}^2}} \]

其中,\(\gamma\)为光吸收系数,\(r_{ij}\)为萤火虫\(i\)到萤火虫\(j\)的距离.

3.3 吸引力的定义

假设萤火虫\(i\)对萤火虫\(j\)的吸引力和萤火虫\(i\)对萤火虫\(j\)的相对亮度成比例,所以萤火虫\(i\)对萤火虫\(j\)的吸引力可表示为:

\[\beta_{ij}(r_{ij}) = \beta_0e^{-\gamma{r_{ij}^2}} \]

其中,\(\beta_0\)为最大吸引力,当距离\(r=0\)时,吸引力最大。通常\(\beta_0=1\),\(\gamma\in{[0.01,100]}\).

3.4 萤火虫位置更新公式

萤火虫\(i\)吸引着萤火虫\(j\),因此萤火虫\(j\)的位置更新公式:

\[x_j(t+1) = x_j(t) + \beta_{ij}(r_{ij})(x_i(t) - x_j(t)) + \alpha\varepsilon_j \]

其中,\(t\)为算法的迭代次数;\(x_i\)\(x_j\)分别为萤火虫\(i\)和萤火虫\(j\)所处的空间位置;\(\alpha\in{[0,1]}\), \(\varepsilon\)是高斯分布得到的随机向量。

4. Matlab代码实现

萤火虫算法

标签:div   strong   tla   代码实现   play   2008年   变化   ref   理想   

原文地址:https://www.cnblogs.com/mysterygust/p/14853721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!