新算法!!! TSOA-CNN-LSTM-Attention凌日优化卷积、长短期记忆网络融合注意力机制的多变量回归预测程序,数据由Excel导入,直接运行_tsoa寻优算法流程图-程序员宅基地

技术标签: matlab  算法  cnn  lstm  网络  回归  

适用平台:Matlab2023版及以上

凌日优化算法(Transit Search Optimization Algorithm,TSOA)是2022年8月提出的一种新颖的元启发式算法,当一颗行星经过其恒星前方时,会导致恒星的亮度微弱地下降,这被称为凌日现象。

该算法基于著名的系外行星探索方法,即凌日搜索(Transit Search,TS)。在凌日算法中,通过研究在一定间隔内从恒星接收到的光,检查亮度的变化,如果观察到接收到的光量减少,则表明行星从恒星锋面经过。创新性较高。

该算法提出时间很短,目前还没有套用这个算法的文献,先到先得,抓住该创新点哦!

TSOA算法的优化过程包括以下几个阶段:

  • 星系阶段:选择搜索空间内的随机点作为星系中心,确定可居住区域,选择有最佳生存潜力的区域。

  • 凌日阶段:重新测量从星体接收到的光线量,检测光线信号是否减少以确定是否有行星通过。

  • 行星阶段:如果检测到凌日,确定行星的初始位置,并更新行星位置。

  • 邻居阶段:如果未检测到凌日,分析当前星体附近可能存在的行星。

  • 开发阶段:分析行星的特性和条件,以评估其作为生命宿主的潜力。

每个阶段的数学细节涉及复杂的方程和概率计算,模拟了在天文观测中发现和评估行星的过程。该算法的数学创新主要在于它将天文物理学中的凌日法原理和信噪比概念引入到优化问题的求解中,这一独特方法在多个基准问题上显示出了优越的性能。

优化套用:

我们利用TSOA对我们的CNN-LSTM-SelfAttention卷积神经网络(CNN)结合长短期记忆网络(LSTM)融合多头自注意力机制(Multihead Self-Attention)的回归预测程序代码中的超参数进行优化;构成TSOA-CNN-Attention预测模型。

TSOA-CNN-LSTM-Multihead SelfAttention预测模型的创新性:CNN-LSTM-SelfAttention是一种深度学习模型结构,通常用于处理序列数据,尤其适用于具有时空相关性的序列数据。这个结构结合了三种不同类型的神经网络层,以充分捕捉数据中的空间和时间特征,并具有以下结构:

卷积神经网络 (CNN):CNN用于捕捉序列数据中的空间相关性。它通过卷积核在输入数据上滑动,从局部区域提取特征,这有助于检测输入序列中的局部模式和特征。在CNN层之后通常会添加池化层来减小数据的空间维度,以降低计算复杂性。

长短时记忆网络 (LSTM):长短期记忆网络是一种循环神经网络(RNN)的变体,专门用于处理序列数据的建模。LSTM通过门控机制(输入门、遗忘门和输出门)来控制对过去信息的遗忘和记忆,从而有效地处理长序列依赖关系。在时序预测中,LSTM可以用于学习序列数据中的长期依赖关系,捕捉到序列中的时间演化模式。

自注意力层 (Self-Attention):Self-Attention自注意力机制是一种用于模型关注输入序列中不同位置相关性的机制。它通过计算每个位置与其他位置之间的注意力权重,进而对输入序列进行加权求和。自注意力能够帮助模型在处理序列数据时,对不同位置的信息进行适当的加权,从而更好地捕捉序列中的关键信息。在时序预测任务中,自注意力机制可以用于对序列中不同时间步之间的相关性进行建模。

TSOA超参数优化:凌日优化算法对模型中的难以确定的学习率、卷积核大小、神经元个数等参数进行寻优,使得模型的结构更加合理,提高了预测精度,对模型结构和训练参数进行优化,免除了人工选取参数环节,避免 了人为造成的不确定性因素,强化了模型的自适应 选择参数能力。

结合这四种层的结构,模型首先通过CNN层来捕捉输入序列的空间特征,然后通过LSTM层来捕捉时间相关性,最后通过Self-Attention层来更好地理解序列内部的关联。这种综合结构可以更全面地处理具有时空相关性的序列数据,引入TSOA优化算法,对CNN-LSTM-Attention模型参数进行寻优,使得模型的结构更加合理,提高了预测精度,构成TSOA-CNN-LSTM-Attention复合预测模型。适用于,风速预测,光伏功率预测,发电功率预测,海上风电预测,碳价预测等等。它的创新点在于综合了不同类型的神经网络层,使其适用于广泛的应用,从而提高了对序列数据的建模和分析能力。

功能:

​①多变量特征输入,单序列变量输出,输入前一天的特征,实现后一天的预测,超前24步预测。

②通过TSOA优化算法优化学习率、卷积核大小、神经元个数,这3个关键参数,以最小MAPE为目标函数。

③提供损失、RMSE迭代变化极坐标图;测试对比图;适应度曲线(若首轮精度最高,则适应度曲线为水平直线)。

④提供MAPE、RMSE、MAE等计算结果展示。

适用领域:

风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。

数据集格式:

前一天18个气象特征,采样时间为24小时,输出为第二天的24小时的功率出力,也就是18×24输入,1×24输出,一共有75个这样的样本。

预测值与实际值对比结果:

训练误差曲线的极坐标形式(误差由内到外越来越接近0):

适应度曲线:

TSOA部分核心代码:

% 银河系中心的初始位置
Galaxy_Center.Location = unifrnd(Vmin,Vmax,1,nV);
Galaxy_Center.Cost = ObjectiveFunction(Galaxy_Center.Location);
​
% 银河系居住区
for l = 1:(ns*SN)
    zone = randi(2);
    if zone ==1
        difference = rand().*(Galaxy_Center.Location)-(unifrnd(Vmin,Vmax,1,nV));
    else
        difference = rand().*(Galaxy_Center.Location)+(unifrnd(Vmin,Vmax,1,nV));
    end
    Noise = ((rand(1,nV)).^3).*(unifrnd(Vmin,Vmax,1,nV));
    region(l).Location = Galaxy_Center.Location + difference - Noise;
    region(l).Location = max(region(l).Location, Vmin);
    region(l).Location = min(region(l).Location, Vmax);
    [region(l).Cost,region(l).Value,region(l).net,region(l).info] = ObjectiveFunction(region(l).Location);
end
​
% 从银河系的银河栖息区挑选恒星的百分比
[Sort,index]=sort([region.Cost]);
for i = 1:ns
    selected_regions(i) = region(index(1,i));
    for k = 1:SN
        zone = randi(2);
        if zone ==1
            difference = rand().*(selected_regions(i).Location)-rand().*(unifrnd(Vmin,Vmax,1,nV));
        else
            difference = rand().*(selected_regions(i).Location)+rand().*(unifrnd(Vmin,Vmax,1,nV));
        end
        Noise = ((rand(1,nV)).^3).*(unifrnd(Vmin,Vmax,1,nV));
        new.Location = selected_regions(i).Location + difference - Noise;
        new.Location = max(new.Location, Vmin);
        new.Location = min(new.Location, Vmax);
        [new.Cost,new.Value,new.net,new.info] = ObjectiveFunction(new.Location);
        if new.Cost < Stars(i).Cost
            Stars(i) = new;
        end
    end
end
​
% 最佳行星的初始位置(起点:其恒星)
Best_Planets = Stars;

部分图片来源于网络,侵权联系删除!

欢迎感兴趣的小伙伴关注,小编会继续推送更有质量的学习资料、文章和程序代码!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_48747334/article/details/135053014

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签