萤火虫的闪光,其主要目的是作为一个信号系统,以吸引其他的萤火虫。将搜索和优化过程模拟成萤火虫之间相互吸引及位置迭代更新的过程,将求解最优值的问题看作是寻找最亮萤火虫的问题。
将空间各点看成萤火虫,发光强的会吸引发光弱的萤火虫。在发光弱的萤火虫向发光强的萤火虫移动的过程中,完成位置的迭代,从而找出最优位置,亮度是随着距离的增加而减少的。如果没有找到一个比给定萤火虫更亮,它会随机移动。
import numpy as np
import matplotlib.pyplot as plt
import copy
import time
class FA:
def __init__(self, D, N, Beta0, gama, alpha, T, bound):
self.D = D # 问题维数 2
self.N = N # 群体大小 20
self.Beta0 = Beta0 # 最大吸引度 初始化为1
self.gama = gama # 光吸收系数 0.000001
self.alpha = alpha # 步长因子 0.97
self.T = T # 最大迭代次数 100
self.X = (bound[1] - bound[0]) * np.random.random([N, D]) + bound[0] # 随机初始化萤火虫的坐