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

📄 main.cpp

📁 用于实现BP神经网络的C++Builder源代码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include "BP.h"
int N,In,ON,HN;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TTempForm *TempForm;

//---------------------------------------------------------------------------
__fastcall TTempForm::TTempForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TTempForm::Button1Click(TObject *Sender)
{
	 int i,j,k,m;
         N=21;
         In=1;
         HN=5;
         ON=1;
         TBP *newBP=NULL;
         newBP=new TBP;

double PP[21][1]={-1,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}; //单个样本输入数据
double TT[21][1]={-0.9602,-0.5770,-0.0729,0.3771,0.6405,0.66,0.4609,0.1336,-0.2013,-0.4344,-0.5,-0.3930,-0.1647,0.0988,0.3072,0.3960,0.3449,0.1816,-0.0312,-0.2189,-0.3201}; //单个样本教师数据



      AnsiString m_str;
       for(i=0;i<N;i++)
          for(j=0;j<In;j++)
            newBP->P[i][j]=PP[i][j];
        for(i=0;i<N;i++)
           for(j=0;j<ON;j++)
             newBP->T[i][j]=TT[i][j];

          newBP->LoadData(0.03,0.05,0.5,2000);
          newBP->RunBP();

	  m_str.sprintf("网络已经学习了%d次,现在的全局误差为:%f\n",newBP->study,newBP->sum_err);
          Memo1->Lines->Add(m_str);
          for(i=0;i<N;i++)
            for(j=0;j<ON;j++)
             {
             m_str.sprintf("预测值:%f \n",newBP->O[i][j]);
             Memo1->Lines->Add(m_str);
             }
         m_str.sprintf("输入层到隐层的权值 \n");
         Memo1->Lines->Add(m_str);
	  for( i=0;i<In;i++)
	  {	  
	     for(j=0;j<HN;j++)
             {
		  m_str.sprintf("%10.4f",newBP->W[i][j]);
                  Memo1->Lines->Add(m_str);
             }
		  Memo1->Lines->Add("\n");
	  }
	  m_str.sprintf("输入层到隐层的阀值\n");
          Memo1->Lines->Add(m_str);
	   for(j=0;j<HN;j++)
           {
               m_str.sprintf("%10.4f",newBP->sita[j]);
               Memo1->Lines->Add(m_str);
           }
           Memo1->Lines->Add("\n");


	  m_str.sprintf("隐层到输出层的权值 \n");
          Memo1->Lines->Add(m_str);
          for ( j=0;j<HN;j++)
		  {
                     for ( k=0;k<ON;k++)
                     {
		        m_str.sprintf("%10.4f     ",newBP->V[j][k]);
                        Memo1->Lines->Add(m_str);
                     }
		Memo1->Lines->Add("\n");
		  }
	  m_str.sprintf(" 隐层到输出层的阀值\n");
          Memo1->Lines->Add(m_str);
          for ( k=0;k<ON;k++)
            {
              m_str.sprintf("%10.4f     ",newBP->gama[k]);
              Memo1->Lines->Add(m_str);
            }
	  Memo1->Lines->Add("\n");
          double Input[1];
          Input[0]=-1;
          newBP->TestBP(Input,Memo2);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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