​【非線性函數擬合】基於遺傳算法優化BP神經網絡實現非線性函數擬合matlab代碼

matlab科研助手 2022-01-07 19:34:46 阅读数:685

算法 bp matlab

1 簡介

傳統的BP神經網絡收斂速度慢,以及該算法的不完備性,易陷於局部極小,全局最優無法保證能收斂到等缺點.針對BP神經網絡的缺陷,該文利用遺傳算法優化BP神經網絡權值和閾值,使得訓練了BP神經網絡預測模型得到了最優解.采用遺傳算法優化BP神經網絡的算法,並以此結合算法來研究非線性函數擬合的問題.從實驗結果錶明,基於遺傳算法優化的BP神經網絡的非線性函數擬合具有較强的收斂性和魯棒性,並且有了更高的預測精度.

2 部分代碼


%% 雙隱含層BP神經網絡

%% 清空環境變量

clc

clear


%% 訓練數據預測數據提取及歸一化

%下載輸入輸出數據

load data input output


%從1到2000間隨機排序

k=rand(1,2000);

[m,n]=sort(k);


%找出訓練數據和預測數據

input_train=input(n(1:1900),:)';

output_train=output(n(1:1900));

input_test=input(n(1901:2000),:)';

output_test=output(n(1901:2000));


%選連樣本輸入輸出數據歸一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);


%% BP網絡訓練

% %初始化網絡結構

net=newff(inputn,outputn,[5 5]);


net.trainParam.epochs=100;

net.trainParam.lr=0.1;

net.trainParam.goal=0.00004;


%網絡訓練

net=train(net,inputn,outputn);


%% BP網絡預測

%預測數據歸一化

inputn_test=mapminmax('apply',input_test,inputps);


%網絡預測輸出

an=sim(net,inputn_test);


%網絡輸出反歸一化

BPoutput=mapminmax('reverse',an,outputps);


%% 結果分析


figure(1)

plot(BPoutput,':og')

hold on

plot(output_test,'-*');

legend('預測輸出','期望輸出')

title('BP網絡預測輸出','fontsize',12)

ylabel('函數輸出','fontsize',12)

xlabel('樣本','fontsize',12)

%預測誤差

error=BPoutput-output_test;



figure(2)

plot(error,'-*')

title('BP網絡預測誤差','fontsize',12)

ylabel('誤差','fontsize',12)

xlabel('樣本','fontsize',12)


figure(3)

plot((output_test-BPoutput)./BPoutput,'-*');

title('神經網絡預測誤差百分比')


errorsum=sum(abs(error))

3 仿真結果

​【非線性函數擬合】基於遺傳算法優化BP神經網絡實現非線性函數擬合matlab代碼_神經網絡

​【非線性函數擬合】基於遺傳算法優化BP神經網絡實現非線性函數擬合matlab代碼_數據_02

​【非線性函數擬合】基於遺傳算法優化BP神經網絡實現非線性函數擬合matlab代碼_數據_03

4 參考文獻

[1]王光明 王愛平. 遺傳算法優化BP神經網絡的非線性函數擬合研究[J]. 赤峰學院學報:自然科學版, 2014, 30(22):4.

博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,有科研問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系博主删除。

博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,有科研問題可私信交流。

版权声明:本文为[matlab科研助手]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071934460515.html