资源简介
在matlab程序中,可以实现粒子群算法优化bp神经网络的算法,可用不同数据
代码片段和文件信息
%% 该代码为基于PSO和BP网络的预测
%
%% 清空环境
clc
clear
%读取数据
% load maydata input output
data=xlsread(‘E:\数据处理\useful1.xlsx‘‘test1‘‘a2:i701‘);
input=data(:1:8);
output =data(:8);
%从1到326间随机排序
k=rand(1700);
[mn]=sort(k);
%节点个数
inputnum=8;
hiddennum=5;
outputnum=1;
%训练数据和预测数据
% input_train=input(1:299:)‘;
% input_test=input(300:326:)‘;
% output_train=output(1:299)‘;
% output_test=output(300:326)‘;
input_train=input(n(1:624):)‘;
output_train=output(n(1:624):)‘;
input_test=input(n(625:700):)‘;
output_test=output(n(625:700):)‘;
input_test1=input(651:700:)‘;
%选连样本输入输出数据归一化
[inputninputps]=mapminmax(input_train);
[outputnoutputps]=mapminmax(output_train);
%构建网络
net=newff(inputnoutputnhiddennum);
netBP=newff(inputnoutputnhiddennum);
% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445; %个体学习因子
c2 = 1.49445; %社会学习因子
maxgen=50; % 进化次数
sizepop=10; %种群规模
Vmax=1; %设置精度(在已知最小值时候用)
Vmin=-1;
popmax=5;
popmin=-5;
parnum = inputnum * hiddennum + hiddennum * outputnum + hiddennum + outputnum; %51
for i=1:sizepop %初始化种群个数
pop(i:)=5*rands(1parnum);
V(i:)=rands(1parnum);
fitness(i)=fun1(pop(i:)inputnumhiddennumoutputnumnetinputnoutputn);
end
% 个体极值和群体极值
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex:); %全局最佳
gbest=pop; %个体最佳
fitnessgbest=fitness; %个体最佳适应度值
fitnesszbest=bestfitness; %全局最佳适应度值
%% 迭代寻优
for i=1:maxgen
i
for j=1:sizepop
%速度更新
V(j:) = V(j:) + c1*rand*(gbest(j:) - pop(j:)) + c2*rand*(zbest - pop(j:));
V(jfind(V(j:)>Vmax))=Vmax;
V(jfind(V(j:)
%种群更新
pop(j:)=pop(j:)+0.2*V(j:);
pop(jfind(pop(j:)>popmax))=popmax;
pop(jfind(pop(j:)
%自适应变异
pos=unidrnd(21);
if rand>0.95
pop(jpos)=5*rands(11);
end
%适应度值
fitness(j)=fun1(pop(j:)inputnumhiddennumoutputnumnetinputnoutputn);
end
for j=1:sizepop
%个体最优更新
if fitness(j) < fitnessgbest(j)
gbest(j:) = pop(j:);
fitnessgbest(j) = fitness(j);
end
%群体最优更新
if fitness(j) < fitnesszbest
zbest = pop(j:);
fitnesszbest = fitness(j);
end
end
yy(i)=fitnesszbest;
end
%% 结果分析
plot(yy)
title([‘适应度曲线 ‘ ‘终止代数=‘ num2str(maxgen)]);
xlabel(‘进化代数‘);ylabel(‘适应度‘);
x=zbest;
%% 把最优初始阀值权值赋予网络预测
% %用遗传算法优化的BP网络进行值预测
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hidd
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 基于BP神经网络的语音情感识别系统
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
评论
共有 条评论