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,:] = v[i