2021人工蜂鸟算法优化的VMD以排列熵为目标函数(Python版可直接运行)

AHA-VMD可以应用于时间序列预测、故障诊断之中,对AHA进行一定改进即可作为一个创新点。

        使用群智能算法对VMD的参数进行优化是一种常见的处理方式。人工蜂鸟算法(AHA)是2021年被提出的群智能优化算法,发布于一区期刊,是近几年较新的算法之一,下面使用AHA对VMD的参数进行优化。

        VMD有两个重要参数K和α需要人为设定,许多论文的创新点都是基于此选择一个优化算法对VMD的参数进行优化处理。本文以排列熵为AHA的目标函数,排列熵可以衡量时间序列复杂程度,目的是获得排列熵最小的IMF分量。

ETTh数据集的部分数据

        以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)
AHA的收敛曲线
分解后图像
文件列表

参考文献: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.


        完整代码可私信!

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值