資源描述:
《c++BP算法源程序3》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、下面是BPNET.CPP源文件#================================BpNet.cpp:implementationfile==================================/////////////////人工神經網(wǎng)絡BP算法///////////////////////////////////1、動態(tài)改變學習速率//2、加入動量項//3、運用了Matcom4.5的矩陣運算庫(可免費下載,頭文件matlib.h),//??方便矩陣運算,當然,也可自己寫矩陣類//4、可暫停運算//
2、5、可將網(wǎng)絡以文件的形式保存、恢復///////////////作者:同濟大學材料學院??張純禹/////////////////////////////////////email:chunyu_79@hotmail.com/////////////////////////////////////////QQ:53806186/////////////////////////////////////////////////////////歡迎不斷改進!歡迎討論其他實用的算法!/////////////////#include"
3、BpNet.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CBpNetIMPLEMENT_SERIAL(CBpNet,CObject,1)CBpNet::CBpNet(){initM(MATCOM_VERSION);//啟用矩陣運算庫}CBpNet:
4、:~CBpNet(){exitM();deletethis;}//CBpNetmessagehandlers//創(chuàng)建新網(wǎng)絡voidCBpNet::Create(MmmInputData,MmmTarget,intiInput,intiHidden,intiOutput){inti,j;??mSampleInput=zeros(mInput.rows(),mInput.cols());??mSampleTarget=zeros(mTarget.rows(),mTarget.cols());????mSampleInput=mIn
5、putData;??mSampleTarget=mTarget;??this->iInput=iInput;??this->iHidden=iHidden;??this->iOutput=iOutput;??//創(chuàng)建計算用的單個樣本矩陣??mInput=zeros(1,this->iInput);??mHidden=zeros(1,this->iHidden);??mOutput=zeros(1,this->iOutput);??//創(chuàng)建權重矩陣,并賦初值??mWeighti=zeros(this->iInput,this->
6、iHidden);??mWeighto=zeros(this->iHidden,this->iOutput);??//賦初值??for(i=1;i<=this->iInput;i++)????for(j=1;j<=this->iHidden;j++)??????mWeighti.r(i,j)=randab(-1.0,1.0);??for(i=1;i<=this->iHidden;i++)????for(j=1;j<=this->iOutput;j++)??????mWeighto.r(i,j)=randab(-1.0,1.0)
7、;????//創(chuàng)建闕值矩陣,并賦值??mThresholdi=zeros(1,this->iHidden);??for(i=1;i<=this->iHidden;i++)????mThresholdi.r(i)=randab(-1.0,1.0);??mThresholdo=zeros(1,this->iOutput);??for(i=1;i<=this->iOutput;i++)????mThresholdo.r(i)=randab(-1.0,1.0);??//創(chuàng)建權重變化矩陣??mChangei=zeros(this->iI
8、nput,this->iHidden);??mChangeo=zeros(this->iHidden,this->iOutput);????mInputNormFactor=zeros(iInput,2);??mTargetNormFactor=zeros(iOutput,2