最新!2024顶级SCI优化!TTAO-CNN-BiGRU-MSA三角拓扑聚合优化、双向GRU融合注意力的多变量回归预测程序!

适用平台:Matlab 2023版及以上

TTOA三角聚合优化算法,将在2024年3月正式发表在中科院1区顶级SCI期刊《Expert Systems with Applications》上。

该算法提出时间极短,目前以及近期内不会有套用这个算法的文献。新年伊始,尽快拿下!

我们利用该创新性极高的优化算法对我们的CNN-BiGRU-Attention时序和空间特征结合-融合注意力机制的回归预测程序代码中的超参数进行优化,构成TTAO-CNN-BiGRU-MSA多变量回归预测模型.

文献解读:这个算法的启发来源是类似三角形的拓扑学性质。名为Triangulation Topology Aggregation Optimizer,TTAO)的新型数学元启发算法中,每个三角形拓扑单元表示一个搜索个体。TTAO算法通过聚合形成不同大小的类似三角形拓扑单元,以作为基本的进化单元。与其他元启发算法不同,TTAO算法提出了一种新的进化指导模式,主要依靠每个三角形单元中的最佳个体指导单元内个体的进化。因此,这种进化种群不仅依赖于全局引导的优秀个体,还吸收了每个单元中最佳个体的有效正向信息,有助于解决复杂优化问题,克服传统方法在全局搜索时进入局部极值的缺点。接下来,文章通过与其它对比算法:HHO ;SCSO;SAO;BWO;AOA等测试,验证了TTAO算法具有更强的收敛性能。在CEC2017函数和8个工程问题上评估了其优化性能。实验结果表明,TTAO算法在30维CEC2017函数上具有优越的收敛性和稳定性。

原理:许多领域通常将研究对象划分为三角形拓扑单元,并建立相关模型进行识别和分析:如金字塔,三角尺等。

在有限或无限维空间中,三角形拓扑可以被视为二维子空间的子图。与其他拓扑相比,三角形在某些封闭系统中更简单、更稳定。

TTAO算法主要通过以下两个阶段进行优化过程:

  • ①不同单元之间的聚合

  • ②相似三角形单元内的聚合

在这个过程中,不断在搜索空间中生成新的顶点,并用它们构建不同大小的相似三角形。TTAO算法将每个三角形视为具有四个个体的基本进化单元,即三角形的三个顶点和一个内部随机顶点。聚合的核心是将具有优良特性的顶点分组在一起。具体来说,TTAO算法通过聚合在不同拓扑单元之间或内部收集具有正向信息的顶点,不断构建相似三角形。

优化步骤:

  • 算法通过迭代进化,在搜索空间中不断生成新的顶点,以构建不同大小的相似三角形。

  • 每个三角形都被视为一个基本进化单元,包含四个搜索个体,即三角形的三个顶点和一个内部随机顶点。

  • TTAO算法的核心是聚集具有优越特性的顶点。具体而言,TTAO算法通过聚集来自不同拓扑单元的优秀个体信息,以创建新的可行解。

  • 算法通过三个阶段的更新过程来实现全局搜索和局部挖掘:生成三角拓扑单元、通用聚集和局部聚集。

构成的TTAO-CNN-BiGRU-MSA多变量回归预测模型的创新性在于以下几点:

TTAO算法区别于传统智能算法的创新性:

①细胞聚类策略:TTAO 算法采用三角形拓扑单元展开优化过程,每个三角形拓扑单元具有一个顶点,这些顶点分别代表了搜索个体。这种细胞聚类策略使得 TTAO 算法能够更好地挖掘局部和全局信息。

②两级聚合策略:TTAO 算法采用了两级聚合策略:广义聚合和局部聚合。广义聚合主要关注全局探索,通过不同三角形拓扑单元间的信息交换来找到更有希望的位置;局部聚合则使得每个单元内的信息得到有效开发,确保准确地探索局部区域。

③自适应策略:TTAO 算法将上一代的有效信息自适应地继承下来,从而保持种群的多样性。这种自适应策略使得 TTAO 算法能够快速收敛到全局最优解。

④个体引导进化策略:TTAO算法提出了一种新的关键个体引导进化策略,使得该算法不仅依赖于精英个体的全局引导进化,还吸收了每个单元中最佳个体的积极正向信息。

优化套用—基于三角拓扑聚合优化算法(TTAO)、卷积神经网络(CNN)和双向门控循环单元网络(BiGRU)融合注意力机制(Multi-Head Self Attention,MSA)的超前24步多变量时间序列回归预测算法TTOA-CNN-BiGRU-MSA

功能:

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

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

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

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

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

数据集格式:

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

预测值与实际值对比;训练特征可视化:

训练误差曲线的极坐标形式(误差由内到外越来越接近0);适应度曲线(误差逐渐下降)

误差评估:

TTAO部分核心代码:

完整代码:https://mbd.pub/o/bread/ZZqZlZ1y
%  三角拓扑聚合优化器
function [fbest,Xbest,Convergence_curve,BestPred,bestNet,bestInfo]=TTAOtest(PopSize,T,Low,Up,Dim,fobj)

N=floor(PopSize/3); % 初始化N/3个个体。
X1=rand(N,Dim).*(Up-Low)+Low;
t=1;
while t<T+1
    %% 形成三角拓扑单元
    l=9*exp(-t/T);% 三角拓扑单元的大小。
    for i=1:N
        theta=rand(1,Dim)*pi;
        h1=cos(theta);
        h2=cos(theta+pi/3);
        X2(i,:)=X1(i,:)+l*h1;
        X3(i,:)=X1(i,:)+l*h2;
    end
    X2 = max(X2,Low);
    X2 = min(X2,Up);
    X3 = max(X3,Low);
    X3 = min(X3,Up);
    r1=rand;r2=rand;
    X4=r1*X1+r2.*X2+(1-r1-r2)*X3;
    X4 = max(X4,Low);
    X4 = min(X4,Up);
    for i=1:N
        [X1_fit(i), value1{i},Net1{i},Info1{i}] =fobj(X1(i,:));
        [X2_fit(i), value2{i},Net2{i},Info2{i}] =fobj(X2(i,:));
        [X3_fit(i), value3{i},Net3{i},Info3{i}] =fobj(X3(i,:));
        [X4_fit(i), value4{i},Net4{i},Info4{i}] =fobj(X4(i,:));
    end
    X=[X1 X2 X3 X4];
    fit=[X1_fit;X2_fit;X3_fit;X4_fit];
    value = [value1; value2; value3; value4];
    Net = [Net1; Net2; Net3; Net4];
    Info = [Info1; Info2; Info3; Info4];

    [X_sort,index]=sort(fit);
    %% 在每个三角拓扑单元中找到最优点和次优点。
    for i=1:N
        X_best_1(i,:)=X(i,(index(1,i)-1)*Dim+1:index(1,i)*Dim);
        X_best_2(i,:)=X(i,(index(2,i)-1)*Dim+1:index(2,i)*Dim);
    end
    best_fit_1=X_sort(1,:);
    best_fit_2=X_sort(2,:);

    sorted_value(:, 1) = value(index(:, 1), 1);
    sorted_value(:, 2) = value(index(:, 2), 2);
    best_value_1 = sorted_value(1,:);
    best_value_2 = sorted_value(2,:);

    sorted_Net(:, 1) = Net(index(:, 1), 1);
    sorted_Net(:, 2) = Net(index(:, 2), 2);
    best_Net_1 = sorted_Net(1,:);
    best_Net_2 = sorted_Net(2,:);

    sorted_Info(:, 1) = Info(index(:, 1), 1);
    sorted_Info(:, 2) = Info(index(:, 2), 2);
    best_Info_1 = sorted_Info(1,:);
    best_Info_2 = sorted_Info(2,:);

    %% 通用聚合
    for i=1:N
        r=rand(1,Dim);
        X_new=X_best_1;
        X_new(i,:)=[];
        l1=randi(N-1);
        X_G(i,:)=(r.*X_best_1(i,:)+(ones(1,Dim)-r).*X_new(l1,:));
        X_G(i,:) = max(X_G(i,:),Low);
        X_G(i,:) = min(X_G(i,:),Up);
        [X_fit_G(i), valueG{i},NetG{i},InfoG{i}]=fobj(X_G(i,:));
        if X_fit_G(i)<best_fit_1(i)
            X_best_1(i,:)=X_G(i,:);
            best_fit_1(i)=X_fit_G(i);
            best_value_1{i}=valueG{i};
            best_Net_1{i}=NetG{i};
            best_Info_1{i}=InfoG{i};

        elseif X_fit_G(i)<best_fit_2(i)
            X_best_2(i,:)=X_G(i,:);
            best_value_2{i}=valueG{i};
            best_Net_2{i}=NetG{i};
            best_Info_2{i}=InfoG{i};
        end
    end
    %% 局部聚合
    for i=1:N
        a=(exp(1)-(exp(1))^3)/(T-1);
        b=(exp(1))^3-a;
        alpha=log(a*t+b);
        X_C(i,1:Dim)=X_best_1(i,1:Dim)+alpha*(X_best_1(i,1:Dim)-X_best_2(i,1:Dim));
        X_C(i,:) = max(X_C(i,:),Low);
        X_C(i,:) = min(X_C(i,:),Up);
        [X_fit_C(i), valueC{i},NetC{i},InfoC{i}]=fobj(X_C(i,:));
        if X_fit_C(i)<best_fit_1(i)
            X_best_1(i,:)=X_C(i,:);
            best_fit_1(i)=X_fit_C(i);
            best_value_1{i}=valueC{i};
            best_Net_1{i}=NetC{i};
            best_Info_1{i}=InfoC{i};
        end
    end
    %% 
    N00=PopSize-N*3;
    if N00~=0
        X00=rand(PopSize-N*3,Dim).*(Up-Low)+Low;
        for i=1:N00
            [X00_fit,value00{i},Net00{i},Info00{i}]=fobj(X00(i,:));
        end
        X_1_0=[X_best_1;X00];
        X_1_0_fit=[best_fit_1,X00_fit];
        value_1_0=[best_value_1;value00];
        Net_1_0=[best_Net_1;Net00];
        Info_1_0=[best_Info_1;Info00];
        
        [~,index01]=sort(X_1_0_fit);
        X_best_1=X_1_0(index01(1:N),:);
        best_value_1=value_1_0(index01(1:N),:);
        best_Net_1=Net_1_0(index01(1:N),:);
        best_Info_1=Info_1_0(index01(1:N),:);

        best_fit_1=X_1_0_fit(index01(1:N));
    end
    X1=X_best_1;
    %% 前N/3个个体作为下一次迭代的初始种群。

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

欢迎感兴趣的小伙伴“复制代码上方链接”或“联系小编”获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是在线教育,在线教育系统开源版本搭建教程

引言 随着数字化时代的到来&#xff0c;教育领域也在经历着一场深刻的变革。在线教育作为一种新兴的教育形式&#xff0c;正在以其灵活性和便利性受到越来越多人的关注和青睐。本文将介绍在线教育的概念&#xff0c;并提供基于开源版本的在线教育系统搭建教程&#xff0c;让教…

Docker容器引擎(5)

目录 一.docker-compose docker-compose的三大概念&#xff1a; yaml文件格式&#xff1a; json文件格式&#xff1a; docker-compose 配置模板文件常用的字段&#xff1a; 二.Docker Compose 环境安装&#xff1a; 查看版本&#xff1a; 准备好nginx 的dockerfile的文…

mysql本地数据库连接失败?

情景&#xff1a;mysql本地连接失败&#xff0c;账号密码都没问题。 原因&#xff1a;本地mysql服务没有启动 解决方案&#xff1a; 1、进入本地mysql安装的bin目录下D:\mysql-8.0.35-winx64\mysql-8.0.35-winx64\bin&#xff08;我的&#xff09;&#xff1b; 2、执行net st…

Android使用ScrollView导致鼠标点击事件无效

平台 测试平台: RK3288 Android8.1RK3588 Android 12 问题 首先, 这个问题的前提是, 使用的输入设备是**鼠标**, 普通的触摸屏并不会出现这个问题. 大致的流程是APP的UI布局中采用ScrollView作为根容器, 之后添加各类子控件, 在一起准备就绪后, 使用鼠标进行功能测试, 出现…

【Oracle云】OCI DevOps Services 教程 (3) - 创建自动化部署流水线【CD流水线】

欢迎来到【Oracle云】OCI DevOps Services教程的第三部分&#xff01;在这一部分中&#xff0c;我们将介绍如何在OCI上创建自动化部署流水线&#xff0c;也称为持续部署&#xff08;CD&#xff09;流水线。OCI DevOps Services提供了一套标准的构建工具&#xff0c;帮助我们简化…

解决WARNING: IPv4 forwarding is disabled. Networking will not work的具体操作步骤

IPv4转发禁用警告&#xff1a;网络无法正常工作 在使用网络连接的过程中&#xff0c;我们可能遇到警告消息“WARNING: IPv4 forwarding is disabled. Networking will not work”&#xff08;警告&#xff1a;IPv4转发已禁用&#xff0c;网络将无法正常工作&#xff09;。这个…

2.2号作业

一 1.A 2. A 3. A 4. D 5. D 6. B 7. A 8. C 9. A 10. 二 1. 42 2. cerr 3. cout <<"\n" 4. 5 5. 0 6. 7. 20 8. 1.50 9. ssi2 i…

UE4学习笔记 FPS游戏制作2 制作第一人称控制器

文章目录 章节目标前置概念Rotator与Vector&#xff1a;roll与yaw与pitch 添加按键输入蓝图结构区域1区域2区域3区域4 章节目标 本章节将实现FPS基础移动 前置概念 Rotator与Vector&#xff1a; Vector是用向量表示方向&#xff0c;UE中玩家的正前方是本地坐标系的(1,0,0)&…

ARM架构可视化ROS消息方案部署

ARM架构可视化ROS消息方案部署 三种方案, 1. webviz 2. foxglove 3. rosviz 注: web要用firefox, chromimum用不了, 可能是因为取消了时间同步机制的原因 先说三种方案的优劣, webviz 延迟比较高, 但是部署相对简单, foxglove 部署比较费劲, 但是效果不错, 延迟低, 本文会尽…

k8s kubeadm部署安装详解

目录 kubeadm部署流程简述 环境准备 步骤简述 关闭 防火墙规则、selinux、swap交换 修改主机名 配置节点之间的主机名解析 调整内核参数 所有节点安装docker 安装依赖组件 配置Docker 所有节点安装kubeadm&#xff0c;kubelet和kubectl 定义kubernetes源并指定版本…

带大家做一个,易上手的家常芹菜炒腊肉

起锅 放入腊肉 加入清水 水包裹住腊肉即可 盖上盖子煮15分钟 一把芹菜 芹菜切段 清水洗干净 15分钟后 捞出腊肉 将腊肉切片 一块生姜 两瓣蒜 将蒜切片 单独装起来 生姜切片 和三个干辣椒装一起 起锅 下腊肉 不要放油 腊肉够油了 翻炒开后 倒入生姜 干辣椒 翻炒个一分…

STM32CAN2进入bus off 模式

工作遇到的问题记录 无人机CAN2整个进不了中断&#xff0c;通过查看寄存器判定出CAN节点进入了bus off mode 为何进入bus off &#xff0c;最后通过示波器看到整个CAN2总线波形就不对&#xff0c;总线出现了错误 Busoff的产生是一定是因为节点自身识别到自己发送错误&#xff…

Modbus协议学习第七篇之libmodbus库API介绍(modbus_write_bits等)

写在前面 在第六篇中我们介绍了基于libmodbus库的演示代码&#xff0c;那本篇博客就详细介绍一下第六篇的代码中使用的基于该库的API函数。另各位读者&#xff0c;Modbus相关知识受众较少&#xff0c;如果觉得我的专栏文章有帮助&#xff0c;请一定点个赞&#xff0c;在此跪谢&…

oracle19C 密码包含特殊字符@ 导致ORA-12154

oracle 19C 密码包含特殊字符 出现登录失败&#xff0c;针对此问题一次说个明白 ORA-12154: TNS:could not resolve the connect identifier specified Oracle 19c之前密码是可以包含特殊字符&#xff0c;但是如果包含特殊字符需要双引号 比如oracle11g 正常 如果密码包含特殊…

Redis的bitmap使用不当,我内存爆了

背景 最近发现Redis的内存持续暴涨&#xff0c; 涨的有点吓人&#xff0c;机器都快扛不住了&#xff0c;不得不进行Redis内存可视化分析&#xff0c;发现大量的String类型的大key 经分析&#xff0c;最近上线了页面UV的统计&#xff0c;那目前如何做的呢&#xff1f; 通过访…

【iOS ARKit】2D肢体动作捕捉

人体肢体动作捕捉在动漫影视制作、游戏CG 动画、实时模型驱动中有着广泛的应用&#xff0c;利用 ARKit&#xff0c;无须额外的硬件设备即可实现 2D和3D人体一系列关节和骨骼的动态捕捉&#xff0c;由于移动AR 的便携性及低成本&#xff0c;必将促进相关产业的发展。 ARBody Tr…

图片热区功能

一、需求描述及效果图 1.需求描述&#xff1a; 根据后端返回的坐标及人员信息&#xff0c;在图片上的相应位置添加图片热区功能&#xff0c;点击可展示出对应的人员信息。 图片可进行缩放 2.示例&#xff1a; &#xff08;定位是随便写的&#xff0c;仅做示例&#xff09; …

【Algorithms 4】算法(第4版)学习笔记 03 - 1.3 背包、队列和栈

文章目录 前言参考目录学习笔记0&#xff1a;预热1&#xff1a;栈1.1&#xff1a;栈的链表实现1.1.1 代码实现1.2&#xff1a;栈的数组实现1.2.1&#xff1a;定容栈1.2.2&#xff1a;可调整大小数组1.2.3&#xff1a;代码实现1.3&#xff1a;链表与数组的取舍2&#xff1a;队列…

MySQL原理(一)架构组成之逻辑模块(1)组成

总的来说&#xff0c;MySQL可以看成是二层架构&#xff0c;第一层我们通常叫做SQL Layer&#xff0c;在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的&#xff0c;包括权限判断&#xff0c;sql解析&#xff0c;执行计划优化&#xff0c;query cache的处理等等&…

算法——A/算法通识

目录 一、复杂度分析 A/时间复杂度 B/空间复杂度 C/分析技巧 二、枚举分析 A/枚举算法介绍 B/解空间的类型 C/循环枚举解空间 三、模拟算法 四、递归 A/递归介绍 递归的两个关键要素&#xff1a; B/递归如何实现 C/递归和循环的比较 一、复杂度分析 A/时间复杂度…