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

news2025/1/17 21:58:54

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

目录

    • 时序预测 | 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-Android - Activity

Activity代表具有用户界面的单个屏幕&#xff0c;就像Java的窗口或框架一样。Android Activity 是ContextThemeWrapper类的子类。 如果您使用过C&#xff0c;C或Java编程语言&#xff0c;那么您一定已经看到您的程序从 main()函数开始。与之非常相似&#xff0c;Android系统以 …

五、多表查询-4.3子查询-列子查询

一、概述 子查询返回的结果是一列&#xff08;可以是多行&#xff09;&#xff0c;这种子查询称为列子查询。 常用的操作符&#xff1a;in、not in、any、some、all 二、演示 【例1】查询“销售部”和“市场部”的所有员工信息 1、查询销售部和市场部的部门ID 返回的结果是…

highcharts 修改 箱线图每个箱子的颜色

在js中添加以下代码 plotOptions: {series: {colorByPoint: true},boxplot: {fillColor:null,colorBorPoint:true,colors: [red,#000000]),}}, 综合网上多方材料&#xff0c;得出

Linux之超强16进制命令:xxd(三十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

基于ssm+vue汽车售票网站源码和论文

基于ssmvue汽车售票网站源码和论文088 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让…

英文科技论文写作与发表-论文结构(第1章)

第1章 论文结构 不同科技领域论文的组织结构不尽相同。 各专业领域专家公认的一个要点是&#xff1a;论文的前一页半到两页最为重要&#xff0c;决定了读者是否愿意继续读下去&#xff0c;也是审稿人得出初步结论的依据。 着手之前&#xff0c;先组织论文结构&#xff0c;把…

基于web的仓库管理系统jsp商品进销存java源代码Mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于web的仓库管理系统 系统有2权限&#xff1a;管理…

软件测试面试题有什么经常被问到的?

软件测试面试&#xff0c;常问的问题如下&#xff1a; 1、自我介绍 2、公司的测试流程 3、测试用例设计方法的区别及应用场景 4、测试计划怎么写&#xff0c;包含哪些内容&#xff1f;和测试方案的区别是什么&#xff1f; 5、bug的处理机制和bug的定级 6、敏捷测试下的工作流程…

【漏洞复现】瑞友应用虚拟化系统 SQL注入

漏洞描述 瑞友天翼应用虚拟化系统&#xff08;GWT System&#xff09;是国内具有自主知识产权的应用虚拟化平台&#xff0c;是基于服务器计算&#xff08;Server-based Computing&#xff09;的应用虚拟化平台。瑞友天翼应用虚拟化系统存在SQL注入漏洞。 免责声明 技术文章…

谁能笑傲江湖:聊聊8月份中国数据库排行榜与国产数据库选型

引言 天下风云出我辈&#xff0c;一入江湖岁月催。 有人说&#xff0c;有数据库的地方&#xff0c;就有“江湖”。 曾经多少前辈满腔热血投入国产数据库事业中&#xff0c;悠悠数十载&#xff0c;又如白驹过隙&#xff0c;最终不知几家欢喜几家愁。 截止2023年8月份&#xf…

Spring 事务是什么 ?事务的传播机制?

目录 1. 什么是事务&#xff1f; 1. Spring 事务三大基础设施 1.1 PlatformTransactionManager 平台事务管理器 1.2 TransactionDefinition 事务属性定义 1.3 TransactionStatus 事务状态 3. Transaction 注解 4. Spring 事务角色 5. Transaction 注解属性 5.1 事务的回…

WebGPU加载Wavefront .OBJ模型文件

在开发布料模拟之前&#xff0c;我想使用 WebGPU 开发强大的代码基础。 这就是为什么我想从 Wavefront .OBJ 文件加载器开始渲染 3D 模型。 这样&#xff0c;我们可以快速渲染 3D 模型&#xff0c;并构建一个简单而强大的渲染引擎来完成此任务。 一旦我们有了扎实的基础&#x…

山西电力市场日前价格预测【2023-08-30】

日前价格预测 预测明日&#xff08;2023-08-30&#xff09;山西电力市场全天平均日前电价为317.95元/MWh。其中&#xff0c;最高日前电价为373.07元/MWh&#xff0c;预计出现在19: 45。最低日前电价为248.17元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a; 实…

手机云控设计思路

本系统为任务分发系统,上游发布任务或者接受其他平台系统分发的任务,对任务进行规则引擎处理后分类,由核心分发系统部分进行对存活的空闲终端进行分发任务,终端做完任务后进行反馈给任务系统. 核心要处理的点是终端存活与空闲的统计、任务平均分布下发给终端的算法,保证分布的…

RK3562 VS A40i 性能对比

RK3562作为瑞芯微新推出的低功耗、高性价比的通用SOC&#xff0c;在智能商显和工业控制领域又为深圳触觉智能增加了一款强有力的高性价比产品。RK3562是一款专为智能显示设备设计的高性能、低功耗四核应用处理器&#xff0c;其工规版本RK3562J还具备CAN FD接口&#xff0c;工作…

基于SSM的旅游管理系统jsp房源信息java源代码Mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于SSM的旅游管理系统 系统有2权限&#xff1a;管理…

创作与合作:AI绘画API与艺术家的共舞

引言 在数字时代&#xff0c;技术和艺术之间的界限正在变得越来越模糊。人工智能&#xff08;AI&#xff09;绘画API是一个典型的例子&#xff0c;它已经开始改变我们对创作和艺术的理解方式。然而&#xff0c;与传统艺术手法相比&#xff0c;AI绘画API并不是要取代艺术家&…

JavaScript原型链污染

前言 在浏览某个论坛的时候&#xff0c;第一次看到了JavaScript原型链污染漏洞。当时非常的好奇&#xff0c;当时我一直以为js作为一种前端语言&#xff0c;就算存在漏洞也是针对前端&#xff0c;不会危害到后端&#xff0c;因此我以为这种漏洞危害应该不大。可当我看到他的漏…

Feign在进行序列化时遇到泛型类型的擦除,导致反序列化时成了LinkedHashMap

Feign在进行序列化时遇到泛型类型的擦除&#xff0c;导致反序列化时成了LinkedHashMap 故障背景问题分析修复方案修复方案一 避免使用泛型修复方案二 解析data泛型的时候处理 故障背景 假设我们有一个Feign接口 import org.springframework.cloud.openfeign.FeignClient; imp…