时序预测

2023-10-31

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

效果一览

1
2

在这里插入图片描述

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

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

基本描述

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

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

程序设计

  • 完整程序和数据下载:私信博主回复MATLAB实现基于PSO-BiLSTM、BiLSTM时间序列预测对比
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(使用前将#替换为@)

时序预测 的相关文章

随机推荐

  • vue 后端数据成功返回 页面不渲染_vue能获取到数据数据却渲染不到页面上,为什么?...

    问题描述 从后台可以拿到数据 并打印在控制台但是就是渲染不到页面 我也不知道是为什么 感觉都正常 问题出现的环境背景及自己尝试过哪些方法 尝试用let this this来代替this但是还是没用并且报出success是undefined的
  • 121-----JS基础-----滚轮事件(鼠标)

    一 代码 很简单
  • angularjs--------选择下拉框

    div class id div
  • The NVIDIA driver on your system is too old (found version 10000)

    问题 原因是因为CUDA版本与pytorch版本不匹配 解决办法 查看自己的CUDA版本 我的是CUDA 10 0 https pytorch org 把这行复制到Anaconda Prompt窗口就行了
  • CPU虚拟化

    CPU虚拟化 中央处理器 CPU 是计算机的主要设备之一 是计算机中的核心配件 在计算机体系结构中 CPU是对计算机的所有硬件资源 如存储器 输入输出单元 进行控制调配 执行通用运算的核心硬件单元 计算机系统中所有软件层的操作 最终都将通过
  • @ControllerAdvice 的介绍及三种用法

    学习下 ControllerAdvice 首先 ControllerAdvice本质上是一个 Component 因此也会被当成组建扫描 加了 ControllerAdvice的类为那些声明了 ExceptionHandler InitBi
  • IP地址分类(A类 B类 C类 D类 E类)

    IP地址由四段组成 每个字段是一个字节 8位 最大值是255 IP地址由两部分组成 即网络地址和主机地址 网络地址表示其属于互联网的哪一个网络 主机地址表示其属于该网络中的哪一台主机 二者是主从关系 IP地址的四大类型标识的是网络中的某台主
  • 如何完美解答面试问题——HashMap的扩容机制(JDK1.7)

    大家好 我是孤焰 今天要谈一谈在面试过程中几乎被每个面试官都会提到的一个问题 HashMap的扩容机制是什么 由于我也是刚刚学习编程的小白 所以此篇博文将参考了多篇博文 最后总结而成 此篇博文仅介绍JDK1 8版本之前的HashMap扩容机
  • Unity3D 动画操作

    导入模型 https blog csdn net shenqiankk article details 100064940 方式一 Animator animation SetBool 状态转换的参数 true false 在创建对象前 先
  • 【计算机网络】数据链路层(一):数据帧和物理寻址

    数据链路层是物理层的上层 物理层是把电脑连接起来的物理手段 它主要规定了网络的一些电气属性 其作用是负责传送0和1的电信号 数据链路层位于物理层的上层 简单的阐述它的作用就是确定0和1的分组方式 下面我们就详细的介绍数据链路层 上面是TCP
  • 阿里云DNS 新增云上线路的智能解析功能

    简介 企业在云上部署单元化架构或内部服务链路时 需要考虑让数据 单元 离用户更近 避免跨单元获取数据 以此来满足自身低延时的诉求 阿里云DNS 新增基于云上链路的调度功能 进一步优化DNS智能解析 给云上用户提供更精准的流量调度能力 传统解
  • 基于STM32串口通信的ESP8266WiFi模块使用

    掌握esp8266的使用可以实现真正的万物物联 esp8266wifi通信对于MCU而言归结到底还是串口或spi通信 因此 掌握RS232通信协议 SPI通信协议以及esp8266的配置就可以基本搞定WiFi模块的使用 参考文章 1 ESP
  • 安全帽佩戴检测算法模型训练详细流程

    一 任务描述 实际施工现场需要对每个进出的人员进行安全帽监测 对未佩戴安全帽的人员平台进行风险告警 通知工作人员并记录下来 主要包括三类目标物体 头盔 helmet 人 person 和人头 head 二 实现流程 1 数据集 直接用的网络
  • C++I/O输入输出

    1 流和缓冲区 我们通常说的流 可以理解为从一个地方流向另一个地方 在C 中的I O是指的输入 输出端口 那么I O流就可以简单的理解为在外部设备和内存之间的数据流动 直白的讲 流实际上是一个字节序列 即 字节流 而C 程序把输入输出看做字
  • WIN11修改右键菜单默认展开

    想要展开右键菜单 像Windows 10那样 首先打开Terminal写入注册表项 展开 reg exe add HKCU Software Classes CLSID 86ca1aa0 34aa 4e8b a509 50c905bae2a
  • JAVA中的数据结构和底层原理

    JAVA中的数据结构简述 JAVA中常用的数据结构主要有这样几种分类 List 可存储相同的值 确切讲是a equals b 时 二者都可存储 我们会挑选适宜连续存储的ArrayList和链式存储的LinkedList进行介绍 Set 不可
  • 数据结构-leetcode-环形链表

    解题图解 代码如下 bool hasCycle struct ListNode head struct ListNode fast head 在这里fast是快指针 head作为low指针 因为这个题不需要做修改也只需返回true或fals
  • Web API

    文章目录 Web API基本认知 获取DOM元素 根据Css选择器来获取DOM元素 其它获取DOM元素方法 操作元素内容 操作元素属性 常用属性 元素样式属性 表单元素属性 定时器 间歇函数 定时器 延时函数 事件监听 事件类型 事件对象
  • RV1126_RV1109从设备树中读取native-mode节点信息流程

    1 video of display timing c struct display timings of get display timings 在该函数中获取native mode节点信息 返回值就是获取到的timing 下步查看谁调用
  • 时序预测

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