AHA-VMD可以应用于时间序列预测、故障诊断之中,对AHA进行一定改进即可作为一个创新点。
使用群智能算法对VMD的参数进行优化是一种常见的处理方式。人工蜂鸟算法(AHA)是2021年被提出的群智能优化算法,发布于一区期刊,是近几年较新的算法之一,下面使用AHA对VMD的参数进行优化。
VMD有两个重要参数K和α需要人为设定,许多论文的创新点都是基于此选择一个优化算法对VMD的参数进行优化处理。本文以排列熵为AHA的目标函数,排列熵可以衡量时间序列复杂程度,目的是获得排列熵最小的IMF分量。
以ETTh数据集为例,对其中的一个变量HUFL进行VMD分解,部分Python代码如下:
def main():
SourcePath = r'../data/ETTh1.csv'
TargetPath = r'../Result/HUFL(分解后).csv'
params = [] # DecomposeAndSave的参数列表
# 读取CSV文件中的数据
data_df = pd.read_csv(SourcePath)
Var = 'HUFL' # 变量名
begin = 0
end = 1000
input_data = data_df[Var].values[begin:end] # 分解的数据范围
time_start = time.time() # 记录算法开始时间
max_it = 200 # 迭代次数
npop = 50 # 种群数量
#调用AHA算法
best_x, best_f, his_best_fit, iteration_results= AHA(max_it, npop, input_data)
time_end = time.time() # 记录算法结束时间
# 绘制AHA的收敛曲线
if best_f > 0:
yscale('log')
plot(arange(1, max_it + 1), his_best_fit, 'r')
else:
plot(arange(1, max_it + 1), his_best_fit, 'r')
print(f"The running time is: {time_end - time_start} s") # 输出运行时间
print('The best solution is: ', best_x)
print('The fitness is: ', best_f)
plt.xlim([0, max_it + 1])
plt.xlabel('Iterations')
plt.ylabel('Fitness')
plt. title('AHA')
# 保存图像
plt.savefig('../Result/aha_convergence_plot.png')
params.append(Var)
params.extend(best_x)
params.append(begin)
params.append(end)
# 分解并保持分解后的文件
DecomposeAndSave(SourcePath, TargetPath, params)
参考文献:Zhao, Wei-guo et al. “Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications.” Computer Methods in Applied Mechanics and Engineering (2022): n. pag.
完整代码可私信!