1.效果图
2.代码
import numpy as np
import math
import matplotlib.pyplot as plt
# 定义目标函数(示例函数为Rastrigin函数)
def rastrigin(x):
return 10 * len(x) + np.sum(x**2 - 10 * np.cos(2 * np.pi * x))
# 蝙蝠优化算法函数
def bat_algorithm(f, D, N, N_gen, A, r, Qmin, Qmax):
# 初始化蝙蝠群体
x = np.random.uniform(-5.12, 5.12, (N, D))
v = np.zeros((N, D))
fval = np.zeros(N)
for i in range(N):
fval[i] = f(x[i,:])
fmin = np.min(fval)
best = x[np.argmin(fval),:]
# 记录迭代过程中的最优解和最优值
best_history = [fmin]
# 开始迭代
for t in range(N_gen):
for i in range(N):
# 根据当前速度更新位置
x[i,:] = x[i,:] + v[i,:]
# 根据蝙蝠自身的特点调整频率和脉冲率
Q = Qmin + (Qmin - Qmax) * np.random.rand()
v[i,: