⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp.cpp

📁 用神经网络对系统辨识(BP网络)。此程序为c语言和matlab混和编程
💻 CPP
字号:
#include  "bp.h"
#include  "bp_learnfunction.h"




void BPLearnProc(double xArray[][DIMX], double yArray[][DIMY], int theDimLearn, double referArray[][MAXDIMREFER][MAXDIMREFER] )
{
  
	double incReferArray[RANK][MAXDIMREFER][MAXDIMREFER];//BP网络的系数增量矩阵
    double e[RANK][MAXDIMREFER];//bp网络的梯度矩阵
    double out[RANK][MAXDIMREFER];//BP网络的各层输出
	
	int step;
	double error;
      
    step = 0;
	out[0][0] = 1;
    Random( referArray );//随机化网络的系数矩阵
	Zero( incReferArray );//使增量矩阵各值为零
    
    do
	{   
		error = 0;

	    for( int learn = 0; learn < theDimLearn; learn++ )
        {   			
			for( int dimXA = 1; dimXA <= DIMX; dimXA++ )//第一层输出为输入x
		        out[0][dimXA] = xArray[learn][dimXA - 1];
           
            for( int rankA = 1; rankA < RANK; rankA++ )//求解第二层与第三层的输出
                GetTheOut( rankA, referArray, out );
                       
            for( int rankB = RANK-1; rankB > 0; rankB--)
                GetTheErr( rankB, referArray, out, e, yArray, learn );//反向计算梯度

            for( int rankC = 1; rankC <RANK; rankC++ )
                ModifyRefer( rankC, referArray, out, e, yArray, incReferArray );  
			
			error +=  GetThePowE( yArray, out, learn );//求解指标函数值
		
		}
    
    } 
	while( error >= PE && ++step < 5000);//指标函数满足要求或学习5000次时退出
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -