这四个都属于人工智能算法的范畴。其中BP算法、BP神经网络和神经网络
属于神经网络这个大类。遗传算法为进化算法这个大类。
神经网络模拟人类大脑神经计算过程,可以实现高度非线性的预测和计算,主要用于非线性拟合,识别,特点是需要“训练”,给一些输入,告诉他正确的输出。若干次后,再给新的输入,神经网络就能正确的预测对于的输出。神经网络广泛的运用在模式识别,故障诊断中。BP算法和BP神经网络是神经网络的改进版,修正了一些神经网络的缺点。
遗传算法属于进化算法,模拟大自然生物进化的过程:优胜略汰。个体不断进化,只有高质量的个体(目标函数最小(大))才能进入下一代的繁殖。如此往复,最终找到全局最优值。遗传算法能够很好的解决常规优化算法无法解决的高度非线性优化问题,广泛应用在各行各业中。差分进化,蚁群算法,粒子群算法等都属于进化算法,只是模拟的生物群体对象不一样而已。
运行结果。
function [xm,fv] = zhidaoPSO(fitness,N,c1,c2,w,M,D)
%[xm,fv] = zhidaoPSO(@fitness,40,2,2,08,1000,2)
%
% 求解无约束优化问题
% fitness 待优化目标函数
% N 粒子数目,
% cX 学习因子
% W 惯性权重
% M 最大迭代次数
% D 自由变量的个数
% xm 目标函数取最小值时的自由变量
% fv 目标函数的最小值
% Detailed explanation goes here
tic;
format long;
%------step1初始化种群的个体------------
x = zeros(N,D);
v = zeros(N,D);
for i=1:N
for j=1:D
x(i,j)=100rand - 50; %随机初始化位置
v(i,j)=100rand - 50; %随机初始化速度
end
end
%------step2先计算各个粒子的适应度,并初始化Pi和PgPg为全局最优-------------
p = zeros(N,1);
%y = zeros(N,D);
for i=1:N
p(i)=fitness(x(i,:));
%y(i,:)=x(i,:);
end
y = x;
pg = x(N,:); %Pg为全局最优
for i=1:(N-1)
if fitness(x(i,:))<fitness(pg)
pg=x(i,:);
end
end
%------step3进入主要循环,按照公式依次迭代------------
%Pbest = zeros(M,1);
for t=1:M
for i=1:N
v(i,:)=wv(i,:)+c1rand(y(i,:)-x(i,:))+c2rand(pg-x(i,:));
for k=1:D
if v(i,k) > 10 %10=vmax
v(i,k) = 10;
end
end
x(i,:)=x(i,:)+v(i,:);
for k=1:D
if x(i,k) > 50 %50=xmax
x(i,k) = 31;
end
end
if fitness(x(i,:))<p(i)
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
if p(i)<fitness(pg)
pg=y(i,:);
end
end
%Pbest(t)=fitness(pg);
end
xm = pg';
fv = fitness(pg);
toc;
同学,这种问题自己好好看看程序,不要上来问吧。
提示下,ParSwarm(k,2ParticleSize+1)=AdaptFunc(ParSwarm(k,1:ParticleSize)); 中给定的矩阵的行或列的编号有问题,代码应该没问题,逐步运行下,看看变量吧。
以上就是关于用粒子群群算法优化BP神经网络的参数,进行极值寻优全部的内容,包括:用粒子群群算法优化BP神经网络的参数,进行极值寻优、最优化 粒子群法、PSO粒子群算法问题,运行之后出现Subscript indices must either be real positive integers or logicals等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)