• 大小: 0.02M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 其他  

资源简介

遗传算法优化bp神经网络.zip

资源截图

代码片段和文件信息

%% 此程序为BP神经网络和基于遗传算法优化的BP神经网络预测效果对比
% 清空环境变量
clearclose all
clc
warning off

%% 读取数据
data=xlsread(‘数据.xlsx‘);
input=data(:1:end-1);
output=data(:end);

%% 设置训练数据和预测数据
L=length(output);  %总样本个数
num=150;         %设置训练样本个数

input_train = input(1:num:)‘;
output_train = output(1:num:)‘;
input_test = input(num+1:end:)‘;
output_test = output(num+1:end:)‘;

disp([‘训练样本数‘num2str(num)])
disp([‘测试样本数‘num2str(L-num)])

%% 数据归一化
[inputninputps]=mapminmax(input_train);%归一化到[-11]之间,inputps用来作下一次同样的归一化
[outputnoutputps]=mapminmax(output_train);
inputn_test=mapminmax(‘apply‘input_testinputps);% 对测试样本数据进行归一化

%% 节点个数
inputnum=size(input_train1);       %输入层节点个数
outputnum=size(output_train1);      %输出层节点个数
hiddennum=10;

%% 构建BP神经网络
disp(‘ ‘)
disp(‘标准的BP神经网络:‘)
net0=newff(inputnoutputnhiddennum{‘tansig‘‘purelin‘}‘trainlm‘‘learngdm‘);% 建立模型

%网络参数配置
net0.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net0.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net0.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.0001
net0.trainParam.show=25;                % 显示频率,这里设置为每训练25次显示一次
net0.trainParam.mc=0.01;                 % 动量因子
net0.trainParam.min_grad=1e-6;       % 最小性能梯度
net0.trainParam.max_fail=6;               % 最高失败次数

%开始训练
[net0tr0]=train(net0inputnoutputn);
figure
plotperform(tr0)   %训练集的误差曲线
%预测
an0=sim(net0inputn_test); %用训练好的模型进行仿真

%预测结果反归一化与误差计算
test_simu0=mapminmax(‘reverse‘an0outputps); %把仿真得到的数据还原为原始的数量级
%误差指标
[mae0mse0rmse0mape0error0errorPercent0]=calc_error(output_testtest_simu0);

%% 遗传算法寻最优权值阈值
disp(‘ ‘)
disp(‘GA优化BP神经网络:‘)
net=newff(inputnoutputnhiddennum{‘tansig‘‘purelin‘}‘trainlm‘‘learngdm‘);% 建立模型

%网络参数配置
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.0001
net.trainParam.show=25;                % 显示频率,这里设置为每训练25次显示一次
net.trainParam.mc=0.01;                 % 动量因子
net.trainParam.min_grad=1e-6;       % 最小性能梯度
net.trainParam.max_fail=6;               % 最高失败次数

save data inputnum hiddennum outputnum net inputn outputn  inputn_test outputps output_test


%初始化ga参数
PopulationSize_Data=10;   %初始种群规模
MaxGenerations_Data=30;   %最大进化代数
CrossoverFraction_Data=0.8;  %交叉概率
MigrationFraction_Data=0.2;   %变异概率
nvars=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;    %自变量个数
lb=repmat(-3nvars1);    %自变量下限
ub=repmat(3nvars1);   %自变量上限

%调用遗传算法函数
options = optimoptions(‘ga‘);
options = optimoptions(options‘PopulationSize‘ PopulationSize_Data);
options = optimoptions(options‘CrossoverFraction‘ CrossoverFraction_Data);
options = optimoptions(options‘MigrationFraction‘ MigrationFraction_Data);
options = optimoptions(options‘MaxGenerations‘ MaxGenerations_Data);
options = optimoptions(options‘SelectionFcn‘ @selectionroulette);   %轮盘赌选择
options = optimoptions(options

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         564  2020-09-02 01:32  遗传算法优化bp神经网络\calc_error.p
     文件         402  2020-09-02 01:32  遗传算法优化bp神经网络\fitness.p
     文件        5367  2020-09-02 01:29  遗传算法优化bp神经网络\main.m
     文件       17448  2020-09-02 01:28  遗传算法优化bp神经网络\数据.xlsx

评论

共有 条评论