用粒子群群算法优化BP神经网络的参数,进行极值寻优?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用粒子群群算法优化BP神经网络的参数,进行极值寻优?相关的知识,希望对你有一定的参考价值。
具体程序如下:
% 清空环境变量
clc
clear
%读取数据
rawdata=xlsread('shuju.xls','sheet1','A1:M22');
%训练预测数据
data_train=rawdata(:,1:11);
data_test=rawdata(:,12:13);
input_train=data_train(1:21,:);
output_train=data_train(22,:);
input_test=data_test(1:21,:);
output_test=data_test(22,:);
%数据归一化
%[inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(input_train,output_train); %对p和t进行字标准化预处理
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
net=newff(minmax(inputn),[5,1],'tansig','purelin','trainlm');
net.trainParam.epochs=1000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00001;
%网络训练
net=train(net,inputn,outputn);
save data net inputps outputps
PSO算法
x1_range=[2.3,4.5];
x2_range=[28,35];
x3_range=[28,35];
x4_range=[28,35];
x5_range=[28,35];
x6_range=[28,35];
x7_range=[27,39];
x8_range=[27,39];
x9_range=[27,39];
x10_range=[27,39];
x11_range=[300,500];
x12_range=[300,500];
x13_range=[300,500];
x14_range=[300,500];
x15_range=[0,100];
x16_range=[10,100];
range=[x1_range;x2_range;x3_range;x4_range;x5_range;x6_range;x7_range;x8_range;x9_range;x10_range;x11_range;x12_range;x13_range;x14_range;x15_range;x16_range];
max_v=0.2*(range(:,2)-range(:,1));
n=16;
pso_Trelea_vectorized('test_func1',n,max_v,range);
适应度函数
function fitness=test_func(in)
load data net inputps outputps
nn=size(in);
x1=in(:,1);
x2=in(:,2);
x3=in(:,3);
x4=in(:,4);
x5=in(:,5);
x6=in(:,6);
x7=in(:,7);
x8=in(:,8);
x9=in(:,9);
x10=in(:,10);
x11=in(:,11);
x12=in(:,12);
x13=in(:,13);
x14=in(:,14);
x15=in(:,15);
x16=in(:,16);
x=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16];
x=x';
nx=nn(1);
y=[3.44 21.28 24.38 57.43 22.52]';
for i=1:nx
%inputn_test=tramnmx(x(i),mininput,maxinput);
x(i)=[x(i);y];
inputn_data=mapminmax('apply',x(i),inputps);
an=sim(net,inputn_data);
fitness=mapminmax('reverse',an,outputps);
%fitness=postmnmx(an,minoutput,maxoutput);
fitness(i,:)=fitness;
end
现在的问题是,我需要21个参数才能预测出适应度值,但是只有16个是有范围的,5个参数是常数。怎么使用PSO工具箱实现啊?上面是我的程序,一直不对。我的QQ:2517584195.哪位大虾能够帮我指点迷津!
属于神经网络这个大类。遗传算法为进化算法这个大类。
神经网络模拟人类大脑神经计算过程,可以实现高度非线性的预测和计算,主要用于非线性拟合,识别,特点是需要“训练”,给一些输入,告诉他正确的输出。若干次后,再给新的输入,神经网络就能正确的预测对于的输出。神经网络广泛的运用在模式识别,故障诊断中。BP算法和BP神经网络是神经网络的改进版,修正了一些神经网络的缺点。
遗传算法属于进化算法,模拟大自然生物进化的过程:优胜略汰。个体不断进化,只有高质量的个体(目标函数最小(大))才能进入下一代的繁殖。如此往复,最终找到全局最优值。遗传算法能够很好的解决常规优化算法无法解决的高度非线性优化问题,广泛应用在各行各业中。差分进化,蚁群算法,粒子群算法等都属于进化算法,只是模拟的生物群体对象不一样而已。
粒子群群算法详解
一.产生背景
❃粒子群算法(particleswarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正,以使粒子能够飞向解空间,并在最好解处降落,从而得到了粒子群优化算法。
❃同遗传算法类似,也是一种基于群体叠代的,但并没有遗传算法用的交叉以及变异,而是粒子在解空间追随最优的粒子进行搜索。
❃PSO的优势在于简单,容易实现,无需梯度信息,参数少,特别是其天然的实数编码特点特别适合于处理实优化问题。同时又有深刻的智能背景,既适合科学研究,又特别适合工程应用。
设想这样一个场景:一群鸟在随机的搜索食物。在这个区域里只有一块食物,所有的鸟都不知道食物在哪。但是它们知道自己当前的位置距离食物还有多远。
那么找到食物的最优策略是什么?
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
以上是关于用粒子群群算法优化BP神经网络的参数,进行极值寻优?的主要内容,如果未能解决你的问题,请参考以下文章
优化预测基于matlab天牛须算法优化BP神经网络预测含Matlab源码 1318期
优化预测基于matlab天牛须算法优化BP神经网络预测含Matlab源码 1316期