时序预测

2023-11-11

时序预测 | MATLAB实现基于PSO-LSTM、LSTM时间序列预测对比

效果一览

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

基本描述

MATLAB实现基于PSO-LSTM、LSTM时间序列预测。
1.Matlab实现PSO-LSTM和LSTM神经网络时间序列预测;
2.输入数据为单变量时间序列数据,即一维数据;
3.运行环境Matlab2020及以上,依次运行Main1LSTMTS、Main2PSOLSTMTS、Main3CDM即可,其余为函数文件无需运行,所有程序放在一个文件夹,data为数据集;
LSTM(长短时记忆模型)与粒子群算法优化后的LSTM(PSOLSTM)对比实验,可用于风电、光伏等负荷预测,时序预测,数据为单输入单输出,PSO优化超参数为隐含层1节点数、隐含层2节点数、最大迭代次数和学习率。

4.命令窗口输出MAE、MAPE、RMSE和R2;

程序设计

  • 完整程序和数据下载:私信博主回复MATLAB实现基于PSO-LSTM、LSTM时间序列预测对比
for i=1:PopNum%随机初始化速度,随机初始化位置
    for j=1:dim
        if j==dim% % 隐含层节点与训练次数是整数 学习率是浮点型
            pop(i,j)=(xmax(j)-xmin(j))*rand+xmin(j);
        else
            pop(i,j)=round((xmax(j)-xmin(j))*rand+xmin(j));  %
        end
    end
end

% calculate the fitness_value of Pop
pbest = pop;
gbest = zeros(1,dim);
data1 = zeros(Maxstep,PopNum,dim);
data2 = zeros(Maxstep,PopNum);
for i = 1:PopNum
    fit(i) = fitness(pop(i,:),p_train,t_train,p_test,t_test);
    f_pbest(i) = fit(i);
end
g = min(find(f_pbest == min(f_pbest(1:PopNum))));
gbest = pbest(g,:);
f_gbest = f_pbest(g);

%-------- in the loop -------------
for step = 1:Maxstep
    
    mbest =sum(pbest(:))/PopNum;
    % linear weigh factor
    b = 1-step/Maxstep*0.5;
    data1(step,:,:) = pop;
    data2(step,:) = fit;
    for i = 1:PopNum
        a = rand(1,dim);
        u = rand(1,dim);
        p = a.*pbest(i,:)+(1-a).*gbest;
        pop(i,:) = p + b*abs(mbest-pop(i,:)).*...
            log(1./u).*(1-2*(u >= 0.5));
        % boundary detection
        
        for j=1:dim
            if j ==dim
                if pop(i,j)>xmax(j) | pop(i,j)<xmin(j)
                    pop(i,j)=(xmax(j)-xmin(j))*rand+xmin(j);  %
                end
            else
                pop(i,j)=round(pop(i,j));
                if pop(i,j)>xmax(j) | pop(i,j)<xmin(j)
                    pop(i,j)=round((xmax(j)-xmin(j))*rand+xmin(j));  %
                end
            end
        end
        
        
        fit(i) = fitness(pop(i,:),p_train,t_train,p_test,t_test);
        if fit(i) < f_pbest(i)
            pbest(i,:) = pop(i,:);
            f_pbest(i) = fit(i);
        end
        if f_pbest(i) < f_gbest
            gbest = pbest(i,:);
            f_gbest = f_pbest(i);
        end
    end
    trace(step)=f_gbest;
    step,f_gbest,gbest
    result(step,:)=gbest;
end
or i=1:N%随机初始化速度,随机初始化位置
    for j=1:D
        if j==D% % 隐含层节点与训练次数是整数 学习率是浮点型
            x(i,j)=(xmax(j)-xmin(j))*rand+xmin(j);
        else
            x(i,j)=round((xmax(j)-xmin(j))*rand+xmin(j));  %
        end
    end
    
    v(i,:)=rand(1,D);
end

%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
    p(i)=fitness(x(i,:),p_train,t_train,p_test,t_test);
    y(i,:)=x(i,:);
    
end
[fg,index]=min(p);
pg = x(index,:);             %Pg为全局最优

%------进入主要循环,按照公式依次迭代------------

for t=1:M
    
    for i=1:N
        v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
        x(i,:)=x(i,:)+v(i,:);
        
        
        for j=1:D
            if j ~=D
                x(i,j)=round(x(i,j));
            end
            if x(i,j)>xmax(j) | x(i,j)<xmin(j)
                if j==D
                    x(i,j)=(xmax(j)-xmin(j))*rand+xmin(j);  %
                else
                    x(i,j)=round((xmax(j)-xmin(j))*rand+xmin(j));  %
                end
            end
        end
        temp=fitness(x(i,:),p_train,t_train,p_test,t_test);
        if temp<p(i)
            p(i)=temp;
            y(i,:)=x(i,:);
        end
        
        if p(i)<fg
            pg=y(i,:);
            fg=p(i);
        end
    end
    trace(t)=fg;
    result(t,:)=pg;

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127596777?spm=1001.2014.3001.5501
[2] https://download.csdn.net/download/kjm13182345320/86830096?spm=1001.2014.3001.5501

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时序预测 的相关文章

随机推荐

  • Ubuntu常用命令-基础

    Ubuntu 操作系统是基于 Linux 内核的开源操作系统 其命令行界面提供了大量的命令来管理系统和执行各种任务 以下是一些 Ubuntu 操作系统中常用的命令 cd 用于切换当前工作目录 例如 cd path to directory
  • cat EOF的追加与覆盖

    一 覆盖 bin bash cat lt lt EOF gt root test txt Hello My site is www 361way com My site is www 91it org Test for cat and EO
  • 张五常《思考方法》

    思考的方法 上 据说熊彼德 J A Schumpeter 曾在课堂上批评牛顿 指责这个如假包换的物理学天才只顾闭门思想 没有将他思考推理的方法公开而留诸后世 这批评有点道理 但牛顿在物理学上的丰功伟绩 是他在逃避瘟疫的两年中想出来的 其后就
  • Spring初识

    文章目录 Spring框架 一 Spring简介 一 Spring的介绍及需要的依赖 二 Spring的优点 二 Spring的组成及拓展 一 什么是Spring Boot 二 什么是Spring Cloud 三 IOC 控制反转 一 IO
  • vue 使用MD5加密

    概念 MD5是一种信息摘要算法 对称加密 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 用来确保信息传输完整一致性 它可以计算任意长度的输入字符串 得到固定长度的输出 而且这个算法是不可逆的 即使得到了加密的密文
  • tomcat的webapps下没项目的问题

    这几天在在写代码的时候一直都存在一个问题 就是把项目发布到comcat后在webapps下找不到项目 而work下面却有临时文件 浏览器也能正常访问 百度后网上的答案大都是 找到servers location 选择第二个 User tom
  • 压缩感知算法_深度学习压缩感知(DCS)历史最全资源汇总分享

    压缩感知 Compressed sensing 也被称为压缩采样 Compressive sampling 稀疏采样 Sparse sampling 压缩传感 它作为一个新的采样理论 它通过开发信号的稀疏特性 在远小于Nyquist 采样率
  • 解决 python execjs._exceptions.ProgramError

    return self eval identifier apply this args format identifier identifier args args File usr local lib python3 7 site pac
  • Redis7之发布订阅(七)最好别用

    7 1 介绍 是一种消息通信模式 发送者 PUBLISH 发送消息 订阅者 SUBSCRIBE 接收消息 可以实现进程间的消息传递 Redis可以实现消息中间件MQ的功能 通过发布订阅实现消息的引导和分流 功能 Redis客户端可以订阅任意
  • ChatGLM学习

    GLM paper https arxiv org pdf 2103 10360 pdf chatglm 130B https arxiv org pdf 2210 02414 pdf 前置知识补充 双流自注意力 Two stream se
  • 假ArrayList导致的线上事故......

    线上事故回顾 晚饭时 当我正沉迷于排骨煲肉质鲜嫩 汤汁浓郁时 产研沟通群内发出一条消息 显示用户存在可用劵 但进去劵列表却什么也没有 并附含了一个视频 于是我一边吃了排骨 一边查看消息点开了视频 en 视频跟描述一样 但没有系统告警 用户界
  • 设计模式之工厂方法模式(Factory Method)摘录

    23种GOF设计模式一般分为三大类 创建型模式 结构型模式 行为模式 创建型模式包括 1 FactoryMethod 工厂方法模式 2 Abstract Factory 抽象工厂模式 3 Singleton 单例模式 4 Builder 建
  • 数据挖掘实训 Week 6

    理论学习 1 决策树 1 1 概念 每个非叶节点表示一个特征属性上的测试 每个分支代表这个特征属性在某个值域上的输出 而每个叶节点存放一个类别 优点 决策过程直观 易理解 可解释性强 1 2 构造 属性是离散值且不要求生成二叉决策树 此时用
  • 手机断触怎么办_手机触摸屏失灵了怎么办,五种方法自己就能修好它!

    点击 蓝字 关注我们 做 优 品 创 名 品 欧仕极 手机触摸屏常见问题排查 01 触摸屏断触 我们在点击某个图标时 正常情况下 手机会有所反应 一般按键底色变灰 反之手机无应答 也就是我们说的断触现象 在确定不是外部条件 触摸屏有汗渍 异
  • 【android】searchView注意点

    1 安卓闪退 可能由于布局文件有问题 2 searchView 导入android support v7 widget SearchView是用在Actionbar Toolbar 的组建 要在onCreateOptionsMenu初始化
  • 【DevOps】DevOps的新出路:平台工程

    DevOps的新出路 平台工程 DevOps是一种文化 是敏捷的一部分 主要是解决引入敏捷活动的持续开发 快速反馈后带来的新的运维问题 然也 DevOps的初衷是让开发能够掌握运维知识 对自己的产品全生命周期负责 you build it
  • 【MySQL】漫谈死锁

    一 前言 死锁是每个MySQL DBA 都会遇到的技术问题 本文自己针对死锁学习的一个总结 了解死锁是什么 MySQL如何检测死锁 处理死锁 死锁的案例 如何避免死锁 二 死锁 死锁 是并发系统中常见的问题 同样也会出现在Innodb系统中
  • 【大数据技术】Apache Beam实战指南

    关于 Apache Beam 实战指南系列文章 随着大数据 2 0 时代悄然到来 大数据从简单的批处理扩展到了实时处理 流处理 交互式查询和机器学习应用 近年来涌现出诸多大数据应用组件 如 HBase Hive Kafka Spark Fl
  • 库文件

    一 库文件简述 将用户写好的程序打包成一个整体 可以简单的把库文件看成一种代码仓库 它提供给使用者一些可以直接拿来用的变量 函数或类 在库文件的发展史上经历了 无库 静态链接库 动态链接库 的时代 静态链接库与动态链接库都是共享代码的方式
  • 时序预测

    时序预测 MATLAB实现基于PSO LSTM LSTM时间序列预测对比 目录 时序预测 MATLAB实现基于PSO LSTM LSTM时间序列预测对比 效果一览 基本描述 程序设计 参考资料 效果一览 基本描述 MATLAB实现基于PSO