蝙蝠算法(Bat Algorithm,縮寫 BA),是一种元启发式优化算法,是杨新社(音译自:Xin-She Yang)在2010年提出的算法。这个蝙蝠算法以微蝙蝠(microbats)回声定位行为的基础,采用不同的脉冲发射率和响度。
算法描述
把蝙蝠的回声定位理想化,可以总结如下:每个虚拟蝙蝠有随机的飞行速度v_i在位置x_i(问题的解),同时蝙蝠具有不同的频率或波长、响度A_i和脉冲发射率r。蝙蝠狩猎和发现猎物时,它改变频率、响度和脉冲发射率,进行最佳解的选择,直到目标停止或条件得到满足。这本质上就是使用调谐技术来控制蝙蝠群的动态行为,平衡调整算法相关的参数,以取得蝙蝠算法的最优。
算法方程
根据Yang (2010)的文章, 新的解x_i^t和速度v_i^t更新方程:
: f_i=f_{\min}+(f_{\max}-f_{\min}) \beta,
: v_i^t=v_i^t+(x_i^{t-1}-x_*) f_i,
: x_i^t =x_i^{t-1} +v_i^t.
其中,随机数为均匀分布。x_*是目前找到最优解。
A和r应该在迭代中变换:
: A_i^{t+1}=\alpha A_i^t,
: r_i^{t+1}=r_i^0 [1-\exp(-\gamma t)].
其中, 0和\gamma>0是常数。
算法应用
蝙蝠算法已用于工程设计、分类等应用。把蝙蝠算法(BA)与遗传算法(GA)、PSO等方法進行比较,并用于训练神经网络,得出的结论清楚顯示:蝙蝠算法比其他算法有很好优势。
參考文獻
延伸閱讀
- 蝙蝠算法的详细的介绍:Yang, X. S., Nature-Inspired Metaheuristic Algoirthms, 2nd Edition, Luniver Press, (2010).
- [http://www.mathworks.com/matlabcentral/fileexchange/37582 Matlab/Octave程序]
评论 (0)