資源簡介
遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡.zip

代碼片段和文件信息
%%?此程序為BP神經(jīng)網(wǎng)絡和基于遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡預測效果對比
%?清空環(huán)境變量
clearclose?all
clc
warning?off
%%?讀取數(shù)據(jù)
data=xlsread(‘數(shù)據(jù).xlsx‘);
input=data(:1:end-1);
output=data(:end);
%%?設置訓練數(shù)據(jù)和預測數(shù)據(jù)
L=length(output);??%總樣本個數(shù)
num=150;?????????%設置訓練樣本個數(shù)
input_train?=?input(1:num:)‘;
output_train?=?output(1:num:)‘;
input_test?=?input(num+1:end:)‘;
output_test?=?output(num+1:end:)‘;
disp([‘訓練樣本數(shù)‘num2str(num)])
disp([‘測試樣本數(shù)‘num2str(L-num)])
%%?數(shù)據(jù)歸一化
[inputninputps]=mapminmax(input_train);%歸一化到[-11]之間,inputps用來作下一次同樣的歸一化
[outputnoutputps]=mapminmax(output_train);
inputn_test=mapminmax(‘a(chǎn)pply‘input_testinputps);%?對測試樣本數(shù)據(jù)進行歸一化
%%?節(jié)點個數(shù)
inputnum=size(input_train1);???????%輸入層節(jié)點個數(shù)
outputnum=size(output_train1);??????%輸出層節(jié)點個數(shù)
hiddennum=10;
%%?構建BP神經(jīng)網(wǎng)絡
disp(‘?‘)
disp(‘標準的BP神經(jīng)網(wǎng)絡:‘)
net0=newff(inputnoutputnhiddennum{‘tansig‘‘purelin‘}‘trainlm‘‘learngdm‘);%?建立模型
%網(wǎng)絡參數(shù)配置
net0.trainParam.epochs=1000;?????????%?訓練次數(shù),這里設置為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;???????????????%?最高失敗次數(shù)
%開始訓練
[net0tr0]=train(net0inputnoutputn);
figure
plotperform(tr0)???%訓練集的誤差曲線
%預測
an0=sim(net0inputn_test);?%用訓練好的模型進行仿真
%預測結果反歸一化與誤差計算
test_simu0=mapminmax(‘reverse‘a(chǎn)n0outputps);?%把仿真得到的數(shù)據(jù)還原為原始的數(shù)量級
%誤差指標
[mae0mse0rmse0mape0error0errorPercent0]=calc_error(output_testtest_simu0);
%%?遺傳算法尋最優(yōu)權值閾值
disp(‘?‘)
disp(‘GA優(yōu)化BP神經(jīng)網(wǎng)絡:‘)
net=newff(inputnoutputnhiddennum{‘tansig‘‘purelin‘}‘trainlm‘‘learngdm‘);%?建立模型
%網(wǎng)絡參數(shù)配置
net.trainParam.epochs=1000;?????????%?訓練次數(shù),這里設置為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;???????????????%?最高失敗次數(shù)
save?data?inputnum?hiddennum?outputnum?net?inputn?outputn??inputn_test?outputps?output_test
%初始化ga參數(shù)
PopulationSize_Data=10;???%初始種群規(guī)模
MaxGenerations_Data=30;???%最大進化代數(shù)
CrossoverFraction_Data=0.8;??%交叉概率
MigrationFraction_Data=0.2;???%變異概率
nvars=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;????%自變量個數(shù)
lb=repmat(-3nvars1);????%自變量下限
ub=repmat(3nvars1);???%自變量上限
%調(diào)用遺傳算法函數(shù)
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??遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡\calc_error.p
?????文件?????????402??2020-09-02?01:32??遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡\fitness.p
?????文件????????5367??2020-09-02?01:29??遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡\main.m
?????文件???????17448??2020-09-02?01:28??遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡\數(shù)據(jù).xlsx
- 上一篇:正則表達式中re.1.png
- 下一篇:Elsevier 的word模板
評論
共有 條評論