多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

目录

    • 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

1
2
3
4

5

基本介绍

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测
MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测
输入7个特征,输出1个,即多输入单输出;优化参数为学习率,批大小,正则化系数。
运行环境Matlab2018及以上,运行主程序main即可,其余为函数文件无需运行,所有程序放在一个文件夹,data为数据集;
命令窗口输出RMSE、MAE、R2、MAPE。

程序设计

  • 完整程序和数据下载方式(订阅《智能学习》专栏,同时获取《智能学习》专栏收录程序3份,数据订阅后私信我获取):MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测,专栏外只能获取该程序。
%%  记录最佳参数
Best_pos(1, 2) = round(Best_pos(1, 2));
best_lr = Best_pos(1, 1);
best_hd = Best_pos(1, 2);
best_l2 = Best_pos(1, 3);%%  建立模型
% ----------------------  修改模型结构时需对应修改fical.m中的模型结构  --------------------------
layers = [sequenceInputLayer(f_)            % 输入层fullyConnectedLayer(outdim)       % 输出回归层regressionLayer];%%  参数设置
% ----------------------  修改模型参数时需对应修改fical.m中的模型参数  --------------------------
options = trainingOptions('adam', ...           % Adam 梯度下降算法'MaxEpochs', 500, ...                  % 最大训练次数 500'InitialLearnRate', best_lr, ...       % 初始学习率 best_lr'LearnRateSchedule', 'piecewise', ...  % 学习率下降'LearnRateDropFactor', 0.5, ...        % 学习率下降因子 0.1'LearnRateDropPeriod', 400, ...        % 经过 400 次训练后 学习率为 best_lr * 0.5'Shuffle', 'every-epoch', ...          % 每次训练打乱数据集'ValidationPatience', Inf, ...         % 关闭验证'L2Regularization', best_l2, ...       % 正则化参数'Plots', 'training-progress', ...      % 画出曲线'Verbose', false);%%  训练模型
net = trainNetwork(p_train, t_train, layers, options);%%  仿真验证
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test );%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
T_sim1=double(T_sim1);
T_sim2=double(T_sim2);
%%  均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
%_________________________________________________________________________%
% The Whale Optimization Algorithm
function [Best_Cost,Best_pos,curve]=WOA(pop,Max_iter,lb,ub,dim,fobj)% initialize position vector and score for the leader
Best_pos=zeros(1,dim);
Best_Cost=inf; %change this to -inf for maximization problems%Initialize the positions of search agents
Positions=initialization(pop,dim,ub,lb);curve=zeros(1,Max_iter);t=0;% Loop counter% Main loop
while t<Max_iterfor i=1:size(Positions,1)% Return back the search agents that go beyond the boundaries of the search spaceFlag4ub=Positions(i,:)>ub;Flag4lb=Positions(i,:)<lb;Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;% Calculate objective function for each search agentfitness=fobj(Positions(i,:));% Update the leaderif fitness<Best_Cost % Change this to > for maximization problemBest_Cost=fitness; % Update alphaBest_pos=Positions(i,:);endenda=2-t*((2)/Max_iter); % a decreases linearly fron 2 to 0 in Eq. (2.3)% a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12)a2=-1+t*((-1)/Max_iter);% Update the Position of search agents for i=1:size(Positions,1)r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A=2*a*r1-a;  % Eq. (2.3) in the paperC=2*r2;      % Eq. (2.4) in the paperb=1;               %  parameters in Eq. (2.5)l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)p = rand();        % p in Eq. (2.6)for j=1:size(Positions,2)if p<0.5   if abs(A)>=1rand_leader_index = floor(pop*rand()+1);X_rand = Positions(rand_leader_index, :);D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)elseif abs(A)<1D_Leader=abs(C*Best_pos(j)-Positions(i,j)); % Eq. (2.1)Positions(i,j)=Best_pos(j)-A*D_Leader;      % Eq. (2.2)endelseif p>=0.5distance2Leader=abs(Best_pos(j)-Positions(i,j));% Eq. (2.5)Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Best_pos(j);endendendt=t+1;curve(t)=Best_Cost;[t Best_Cost]
end

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

执行Lua脚本后一直查询不到Redis中的数据(附带问题详细排查过程,一波三折)

文章目录 执行Lua脚本后一直查询不到Redis中的数据&#xff08;附带详细问题排查过程&#xff0c;一波三折&#xff09;问题背景问题1&#xff1a;Lua脚本无法切库问题2&#xff1a;RedisTemlate切库报错问题3&#xff1a;序列化导致数据不一致问题4&#xff1a;Lua脚本中单引号…

微服务08-多级缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——三段论——第二节 规则

文章目录 第二节 三段论-规则题-三段论-规则-补前提-“特推特&#xff0c;否推否&#xff0c;两特两否无结论”得前提是“有的/所有”→所有概念出现两次→中项要周延。题-三段论-规则-补前提-“特推特&#xff0c;否推否&#xff0c;两特两否无结论”得前提是“有的/所有”→…

在Gazebo中添加悬浮模型后,利用键盘控制其移动方法

前段时间写了文章&#xff0c;通过修改sdf、urdf模型的方法&#xff0c;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…

Mr. Cappuccino的第62杯咖啡——Spring之Bean的生命周期

Spring之Bean的生命周期 Aware接口项目结构项目代码运行结果源代码使用场景 InitializingBean接口项目结构项目代码运行结果源代码 BeanFactoryPostProcessor接口项目结构项目代码运行结果源代码 Bean的生命周期项目结构项目代码运行结果源代码 Aware接口 实现Aware接口是为了…

【【萌新的STM32学习-9】】

萌新的STM32学习-9 我们在使用某个外设&#xff0c;必须线使能该外设时钟 SYSTEM 文件夹里面的代码由正点原子提供&#xff0c;是 STM32F1xx 系列的底层核心驱动函数&#xff0c; 可以用在 STM32F1xx 系列的各个型号上面&#xff0c;方便大家快速构建自己的工程。本章&#xf…

什么是网络地址转换 (NAT)

网络地址转换&#xff08;NAT&#xff09;是更改源和目标 IP 地址和端口的过程&#xff0c;地址转换减少了对 IPv4 公共地址的需求&#xff0c;并隐藏了专用网络地址范围&#xff0c;该过程通常由路由器或防火墙完成。 NAT是如何工作的 NAT 允许单个设备&#xff08;如路由器…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…

nginx反向代理流程

一、nginx反向代理流程 反向代理&#xff1a;使用代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络中的上游服务器&#xff0c;并将上游服务器得到的结果返回给请求连接的客户端&#xff0c;代理服务器对外表现就是一个web服务器。Nginx就经常拿来做…

go 中自定义包以及import

目录结构如下 注意ellis这个文件夹是在工作区的src目录下 testpackage.go package testpackageimport ("fmt" )func Test() {fmt.Println("test") }main.go package mainimport ("ellis/testpackage""fmt" )type Name struct {Fir…

Linux与bash(基础内容一)

一、常见的linux命令&#xff1a; 1、文件&#xff1a; &#xff08;1&#xff09;常见的文件命令&#xff1a; &#xff08;2&#xff09;文件属性&#xff1a; &#xff08;3&#xff09;修改文件属性&#xff1a; 查看文件的属性&#xff1a; ls -l 查看文件的属性 ls …

81-基于stm32单片机DHT11温湿度MQ4可燃气体天然气浓度检测系统自动散热加湿排气Proteus仿真+源码...

资料编号&#xff1a;081 一&#xff1a;功能介绍&#xff1a; 1、采用stm32单片机OLED显示屏MQ4可燃气体浓度检测DHT11温湿度电机按键&#xff0c;制作一个温湿度采集、MQ4可燃气体浓度采集&#xff0c;OLED显示相关数据&#xff0c; 2、通过按键设置温度上限、湿度下限、可燃…

Stable Diffusion核心算法DDPM解析

DDPM&#xff1a;Denoising Diffusion Probabilistic Model&#xff0c;去噪扩散概率模型 本文参考&#xff1a;一个视频看懂扩散模型DDPM原理推导|AI绘画底层模型_哔哩哔哩_bilibili 1、大概原理 从右往左为正向加噪过程&#xff0c;从左往右为逆向降噪过程。 在正向过程中不…

Ubuntu发布java版本

1、连接服务器 2、进入目录 cd /usr/safety/app/3、上传jar文件 4、杀掉原java进程 1. 查看当前java进程 2. ps -ef|grep java 3. ycmachine:/usr/safety/app$ ps -ef|grep java root 430007 1 6 01:11 pts/0 00:02:45 /usr/local/java/jdk1.8.0_341/bin/j…

【LeetCode】205. 同构字符串

205. 同构字符串&#xff08;简单&#xff09; 方法&#xff1a;哈希映射 思路 判断两个字符串是不是同构字符串&#xff0c;只需要判断对应的字符是不是存在映射关系&#xff0c;我们可以使用 map 来保存字符间的映射关系。由于 “不同字符不能映射到同一个字符上&#xff0…

Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/appium‘

在使用npm uninstall -g appium卸载appium的过程中报错 Error: EACCES: permission denied, rename /usr/local/lib/node_modules/appium -> /usr/local/lib/node_modules/.appium-cfBVovI6 npm ERR! code EACCES npm ERR! syscall rename npm ERR! path /usr/local/lib/n…

智能报警系统:利用人工智能保障安全和及时应对危险

引言&#xff1a;随着人工智能的快速发展&#xff0c;智能报警系统成为了一种高效、及时应对危险和保障安全的重要工具。通过分析监控视频中的图像、声音以及其他传感器数据&#xff0c;人工智能可以自动检测和识别火灾、破坏、烟雾、异常温度等情况&#xff0c;并及时触发报警…

Python学习笔记_基础篇(十一)_socket编程

python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心&#xff0c;它承担计算机的所有任务。 操作系统是运行在硬件之上的软件&#xff0c;是计算机的管理者&#xff0c;它负责资源的管理和分配、任务的调度。 程序是运行…

虚拟拍摄,如何用stable diffusion制作自己的形象照?

最近收到了某活动的嘉宾邀请&#xff0c;我将分享&#xff1a; 主题&#xff1a;生成式人工智能的创新实践 简要描述&#xff1a;从品牌营销、智能体、数字内容创作、下一代社区范式等方面&#xff0c;分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向&#xff…

Zookeeper进阶篇 - Paxos协议算法、ZBA协议算法原理、Leader选举原理

Zookeeper底层原理篇&#xff0c;​让学习绚丽多彩起来&#xff01;&#xff01;&#xff01;