資源簡介
遺傳算法優化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
- 上一篇:正則表達式中re.1.png
- 下一篇:Elsevier 的word模板
評論
共有 條評論