资源描述:
《c++BP算法源程序3》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、下面是BPNET.CPP源文件#================================BpNet.cpp:implementationfile==================================/////////////////人工神经网络BP算法///////////////////////////////////1、动态改变学习速率//2、加入动量项//3、运用了Matcom4.5的矩阵运算库(可免费下载,头文件matlib.h),// 方便矩阵运算,当然,也可自己写矩阵类//4、可暂停运算//
2、5、可将网络以文件的形式保存、恢复///////////////作者:同济大学材料学院 张纯禹/////////////////////////////////////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//创建新网络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; //创建计算用的单个样本矩阵 mInput=zeros(1,this->iInput); mHidden=zeros(1,this->iHidden); mOutput=zeros(1,this->iOutput); //创建权重矩阵,并赋初值 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、; //创建阙值矩阵,并赋值 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); //创建权重变化矩阵 mChangei=zeros(this->iI
8、nput,this->iHidden); mChangeo=zeros(this->iHidden,this->iOutput); mInputNormFactor=zeros(iInput,2); mTargetNormFactor=zeros(iOutput,2