回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测

news2024/12/23 15:35:05

回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测

目录

    • 回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测
      • 效果一览
      • 基本描述
      • 程序设计
      • 参考资料

效果一览

1
2

3
4
5
6
7
8
9

11
12

基本描述

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

程序设计

  • 完整程序和数据下载:私信博主回复QPSO-BiLSTM、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/702296.html

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

相关文章

【综合布线技术】网络杂谈(17)之什么是综合布线系统

涉及知识点 什么是综合布线系统&#xff0c;综合布线的特点&#xff0c;综合布线的标准&#xff0c;综合布线 6 个子系统&#xff0c;综合布线系统的构成&#xff0c;深入了解综合布线技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注…

chatgpt赋能python:Python量化指标库介绍

Python量化指标库介绍 Python是一种高级编程语言&#xff0c;因其简单易用、开源免费、生态环境完备等优点&#xff0c;已成为量化分析领域的首选编程语言之一。随着金融市场越来越复杂&#xff0c;金融量化分析的需求也日益增长。为了满足这一需求&#xff0c;Python量化指标…

【OJ比赛日历】快周末了,不来一场比赛吗? #07.01-07.07 #11场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-07-01&#xff08;周六&#xff09; #3场比赛2023-07-02…

Yarn的实现原理

Yarn作为分布式集群的资源调度框架&#xff0c;它的出现伴随着Hadoop的发展&#xff0c;使Hadoop从一个单一的大数据计算引擎&#xff0c;成为一个集存储、计算、资源管理为一体的完整大数据平台&#xff0c;进而发展出自己的生态体系&#xff0c;成为大数据的代名词。 Yarn的发…

谷歌云:全面推出 AlloyDB for PostgreSQL 与数据库迁移服务

【本文由Cloud Ace 整理发布。Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培…

在Android Studio 中运行React Native 项目

项目根目录执行命令安装开发依赖 yarn检查项目SDK、NDK、JDK否配置正确 点击 Android Studio 里点击大象 全部下载完毕&#xff0c;点击运行按钮&#xff0c;编译项目 连接真机的两种方式 无线连接 adb devices adb tcpip 5555 #连接端口默认5555 adb connect 192.168.0…

低功耗测距语音方案,4路PWM调光,三合一语音芯片WTV890-B004

随着智能门锁市场的不断发展&#xff0c;人们对于智能化、便捷化的需求也越来越高。在这个背景下&#xff0c;深圳唯创知音研发出了三合一语音芯片——WTV890-B004。这款创新产品集低功耗红外测距、语音播放和4路PWM调光功能于一体&#xff0c;为您打造一个高效、智能化方案。 …

上传自己的npm依赖包

有时候我们需要对某个依赖包的源码进行修改进行使用&#xff0c;但我们又不能对已有的源码官网进行上传更新&#xff0c;这时&#xff0c;我们可以获取依赖包进行修改后&#xff0c;自行部署到https://npmjs.com中 1.官网https://npmjs.com中注册一个账号&#xff08;账号&…

微信小程序 editor图片上传到node服务器并展示在当前页面

前端 html <!-- 富文本 --><view class"container"><editor id"editor" ref"editor" :placeholderplaceholder input"onInput" ready"onEditorReady"></editor></view><view class…

pytorch 的matmult()函数详解

torch.matmul()也是一种类似于矩阵相乘操作的tensor连乘操作。但是它可以利用python中的广播机制&#xff0c;处理一些维度不同的tensor结构进行相乘操作。 matmul 就是矩阵求 叉乘 如果是二维矩阵&#xff0c;两个矩阵的大小应该为m*n &#xff0c;n*m。 一维向量的乘积&…

使用 .NET 开始 OpenAI Completions

作者&#xff1a;Luis Quintanilla 翻译&#xff1a;Alan Wang 排版&#xff1a;Alan Wang 欢迎来到有关 OpenAI 和 .NET 的博客系列&#xff01; 如果您是新来的&#xff0c;请查看我们的第一篇文章&#xff0c;我们在其中介绍了系列内容&#xff0c;并向您展示如何在 .NET 中…

vue3 elementplus table表格多行合计

表格底部如何多行合计 1.先在标签上定义合计方法 <el-table:data"data":summary-method"getSummaries":show-summary"true"selection-change"handleSelectionChange">2.文件头部引入h函数渲染多行div&#xff0c;BigNumber 防…

2023上半年软考系统分析师科目一整理-15

2023上半年软考系统分析师科目一整理-15 信息系统的性能评价指标是客观评价信息系统性能的依据&#xff0c;其中&#xff0c;&#xff08; &#xff09;是指系统在单位时间内处理请求的数量。 &#xff08;60&#xff09;A.系统响应时间 B.吞吐量 C.资源利用率 D.并发用户数 吞…

(四)灌溉系统硬件部分(更换为esp32实现)

ESP32入门&#xff1a;添加链接描述 模拟ESP32环境的在线工具&#xff1a;地址 Esp32的引脚知识&#xff1a;添加链接描述 ESP32(基于Arduino)连接EMQX的Mqtt服务器上传信息与命令控制:添加链接描述 TTL转RS-485模块:添加链接描述 等ttl转rs485模块到了&#xff0c;参考这篇…

【xss漏洞-svg标签】详解svg标签+触发XSS

目录 一、理论知识 SVG标签的使用 二、实战部分 一、理论知识 SVG标签的使用 代码中的SVG标签和onload事件本身并不依赖于其他特定的标签来触发弹窗。无论它们被放置在哪个标签内&#xff0c;只要浏览器解析并加载了这个SVG标签&#xff0c;onload事件就会被触发。 注&am…

SpringIOC机制详解

一、IOC概述及作用 &#xff08;一&#xff09;IOC的简介&#xff0c;设计思想 SpringIOC&#xff1a;IOC是Inversion of Control的缩写&#xff0c;多数书籍翻译成“控制反转”。 IOC这个概念简单来说就是把复杂系统分解成相互合作的对象&#xff0c;这些对象类通过封装以后…

Java 设计模式实战系列—工厂模式

在 Java 开发中&#xff0c;对象的创建是一个常见的场景&#xff0c;如果对象的创建和使用都写在一起&#xff0c;代码的耦合度高&#xff0c;也不利于后期的维护。我们可以使用工厂模式来解决这个问题&#xff0c;工厂模式是一个创建型模式&#xff0c;将对象的创建和使用分离…

树莓派使用Nginx 搭建轻量级网站远程访问

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 转载自cpolar极点云文章&#xff1a;树莓派使用Nginx 搭建轻量级网站远程访问 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#…

AMEYA360报道:瑞萨电子坐上MCU头把交椅背

综合IC Insights和拓墣产业研究院多方数据来看&#xff0c;2020年之后全球MCU市场增长动力强劲&#xff0c;尤其是汽车MCU市场&#xff0c;有着爆发的态势。具体来看&#xff0c;2022年全球MCU市场规模达到215亿美元&#xff0c;2021年-2026年期间市场的年复合增长率预计将达到…

Java性能权威指南-总结21

Java性能权威指南-总结21 Java EE性能调优对象序列化transient字段覆盖默认的序列化压缩序列化数据 Java EE性能调优 对象序列化 不同系统间的数据交换可以使用XML、JSON和其他基于文本的格式。Java进程间交换数据&#xff0c;通常就是发送序列化后的对象状态。尽管序列化在J…