版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
移植MATLAB神經(jīng)網(wǎng)絡(luò)算法到MFC平臺(tái)該算法需利用高斯隨機(jī)分布來制造預(yù)測,因此另封裝一個(gè)randn()函數(shù)制造偽高斯隨機(jī)數(shù),然后在Forecast()函數(shù)中對樣本進(jìn)行網(wǎng)絡(luò)訓(xùn)練,并利用訓(xùn)練結(jié)果進(jìn)行網(wǎng)絡(luò)預(yù)測,[cpp]viewplaincopy#gauss.h/////////////////////////////////////////////////////////////////////#definepi3.1415926535897#definerd(rand()/(RAND_MAX+1.0))doublerandn(inttype){srand((unsigned)time(NULL));//按照12個(gè)均勻分布之和減去6得到正態(tài)分布函數(shù)的x值if(type==1)returnrd+rd+rd+rd+rd+rd+rd+rd+rd+rd+rd+rd-6.0;//按照計(jì)算公式y(tǒng)=sqrt(-2*ln(U))*cos(2*PI*V)計(jì)算得到xelseif(type==2)returnsqrt(-2*log(rand()/(RAND_MAX+1.0)))*cos(2*pi*rand()/(RAND_MAX+1.0));elsereturnrandn(0.0,1.0,-10.0,10.0);}/////////////////////////////////////////////////////////////////////////////////預(yù)測算法///////////////////////////////////////////////////////vector<vector<double>>Input;////////////訓(xùn)練輸入樣本vector<vector<double>>Output;//////////訓(xùn)練輸出樣本vector<vector<double>>PreInput;////////預(yù)測輸入樣本vector<vector<double>>PreOutput;///////預(yù)測輸出結(jié)果intinput_col;//定義訓(xùn)練輸入樣本列,數(shù)據(jù)計(jì)算以列為單位,與MATLAB中列向量同意義intinput_row;//定義訓(xùn)練輸入樣本行intinputtest_row;//定義訓(xùn)練輸出樣本行intoutput_col;//定義預(yù)測輸入樣本列,即需要預(yù)測的數(shù)據(jù),1列intoutput_row;//定義預(yù)測輸入樣本行intoutputtest_row;//定義預(yù)測輸出樣本行,1列intmaxgen;//迭代次數(shù)intn;//隱形節(jié)點(diǎn)個(gè)數(shù)doubleInput[20][1];///////////////以下為個(gè)訓(xùn)練向量與預(yù)測向量結(jié)構(gòu)初始化,預(yù)測時(shí)需進(jìn)行數(shù)據(jù)有效化填充////////////////////////////////inti=0;Input.resize(input_row);for(i=0;i<input_row;i++){Input[i].resize(input_col);}Output.resize(inputtest_row);for(i=0;i<inputtest_row;i++){Output[i].resize(input_col);}PreInput.resize(output_row);for(i=0;i<output_row;i++){PreInput[i].resize(output_col);}PreOutput.resize(outputtest_row);for(i=0;i<outputtest_row;i++){PreOutput[i].resize(output_col);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////本人為動(dòng)態(tài)改變預(yù)測體,采用vector向量結(jié)構(gòu)計(jì)算,可隨時(shí)改變數(shù)組結(jié)構(gòu)////////////////////////////////////vector的使用需添加標(biāo)準(zhǔn)庫頭文件<vertor>,并定義命名空間,usingnamespacestd;//////////////////規(guī)避double數(shù)組只能靜態(tài)定義的特性//////////////////////////////////////////////////////////////////////////////////////////////調(diào)試中發(fā)現(xiàn)double二維及以上常規(guī)數(shù)組無法進(jìn)行指針與數(shù)組名之間的轉(zhuǎn)化//////////////////////////////////具體錯(cuò)誤cannotconvertdouble**todouble[][]////////////////////////////////////////voidForecast(){intM=input_col;%輸入節(jié)點(diǎn)個(gè)數(shù)intN=output_col;%輸出節(jié)點(diǎn)個(gè)數(shù)doublelr1=0.01;//%學(xué)習(xí)概率doublelr2=0.001;//%學(xué)習(xí)概率inti,j,k,kk,kkk;srand((unsigned)time(NULL));doublevalue=0.0;CStringstr=_T("");vector<vector<double>>Wjk(n);for(i=0;i<n;i++){Wjk[i].resize(input_col);}vector<vector<double>>Wjk_1(n);for(i=0;i<n;i++){Wjk_1[i].resize(input_col);}vector<vector<double>>Wjk_2(n);for(i=0;i<n;i++){Wjk_2[i].resize(input_col);}for(i=0;i<n;i++){for(j=0;j<input_col;j++){Wjk[i][j]=randn(2);Wjk_1[i][j]=Wjk[i][j];Wjk_2[i][j]=Wjk_1[i][j];}}vector<vector<double>>Wij(output_col);for(i=0;i<output_col;i++){Wij[i].resize(n);}vector<vector<double>>Wij_1(output_col);for(i=0;i<output_col;i++){Wij_1[i].resize(n);}vector<vector<double>>Wij_2(output_col);for(i=0;i<output_col;i++){Wij_2[i].resize(n);}for(i=0;i<output_col;i++){for(j=0;j<n;j++){Wij[i][j]=randn(2);Wij_1[i][j]=Wij[i][j];Wij_2[i][j]=Wij_1[i][j];}}vector<vector<double>>a(1);for(i=0;i<1;i++){a[i].resize(n);}vector<vector<double>>a_1(1);for(i=0;i<1;i++){a_1[i].resize(n);}vector<vector<double>>a_2(1);for(i=0;i<1;i++){a_2[i].resize(n);}for(i=0;i<1;i++){for(j=0;j<n;j++){a[i][j]=randn(2);a_1[i][j]=a[i][j];a_2[i][j]=a_1[i][j];}}vector<vector<double>>b(1);for(i=0;i<1;i++){b[i].resize(n);}vector<vector<double>>b_1(1);for(i=0;i<1;i++){b_1[i].resize(n);}vector<vector<double>>b_2(1);for(i=0;i<1;i++){b_2[i].resize(n);}for(i=0;i<1;i++){for(j=0;j<n;j++){b[i][j]=randn(2);b_1[i][j]=b[i][j];b_2[i][j]=b_1[i][j];}}vector<vector<double>>y(1);for(i=0;i<1;i++){y[i].resize(output_col);}vector<vector<double>>net(1);for(i=0;i<1;i++){net[i].resize(n);}vector<vector<double>>net_ab(1);for(i=0;i<1;i++){net_ab[i].resize(n);}vector<vector<double>>d_Wjk(n);for(i=0;i<n;i++){d_Wjk[i].resize(input_col);}vector<vector<double>>d_Wij(output_col);for(i=0;i<output_col;i++){d_Wij[i].resize(n);}vector<vector<double>>d_a(1);for(i=0;i<1;i++){d_a[i].resize(n);}vector<vector<double>>d_b(1);for(i=0;i<1;i++){d_b[i].resize(n);}//%%輸入輸出數(shù)據(jù)歸一化doubletempmax=0.0,tempmin=0.0;vector<double>input_max(input_col);vector<double>input_min(input_col);vector<vector<double>>Input1(input_row);for(i=0;i<input_row;i++){Input1[i].resize(input_col);}for(i=0;i<input_col;i++){tempmax=Input[0][i];tempmin=Input[0][i];for(j=0;j<input_row;j++){if(Input[j][i]>tempmax)tempmax=Input[j][i];if(Input[j][i]<tempmin)tempmin=Input[j][i];}input_max[i]=tempmax;input_min[i]=tempmin;for(j=0;j<input_row;j++){if(input_max[i]==input_min[i])Input1[j][i]=0;elseInput1[j][i]=2*(Input[j][i]-input_min[i])/(input_max[i]-input_min[i])-1;}}vector<double>output_max(output_col);vector<double>output_min(output_col);vector<vector<double>>PreInput1(output_row);for(i=0;i<ut_row;i++){PreInput1[i].resize(output_col);}for(i=0;i<output_col;i++){tempmax=PreInput[0][i];tempmin=PreInput[0][i];for(j=0;j<output_row;j++){if(PreInput[j][i]>tempmax)tempmax=PreInput[j][i];if(PreInput[j][i]<tempmin)tempmin=PreInput[j][i];}output_max[i]=tempmax;output_min[i]=tempmin;for(j=0;j<output_row;j++){if(output_max[i]==output_min[i])PreInput1[j][i]=0;elsePreInput1[j][i]=2*(PreInput[j][i]-output_min[i])/(output_max[i]-output_min[i])-1;}}//%%網(wǎng)絡(luò)訓(xùn)練vector<double>x(input_col);vector<double>yqw(output_col);vector<double>error(maxgen);doubletemp=0.0;for(i=0;i<maxgen;i++){//%誤差累計(jì)error[i]=0.0;for(kk=0;kk<input_row;kk++){for(kkk=0;kkk<input_col;kkk++){x[kkk]=Input1[kk][kkk];}for(kkk=0;kkk<output_col;kkk++){yqw[kkk]=PreInput1[kk][kkk];}for(j=0;j<n;j++){for(k=0;k<input_col;k++){net[0][j]=net[0][j]+Wjk[j][k]*x[k];net_ab[0][j]=(net[0][j]-b[0][j])/a[0][j];}temp=mymorlet(net_ab[0][j]);for(k=0;k<output_col;k++){y[0][k]=y[0][k]+Wij[k][j]*temp;}}for(j=0;j<output_col;j++){temp=temp+abs(yqw[j]-y[0][j]);}error[i]=error[i]+temp;for(j=0;j<n;j++){temp=mymorlet(net_ab[0][j]);for(k=0;k<output_col;k++){d_Wij[k][j]=d_Wij[k][j]-(yqw[k]-y[0][k])*temp;}temp=d_mymorlet(net_ab[0][j]);for(k=0;k<input_col;k++){for(kkk=0;kkk<output_col;kkk++){d_Wjk[j][k]=d_Wjk[j][k]+(yqw[kkk]-y[0][kkk])*Wij[kkk][j];}d_Wjk[j][k]=-d_Wjk[j][k]*temp*x[k]/a[0][j];}for(k=0;k<output_col;k++){d_b[0][j]=d_b[0][j]+(yqw[k]-y[0][k])*Wij[k][j];}d_b[0][j]=d_b[0][j]*temp/a[0][j];for(k=0;k<output_col;k++){d_a[0][j]=d_a[0][j]+(yqw[k]-y[0][k])*Wij[k][j];}d_a[0][j]=d_a[0][j]*temp*((net[0][j]-b[0][j])/b[0][j])/a[0][j];}///權(quán)值參數(shù)更新for(j=0;j<n;j++){for(k=0;k<input_col;k++){Wjk[j][k]=Wjk[j][k]-lr1*d_Wjk[j][k];d_Wjk[j][k]=0.0;Wjk_1[j][k]=Wjk[j][k];Wjk_2[j][k]=Wjk_1[j][k];}b[0][j]=b[0][j]-lr2*d_b[0][j];a[0][j]=a[0][j]-lr2*d_a[0][j];d_a[0][j]=0.0;d_b[0][j]=0.0;net[0][j]=0.0;net_ab[0][j]=0.0;a_1[0][j]=a[0][j];a_2[0][j]=a_1[0][j];b_1[0][j]=b[0][j];b_1[0][j]=b_1[0][j];}for(j=0;j<output_col;j++){for(k=0;k<n;k++){Wij[j][k]=Wij[j][k]-lr1*d_Wij[j][k];d_Wij[j][k]=0.0;Wij_1[j][k]=Wij[j][k];Wij_2[j][k]=Wij_1[j][k];}y[0][j]=0.0;}}}//////網(wǎng)絡(luò)預(yù)測//////預(yù)測輸入歸一化vector<double>inputtest_max(input_col);vector<double>inputtest_min(input_col);vector<vector<double>>OutputAsInput1(inputtest_row);for(i=0;i<inputtest_row;i++){OutputAsInput1[i].resize(input_col);}//doubleinputtest_min[input_col]={{0.0}};for(i=0;i<input_col;i++){tempmax=Output[0][i];tempmin=Output[0][i];for(j=0;j<inputtest_row;j++){if(Output[j][i]>tempmax)tempmax=Output[j][i];if(Output[j][i]<tempmin)tempmin=Output[j][i];}inputtest_max[i]=tempmax;inputtest_min[i]=tempmin;for(j=0;j<inputtest_row;j++){if(inputtest_max[i]==inputtest_min[i])OutputAsInput1[j][i]=0.5*(input_max[i]+input_min[i]);elseOutputAsInput1[j][i]=(Output[j][i]-inputtest_min[i])/(inputtest_ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年互聯(lián)網(wǎng)醫(yī)療解決方案技術(shù)合作協(xié)議
- 2025年雙方協(xié)商勞務(wù)派遣協(xié)議
- 2025年P(guān)PP項(xiàng)目合作財(cái)務(wù)管理協(xié)議
- 主材供應(yīng)及合作框架合同 2024年版一
- 2025版區(qū)塊鏈技術(shù)應(yīng)用合伙人合作協(xié)議3篇
- 2025年度智能建筑安裝工程承包技師合同4篇
- 二零二五年度酒吧食品安全管理與承包合同
- 2025年度城市公交車定點(diǎn)維修與應(yīng)急保障合同
- 二零二五年度汽車維修免責(zé)聲明適用于車主自帶配件
- 2025年度地鐵隧道鋼筋工勞務(wù)施工安全質(zhì)量保障合同
- 建筑結(jié)構(gòu)課程設(shè)計(jì)成果
- 班級建設(shè)方案中等職業(yè)學(xué)校班主任能力大賽
- 纖維增強(qiáng)復(fù)合材料 單向增強(qiáng)材料Ⅰ型-Ⅱ 型混合層間斷裂韌性的測定 編制說明
- 習(xí)近平法治思想概論教學(xué)課件緒論
- 寵物會(huì)展策劃設(shè)計(jì)方案
- 孤殘兒童護(hù)理員(四級)試題
- 梁湘潤《子平基礎(chǔ)概要》簡體版
- 醫(yī)院急診醫(yī)學(xué)小講課課件:急診呼吸衰竭的處理
- 腸梗阻導(dǎo)管在臨床中的使用及護(hù)理課件
- 小學(xué)英語單詞匯總大全打印
- 衛(wèi)生健康系統(tǒng)安全生產(chǎn)隱患全面排查
評論
0/150
提交評論