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

📄 dlginit.cpp

📁 BP神经网络,可以进行任意发酵过程建模,包括初始化,训练与测试,
💻 CPP
字号:
// DlgInit.cpp : implementation file
//

#include "stdafx.h"
#include "NN_ES.h"
#include "DlgInit.h"
#include <afxdlgs.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgInit dialog





//global.h
extern int gi_SN;
extern int gi_IN;
extern int YGXH;
//The sjwl header file...
//.......................................

//Global variables ...
extern int const MaxNumber=20;
extern double I[MaxNumber][300];
extern double H[MaxNumber][300];
extern double O[MaxNumber][300];

//...............................

extern double W_S_I[MaxNumber][MaxNumber];
extern double W_I_H[MaxNumber][MaxNumber];
extern double W_H_O[MaxNumber][MaxNumber];
//................................
extern double Thita_I[MaxNumber];//输入神经元阀值
extern double Thita_H[MaxNumber];//隐层神经元阀值
extern double Thita_O[MaxNumber];//输出层神经元阀值
//......................................
extern double Dlta_I[MaxNumber][300];//输入神经元在第PN个样本学习后DLTA值
extern double Dlta_H[MaxNumber][300];//隐层神经元在第PN个样本学习后DLTA值
extern double Dlta_O[MaxNumber][300];//输出层神经元在第PN个样本学习后DLTA值
//......................................
extern double Yita_S_I[MaxNumber][MaxNumber];
extern double Yita_I_H[MaxNumber][MaxNumber];
extern double Yita_H_O[MaxNumber][MaxNumber];
///////////////////////////////////
extern double TD0_I[MaxNumber][MaxNumber];
extern double TD0_H[MaxNumber][MaxNumber];
extern double TD0_O[MaxNumber][MaxNumber];
extern double TD1_I[MaxNumber][MaxNumber];
extern double TD1_H[MaxNumber][MaxNumber];
extern double TD1_O[MaxNumber][MaxNumber];
//////////////////////////////////////
extern double in_val[MaxNumber][300];//训练输入样本空间
extern double out_val[MaxNumber][300];//训练输出样本空间
extern double testin[300][MaxNumber];//测试输入样本空间
extern double testout[300][MaxNumber];//测试输出样本空间
extern double learnin[300][MaxNumber];//训练输入样本空间
extern double learnout[300][MaxNumber];//训练输出样本空间


///////////////////////////////////////
extern double lym_max[MaxNumber];
extern double lym_min[MaxNumber];
extern double Alpha;
extern int Count;
extern int recordnumber;
extern double E;
extern double error[300];
extern double s[300][MaxNumber];
extern double learnerror;
extern double testerror;
extern double getData[300][MaxNumber];
extern double errora,errorb;
extern int testnum;
extern int learnnum;
extern int number;
extern double  learnxl;

extern int BPNN_SN;
extern int BPNN_IN;
extern int BPNN_HN;
extern int BPNN_ON;
extern int BPNN_PN;   //最大样本记录数
extern int BPNN_GDZ;
extern int BPNN_SUM;
extern bool mxxz;
extern int CLQD;
extern char strInputFileName[100];
extern char strOutputFileName[100];

















CDlgInit::CDlgInit(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgInit::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgInit)
	m_Error = 0.01;
	m_HideLayer = 9;
	m_InputLayer = 7;
	m_LearnNum = 5000;
	m_FileName = _T("d:\\Nn_es5-13\\wang.txt");
	m_OutputLayer = 1;
	m_SampleNum =12;
	m_SampleLayer = 3;
	m_OutputFileName = _T("d:\\Nn_es5-13\\abc.txt");
	m_pisample = 15;
	m_learncd = 0.15f;
	m_xuhao = 2;
	m_CeLiangcs = 6;
	m_CeLiangqd = 6;
	//}}AFX_DATA_INIT
}


void CDlgInit::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgInit)
	DDX_Text(pDX, IDC_txtError, m_Error);
	DDX_Text(pDX, IDC_txtHideLayer, m_HideLayer);
	DDX_Text(pDX, IDC_txtInputLayer, m_InputLayer);
	DDX_Text(pDX, IDC_txtLearnNum, m_LearnNum);
	DDX_Text(pDX, IDC_txtOpenFileName, m_FileName);
	DDX_Text(pDX, IDC_txtOutputLayer, m_OutputLayer);
	DDV_MinMaxInt(pDX, m_OutputLayer, 1, 10);
	DDX_Text(pDX, IDC_txtSampleNum, m_SampleNum);
	DDX_Text(pDX, IDC_txtSampleLayer, m_SampleLayer);
	DDX_Text(pDX, IDC_txtOutputFileName, m_OutputFileName);
	DDX_Text(pDX, IDC_txtsamplepi, m_pisample);
	DDX_Text(pDX, IDC_txtlearncd, m_learncd);
	DDX_Text(pDX, IDC_txtxuhao, m_xuhao);
	DDV_MinMaxInt(pDX, m_xuhao, 0, 12);
	DDX_Text(pDX, IDC_CeLiangcs, m_CeLiangcs);
	DDX_Text(pDX, IDC_CeLiangQiDian, m_CeLiangqd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgInit, CDialog)
	//{{AFX_MSG_MAP(CDlgInit)
	ON_BN_CLICKED(IDC_OpenFile, OnOpenFile)
	ON_BN_CLICKED(IDC_SaveFile, OnSaveFile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgInit message handlers

void CDlgInit::OnOpenFile() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dl(TRUE);
	if(dl.DoModal()==IDOK)
	{
		m_FileName=dl.GetPathName();
		UpdateData(FALSE);
	}
}

void CDlgInit::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
	E=m_Error;
	BPNN_HN=m_HideLayer;
	BPNN_IN=m_InputLayer;
	BPNN_GDZ=m_LearnNum;
	BPNN_ON=m_OutputLayer;
	BPNN_PN=m_SampleNum;
	if(mxxz)
	BPNN_SN=m_SampleLayer;
	else
    BPNN_SN=m_CeLiangcs;
	BPNN_SUM=m_pisample; 
	learnxl=m_learncd;
	YGXH=m_xuhao;
	CLQD=m_CeLiangqd;
	strcpy(strInputFileName,m_FileName);
	strcpy(strOutputFileName,m_OutputFileName);
	extern void 	Init();
	extern void 	Read();
	extern void 	Sample();
	extern void 	data();
//	extern void     CeLiangSample();
//	extern void     CeLiangdata();
	CDialog::OnOK();	
	Count =0;
	Init();
	Read();
//	if(mxxz)
	//{
		Sample();
		data();
//	}
   // else
	//{
   // CeLiangSample();
	//CeLiangdata();
	//}

}

void CDlgInit::OnSaveFile() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dl(FALSE);
	if(dl.DoModal()==IDOK)
	{
		m_OutputFileName=dl.GetPathName();
		UpdateData(FALSE);
	}	
}

⌨️ 快捷键说明

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