回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测

目录

  • 回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测
    • 效果一览
    • 基本介绍
    • 模型描述
    • 程序设计
    • 参考资料

效果一览




基本介绍

回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测
MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测(Matlab完整程序和数据)
输入7个特征,输出1个,即多输入单输出;
运行环境Matlab2018及以上,运行主程序main即可,其余为函数文件无需运行,所有程序放在一个文件夹,data为数据集;
命令窗口输出RMSEP、MAE、R2、MAPE。

模型描述

粒子群算法(Particle Swarm Optimization, PSO)是一种启发式优化算法,通常用于解决复杂的非线性优化问题。而分组卷积神经网络(Grouped Convolutional Neural Network, GCNN)是一种卷积神经网络的变体,可以将输入数据分组进行卷积操作,从而减少计算量和参数数量。
针对数据多输入单输出回归预测问题,可以使用粒子群算法来优化分组卷积神经网络的结构和参数,以提高预测准确性。具体步骤如下:

  • 定义目标函数
    首先需要定义一个目标函数,用于衡量分组卷积神经网络的预测准确性。一般来说,可以使用均方根误差(RMSE)或者均方误差(MSE)作为目标函数。

  • 确定网络结构和参数
    接下来需要确定分组卷积神经网络的结构和参数,包括分组数、每组的卷积核数量、卷积核大小等。可以将这些参数作为粒子的维度,每个粒子代表一个网络结构和参数组合。

  • 初始化粒子群
    随机生成一定数量的粒子,每个粒子代表一个网络结构和参数组合。每个粒子都有一个速度和位置,速度表示它的移动方向和速度,位置表示它的当前位置。

  • 更新粒子速度和位置
    根据当前粒子的位置和速度,计算下一时刻的速度和位置。更新公式如下:

v_i(t+1) = w * v_i(t) + c1 * rand() * (pbest_i - x_i(t)) + c2 * rand() * (gbest - x_i(t))
x_i(t+1) = x_i(t) + v_i(t+1)
其中,v_i(t)表示粒子i在时刻t的速度,x_i(t)表示粒子i在时刻t的位置,pbest_i表示粒子i历史上最优的位置,gbest表示整个粒子群历史上最优的位置,w、c1和c2是常数,rand()是一个在[0,1]范围内均匀分布的随机数。

  • 计算适应度
    根据当前粒子的位置,计算目标函数的值作为粒子的适应度。如果当前位置比历史最优位置更优,则更新历史最优位置。

  • 判断停止条件
    如果达到预设的停止条件(如达到最大迭代次数或目标函数值足够小),则停止算法并返回历史最优位置对应的网络结构和参数。

  • 重复步骤4-6
    如果没有达到停止条件,则重复步骤4-6,直到达到停止条件为止。
    最终得到的历史最优位置对应的网络结构和参数即为经过粒子群算法优化后的分组卷积神经网络,可以用于数据多输入单输出回归预测问题。

程序设计

  • 完整程序和数据下载:后台私信PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测
%%  参数设置
% ----------------------  修改模型参数时需对应修改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);
%% 参数初始化
popsize=pop;              %种群规模
lenchrom=dim;              %变量字串长度
fun = fobj;  %适应度函数
pc=0.7;                  %设置交叉概率
pm=0.3;                  %设置变异概率
if(max(size(ub)) == 1)ub = ub.*ones(dim,1);lb = lb.*ones(dim,1);
end
maxgen=Max_iter;   % 进化次数  %种群%% 产生初始粒子和速度%随机产生一个种群GApop=initialization(pop, dim, ub, lb);       %随机产生个体
for i=1:popsize%计算适应度fitness(i)=fun(GApop(i,:));            %染色体的适应度
end%找最好的染色体
[bestfitness bestindex]=min(fitness);
zbest=GApop(bestindex,:);   %全局最佳
gbest=GApop;                %个体最佳
fitnessgbest=fitness;       %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值%% 迭代寻优
for i=1:maxgendisp(['第',num2str(i),'次迭代'])%种群更新 GA选择更新GApop=Select2(GApop,fitness,popsize);% 交叉操作 GAGApop=Cross(pc,lenchrom,GApop,popsize,lb,ub);% 变异操作 GA变异GApop=Mutation(pm,lenchrom,GApop,popsize,[i maxgen],lb,ub);pop=GApop;for j=1:popsize%适应度值fitness(j)=fun(pop(j,:));%个体最优更新if fitness(j) < fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) < fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endendcurve(i)=fitnesszbest;
end
%%  边界数目
Boundary_no= size(ub, 2);%%  变量数目等于1
if Boundary_no == 1Positions = rand(SearchAgents_no, dim) .* (ub - lb) + lb;
end%% 如果每个变量有不同的上下界
if Boundary_no > 1for i = 1 : dimub_i = ub(i);lb_i = lb(i);Positions(:, i) = rand(SearchAgents_no, 1) .* (ub_i - lb_i) + lb_i;end
end

参考资料

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

回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测相关推荐

  1. 【Matlab风电功率预测】麻雀算法优化LSSVM风电功率预测(多输入单输出)【含源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]麻雀算法优化LSSVM风电功率预测(多输入单输出)[含源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 ...

  2. 【回归预测】基于TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)实现数据多输入单输出回归预测附matlab代码

    1 内容介绍 随着当今时代科技不断地飞速发展,科技信息也在急剧增加,收集并挖掘分析这些来源多样化的科技信息,有助于推动科技的发展.而预测作为一种重要的数据研究方法,在各个行业各个领域都有着广泛的应用. ...

  3. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  4. 【风电功率预测】基于matlab麻雀算法优化LSSVM风电功率预测(多输入单输出)【含Matlab源码 1718期】

    ⛄一.麻雀算法优化LSSVM简介 1 标准麻雀算法 算法运算过程由探索者.追随者与预警者3部分构成,其中探索者与追随者的总数量与比例不变,根据适应度数值的改变,两者可以相互转化.通过觅食和反捕食行为来 ...

  5. 【风电功率预测】麻雀算法优化LSSVM风电功率预测(多输入单输出)【含Matlab源码 1718期】

    ⛄一.麻雀算法优化LSSVM简介 1 标准麻雀算法 算法运算过程由探索者.追随者与预警者3部分构成,其中探索者与追随者的总数量与比例不变,根据适应度数值的改变,两者可以相互转化.通过觅食和反捕食行为来 ...

  6. 【回归预测-lssvm】基于粒子群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  7. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

  8. 【回归预测-ELM预测】基于粒子群算法PSO优化极限学习机预测附matlab代码

    1 内容介绍 风电功率预测为电网规划提供重要的依据,研究风电功率预测方法对确保电网在安全稳定运行下接纳更多的风电具有重要的意义.针对极限学习机(ELM)回归模型预测结果受输入参数影响的问题,现将粒子群 ...

  9. 回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出

    回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出 目录 回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出 预测效 ...

最新文章

  1. 织梦缩略图php,dedecms怎么实现列表页缩略图随机调用
  2. Linux C编程--进程间通信(IPC)1--进程间通信机制概述
  3. “突破•重塑”2017年数据中心设施讨论
  4. 在Excel中世纪秒和时间字符串的转化
  5. Linux基本命令(1)管理文件和目录的命令
  6. java中final的意义
  7. (转载)equals与==
  8. [SQL实战]之统计出当前各个title类型对应的员工当前薪水对应的平均工资
  9. 华为的CPU怎样才能卖掉
  10. 百度搜索无法显示搜索结果
  11. 4. HTML 视频
  12. 树莓派4B搭建NAS系统(Samba)
  13. Pandas如何读取保存Excel
  14. win7 电脑MAC地址修改
  15. 【转贴】英语如此简单
  16. 店宝宝:巨头PK精品电商
  17. 【已解决】笔记本电脑连接wifi异常(无法连接到这个网络)
  18. 洛谷P2357 守墓人
  19. AI计算机视觉技术如何赋能智慧城市建设?5大典型场景盘点
  20. 交换机接口模式hybrid运用

热门文章

  1. STM32 Timer定时器分类和框图
  2. 在静态图片上加跳转链接
  3. vue.runtime.esm.js?2b0e:1888 TypeError: Cannot read property ‘_wrapper‘ of undefined
  4. 计算机云的使用方法,如何使用傲软投屏
  5. CentOS7添加路由
  6. SQL Server 按两列条件查询重复数据
  7. Http管理状态:Cooki与Session
  8. office安装时显示已有32位的,无法安装64位
  9. wchar 格式控制符_控制台输出宽字符wchar_t的中文显示问题
  10. 利用WordPress 模板建站,如果利用阿里云国际版获取网站高流量