MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例

MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例

1.基本概念
萤火虫算法(Firefly Algorithm,FA)是一种模仿萤火虫之间信息交流,相互吸引集合,警戒危险。算法的原理简单,但实现过程较为复杂,而且算法的提出时间不长,算法的改进、优化处于初级阶段,国内外相应的应用研究已经有了一定的成果。
萤火虫算法中,每个萤火虫的位置代表了一个待求问题的可行解,而萤火虫的亮度表示该萤火虫位置的适应度,亮度越高的萤火虫个体在解空间内的位置越好。萤火虫个体之间,高亮度的萤火虫会吸引低亮度的萤火虫。在解空间内,每个萤火虫会像着亮度比自己高萤火虫飞行来搜寻更优的位置。亮度越大对其他的萤火虫的吸引度越大。同时,萤火虫之间光的传播介质会吸收光,降低光的亮度,影响光的传播,所以萤火虫之间的吸引度会随着空间距离成反比,即两只萤火虫之间的吸引度会随着这两只萤火虫之间距离的增大而减小。

一句话简述萤火虫算法流程:每只萤火虫都向着看上去比自己更亮的萤火虫飞行。

算法原理
把空间各点看成萤火虫,利用发光强的萤火虫会吸引发光弱的萤火虫的特点。在发光弱的萤火虫向发光强的萤火虫移动的过程中,完成位置的迭代,从而找出最优位置,即完成了寻优过程。
萤火虫算法有以下条件:

  1. 假设所有萤火虫都是同一性别且相互吸引;
  2. 吸引度只与发光强度和距离有关,发光强的萤火虫会吸引周围发光弱 的萤火虫,但是随着距离的增大吸引度逐渐减小,发光强的萤火虫会做随机运动;
  3. 发光强弱由目标函数决定,在制定区域内与指定函数成比例关系。
    搜索过程和萤火虫的两个重要参数有关:萤火虫的发光亮度和相互吸引度,发光亮的萤火虫会吸引发光弱的萤火虫向它移动,发光越亮代表其位置越好,最亮萤火虫即代表函数的最优解。发光越亮的萤火虫对周围萤火虫的吸引度越高,若发光亮度一样,则萤火虫做随机运动,这两个重要参数都与距离成反比,距离越大吸引度越小。

算法流程

MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第1张图片

萤火虫算法具体实现步骤:
MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第2张图片MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第3张图片

MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第4张图片

萤火虫算法流程图

MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第5张图片

MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第6张图片

图1 需要拟合的观测数据

编程求解结果:
MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第7张图片
MATLAB萤火虫算法求解数据拟合和多参数优化问题代码实例_第8张图片

待求解参数最优解分别为
a= 0.4660
b= -4.9221
c= 4.9627
d= -2.0534
e= 1.8010
f= 553.0143

你可能感兴趣的:(matlab,matlab,算法,开发语言)