一、文化算法及BP神经网络简介

1 文化粒子群算法原理
本文提出的文化粒子群算法采用文化算法的双层演化结构。[4]算法包含两个进化空间, 一个是由具体个体组成的群体空间;另一个是由在进化过程中获取的经验和知识组成的信念空间, 其演化框架如图1所示。其中, 群体空间是算法进行问题求解的主空间, 通过演化操作和性能评价进行自身的迭代求解, 形成个体经验, 并通过“accept () ”函数将个体经验传递到信念空间, 信念空间将接收到的个体经验, 不断地进行自身的性能评价与演化, 形成群体经验。信念空间通过“influence () ”函数对群体空间的个体行为规则进行修改, 以使群体空间中得到更高的进化效率。

文化算法总体上包括三大元素:种群空间 (population space) 、信念空间 (belief space) 和沟通渠道 (communication channel) , 其中沟通渠道又包括:接受函数 (acceptance function) 、更新函数 (update function) 、影响函数 (influence function) 。初始化种群空间、信念空间及沟通渠道后, 通过性能函数 (performance function) 评价种群空间中的个体适应值。将种群空间个体在进化过程中所形成的个体经验, 通过接受函数 (acceptance function) 传递给信念空间, 信念空间将收到的个体经验按一定的规则进行比较优化, 形成群体经验, 并根据新获取的个体经验通过更新函数更新现有的信念空间。信念空间再用更新后的群体经验通过影响函数 (Influence Function) 来对种群空间中个体的行为规则进行修改, 进而高效地指引种群空间的进化。选择函数 (Select Function) 从现有种群中选择一部分个体作为下代个体的父辈, 进行下一轮的迭代直至满足终止条件。

图1 文化粒子群算法的基本框架
由于采用了文化算法的双层演化结构, 本文提出的文化粒子群算法不仅具有较高的运行效率, 而且具有很好的全局搜索能力。算法中群体空间的粒子不但通过跟踪个体极值和全局极值来更新自己, 实现群体的演化, 而且通过不断与信念空间中优秀个体的交互, 加快群体的收敛速度。

3 基于文化粒子群的BP神经网络
3.1 基于文化粒子群的BP神经网络优化

前馈神经网络的各神经元只接受前一级输入, 并输出到下一级, 不存在反馈, 可用一有向无环路图代表, 前馈神经网络结构如图2所示。前馈神经网络结构上是分层的, 第一层神经元只与第二层神经元相联, 第二层又与其下一层神经元相连, 依次连接, 组成一个完整的神经网络。前馈神经网络的第一层称为输入层 (Input layer) , 最后一层称为输出层 (Output layer) , 因为输入和输出节点与外界相连, 可直接受外部环境影响, 所以称为可见层 (Visual layer) , 而其它中间层则称为隐含层 (Hidden layer) , 隐含层可由一层或多层构成。

图2 前馈神经网络结构

传统的BP网络的权值更新策略为:通过不断输入训练样本, 根据网络运行特征, 推导出隐层和输出层的权值更新公式进行并逐步迭代, 从而实现网络的学习。该学习算法在对网络的训练和学习过程存在收敛速度慢、容易陷入局部极值等缺点。本文采用文化粒子群算法训练BP网络 (CPSO-BP) 时, 可以同时将权值和阈值进行学习。[5]主要过程为:首先将网络的权值和阈值进行编码, 作为粒子的位置向量, 然后初始化位置向量, 并按照上节的群体演化过程进行搜索和更新, 再将训练好的权值和阈值提供给网络, 进行误差的反向传播。

3.2 基于文化粒子群的BP神经网络的实现
首先进行初始化设置, 群体空间和信念空间的种群大小设置为:群体规模n=30, 惯性权因子ω=0.9, 加速因子c1=c2=2, 微粒子最小位置值xmin=0, 最大位置值xmax=4.0, 微粒子最小速度值vmin=-4.0, 最大速度值vmax=4.0。第二, 基于随机键编码初始化粒子的位置和速度。第三, 根据群体空间粒子位置和训练样本, 计算粒子的实际输入和适应值函数。第四, 更新信念空间粒子位置和训练样本, 并计算粒子的实际输入和适应值函数。第五, 判断若iter%Acc=0时, 进行接受操作。第六, 更新群体空间粒子的位置和速度, 并检验粒子的速度和位置是否越界, 若是, 调整速度和位置。第七, 计算群体空间中各粒子的实际输入和适应值函数。第八, 更新信念空间粒子的位置和速度, 并检验粒子的速度和位置是否越界, 若是, 调整速度和位置。第九, 计算信念空间中粒子的的实际输入和适应值函数。第十, 判断若iter%Inf=0时, 进行影响操作。第十, 当误差达到最初设定值或最大迭代次数时, 输出对应的调度方案和目标值;否则, 令iter=iter+1, 返回第3步。

二、部分源代码

% 清除和加载数据
clear;
data=JustLoad();
warning(‘off’);
% 输入(训练和测试)
inputs=rescale(data.TrainInputs)’;
TstInputs=rescale(data.TestInputs)’;

% 目标(训练和测试)
targets=rescale(data.TrainTargets)’;
TstTargets=rescale(data.TestTargets)’;
sizenn=size(inputs);sizenn=sizenn(1,1);

% 神经元数量----------------------
n = 12;
%----------------------------------------

% ‘trainlm’ Levenberg-Marquardt
% ‘trainbr’ Bayesian Regularization (good)
% ‘trainbfg’ BFGS Quasi-Newton
% ‘trainrp’ Resilient Backpropagation
% ‘trainscg’ Scaled Conjugate Gradient
% ‘traincgb’ Conjugate Gradient with Powell/Beale Restarts
% ‘traincgf’ Fletcher-Powell Conjugate Gradient
% ‘traincgp’ Polak-Ribi茅re Conjugate Gradient
% ‘trainoss’ One Step Secant (good)
% ‘traingdx’ Variable Learning Rate Gradient Descent
% ‘traingdm’ Gradient Descent with Momentum
% ‘traingd’ Gradient Descent
% 创建神经网络 ----------------------------
net = feedforwardnet(n,‘traingdx’);
%---------------------------------------------

% 为此数据集配置神经网络
net = configure(net, inputs, targets);
%当前的 NN 权重和偏差
getwb(net);
% 当前 NN 的 MSE 错误
error = targets - net(inputs);
calc = mean(error.^2)/mean(var(targets’,1));
%为错误创建句柄
h = @(x) NMSE(x, net, inputs, targets);

%%自然灵感部分
[x, err_ga] = ca(h, sizenn*n+n+n+1);
%------------------------------------------------

net = setwb(net, x’);
%优化的 NN 权重和偏差
getwb(net);
%优化 NN 的误差
error = targets - net(inputs);
calc = mean(error.^2)/mean(var(targets’,1));

%-----------------------------------------
Outputs=net(inputs);
TestOutputs=net(TstInputs);

%训练
TrMSE=mse(targets,Outputs);
TrRMSE=sqrt(TrMSE);
TrMAE=mae(targets,Outputs);
TrCC= corrcoef(targets,Outputs);
TrR_Squared=TrCC*TrCC;

% 测试
TsMSE=mse(TstTargets,TestOutputs);
TsRMSE=sqrt(TsMSE);
TsMAE=mae(TstTargets,TestOutputs);
TsCC = corrcoef(TstTargets,TestOutputs);
TsR_Squared=TsCC*TsCC;

%统计数据
%训练
fprintf(‘Training “MSE” Is = %0.4f.\n’,TrMSE)
fprintf(‘Training “RMSE” Is = %0.4f.\n’,TrRMSE)
fprintf(‘Training “MAE” Is = %0.4f.\n’,TrMAE)
fprintf(‘Training “Correlation Coefficient” Is = %0.4f.\n’,TrCC(1,2))
% fprintf(‘Training “R_Squared” Is = %0.4f.\n’,TrR_Squared(1,2))
% Test
fprintf(‘Testing “MSE” Is = %0.4f.\n’,TsMSE)
fprintf(‘Testing “RMSE” Is = %0.4f.\n’,TsRMSE)
fprintf(‘Testing “MAE” Is = %0.4f.\n’,TsMAE)
fprintf(‘Testing “Correlation Coefficient” Is = %0.4f.\n’,TsCC(1,2))
% fprintf(‘Testing “R_Squared” Is = %0.4f.\n’,TsR_Squared(1,2))

% Plots
figure;
subplot(2,2,1)
plot(targets,‘linewidth’,2); title(‘训练’);
hold on;
plot(Outputs,‘linewidth’,2);;legend(‘目标’,‘输出’);
subplot(2,2,2)
plot(TstTargets,‘linewidth’,2); title(‘测试’);
hold on;
plot(TestOutputs,‘linewidth’,2);;legend(‘目标’,‘输出’);
subplot(2,2,3)
[population2,gof] = fit(targets’,Outputs’,‘poly3’);
plot(targets’,Outputs’,‘o’,…
‘LineWidth’,1,…
‘MarkerSize’,6,…
‘MarkerEdgeColor’,‘k’,…
‘MarkerFaceColor’,[0.9,0.9,0.1]);
title([‘训练R = ’ num2str(1-gof.rmse)]);xlabel(‘目标’);ylabel(‘输出’);
hold on
plot(population2,‘k-’,‘predobs’);xlabel(‘目标’);ylabel(‘输出’);
hold off
subplot(2,2,4)
[population2,gof] = fit(TstTargets’,TestOutputs’,‘poly3’);
plot(TstTargets’,TestOutputs’,‘o’,…
‘LineWidth’,1,…
‘MarkerSize’,6,…
‘MarkerEdgeColor’,‘r’,…
‘MarkerFaceColor’,[0.9,0.9,0.1]);
title(['测试R = ’ num2str(1-gof.rmse)]);xlabel(‘目标’);ylabel(‘输出’);
hold on
plot(population2,‘r-’,‘predobs’);xlabel(‘目标’);ylabel(‘输出’);
hold off

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]高胜利.基于文化粒子群网络优化算法的医学图像研究[J].南通航运职业技术学院学报. 2013,12(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【BP回归预测】基于matlab文化算法优化BP神经网络数据回归预测【含Matlab源码 2124期】相关推荐

  1. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab遗传算法优化ELM神经网络数据分类[含Matlab源码 2138期] 点击上面蓝色字体,直接付费下载,即可. ...

  2. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  3. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  4. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  5. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  7. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. 9000亿投资浪费在数字化转型,罪魁祸首在DevOps?
  2. 一個简单的okhttp访问网络的例子
  3. py导入包异常跳出_Python运行Unittest作为包导入错误
  4. db2 参数标识符使用无效_在Python应用程序中使用配置的最佳实践
  5. boost::hana::lift用法的测试程序
  6. Docker安装redis 设置密码
  7. 【JavaScript】Window对象学习
  8. android加载so文件失败,Android无法加载'.so.1'文件
  9. 火焰传感器工作原理_不同接近传感器工作原理
  10. 五千的手机和两三千的手机使用起来有什么不一样?有必要买贵的吗?
  11. CakePHP 2.x CookBook 中文版 第七章 模型 之 数据校验
  12. Mifare经典工具如何使用(下)-- 手把手教你使用MCT
  13. office VBA开发视频教程
  14. error A2070:invalid instruction operands 错误原因
  15. Java实现论坛系统
  16. 超便利在线电路仿真软件
  17. php 简明现代魔法,【转】WinCacheGrind配合XDebug分析PHP程序性能 — 简明现代魔法...
  18. (10)图像增强- -- 图像对比度和亮度调整方法与实现
  19. 使用 Django 实现私有云盘
  20. Educational Codeforces Round 140 (Rated for Div. 2)题解

热门文章

  1. 中顶体育场馆管理系统
  2. 海康工业相机SDK+OpenCV实例(2):RawDataFormatConvert详解
  3. R语言 因子分析 代码 可视化
  4. javaScript中Promise详解
  5. pycharm中安装ctypes模块
  6. 理解极大似然估计与最大后验概率估计
  7. iOS关键字之nullable、nonnull、null_resettable、_Null_unspecified的区别
  8. 左耳听风 第四十二周
  9. java的7种位运算符
  10. 搜索邻近计算机打印机,好事的“网上邻居”