📄 main.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 + -