• 大小: 4.75MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-17
  • 语言: 其他
  • 标签: 粒子群  

资源简介

主要是粒子群算法优化BP神经网络算法,注释写得很清楚,希望对你们有帮助

资源截图

代码片段和文件信息

%% 该代码为基于PSO和BP网络的预测
%% 清空环境
clc
clear

%读取数据
% load data input output

% input= xlsread(‘C:\Users\lenovo\Documents\MATLAB\input_1.xlsx‘);  %读取excel里面的混沌数据作为输入
% output= xlsread(‘C:\Users\lenovo\Documents\MATLAB\output1.xlsx‘);
% %训练数据和预测数据
% input_train=input(1:200:)‘; %输入训练数据,前1900个输入数据
% input_test=input(201:300:)‘; %输入预测数据,后100个输入数据
% output_train=output(1:200)‘; %输出训练数据,前1900个输出数据
% output_test=output(201:300)‘; %输出预测数据,后100个输出数据
% train_input= xlsread(‘C:\Users\lenovo\Documents\MATLAB\train_input.xlsx‘‘V1:AO25192‘);  %读取excel里面的混沌数据作为输入
% train_output= xlsread(‘C:\Users\lenovo\Documents\MATLAB\train_output.xlsx‘);
% test_input= xlsread(‘C:\Users\lenovo\Documents\MATLAB\test_input.xlsx‘‘V1:AO11850‘);  %读取excel里面的混沌数据作为输入
% test_output= xlsread(‘C:\Users\lenovo\Documents\MATLAB\test_output.xlsx‘); 

train_input= xlsread(‘C:\Users\lenovo\Documents\MATLAB\train_input.xlsx‘);  %读取excel里面的混沌数据作为输入
train_output= xlsread(‘C:\Users\lenovo\Documents\MATLAB\train_output.xlsx‘);
test_input= xlsread(‘C:\Users\lenovo\Documents\MATLAB\test_input.xlsx‘);  %读取excel里面的混沌数据作为输入
test_output= xlsread(‘C:\Users\lenovo\Documents\MATLAB\test_output.xlsx‘); 

input=train_input;
input_train=input‘; %输入训练数据,前1900个输入数据

test_input=test_input;
input_test=test_input‘; %输入预测数据,后100个输入数据

train_output=train_output;
output_train=train_output‘; %输出训练数据,前1900个输出数据

test_output=test_output;
output_test=test_output‘; %输出预测数据,后100个输出数据

inputnum=size(input_train1);  %输入层节点数 size(input_train1)
hiddennum=40;  %隐含层节点数
outputnum=5; %输出层节点数
%初始化编码长度,以免后面出现超维错误gl
numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum; %编码长度

%选连样本输入输出数据归一化

[inputninputps]=mapminmax(input_train);

[outputnoutputps]=mapminmax(output_train);

%构建一个前馈BP网络
net=newff(41205);
% net=newff(inputnoutputnhiddennum);
% net=newff(minmax(inputn)[hiddennum5]{‘tansig‘‘purelin‘}‘traingd‘); 

% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=2;   % 进化次数  2
sizepop=numsum;   %种群规模110

Vmax=0.5;  %速度限制
Vmin=-0.5;
popmax=5;  %种群限制
popmin=-5;

%%产生初始粒子和速度
for i=1:sizepop       %随机产生一个种群
    pop(i:)=5*rands(1numsum);   %初始种群,gl 此处例程是pop(i:)=5*rands(121);把21换成了numsum。
    V(i:)=rands(1numsum);   %初始化速度, gl此处例程是V(i:)=rands(1numsum);把21换成了numsum。
    fitness(i)=fun(pop(i:)inputnumhiddennumoutputnumnetinputnoutputn);%计算适应度
%   fitness(i:)=fun(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(j:) = V(j:) + c1*rand*(gbest(j:) - pop(j:)) + c2*rand*(zbest(j:) - pop(j:));
        V(jfind(V(j:)>Vmax))=Vmax;
        V(j

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6070  2018-10-08 21:34  pso优化BP\bp.m

     文件       2062  2018-10-08 16:22  pso优化BP\fun.m

     文件    1825174  2018-09-29 11:59  pso优化BP\test_input.xlsx

     文件     235526  2018-09-29 11:59  pso优化BP\test_output.xlsx

     文件    4021212  2018-10-04 10:34  pso优化BP\train_input.xlsx

     文件     503922  2018-09-27 14:40  pso优化BP\train_output.xlsx

     目录          0  2018-10-10 20:35  pso优化BP

----------- ---------  ---------- -----  ----

              6593966                    7


评论

共有 条评论