NNBPDlg.h
上传用户:guanx8y8
上传日期:2007-07-30
资源大小:326k
文件大小:10k
开发平台:

Visual C++

  1. // NNBPDlg.h : header file
  2. //
  3. #if !defined(AFX_NNBPDLG_H__C646FE1F_4498_483B_8CFF_EC573C349AEB__INCLUDED_)
  4. #define AFX_NNBPDLG_H__C646FE1F_4498_483B_8CFF_EC573C349AEB__INCLUDED_
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. //***************************************************************************
  9. // Add the required header files
  10. #include "Matrix.h"
  11. #include "BtnST.h"
  12. #include "StaticFader.h"
  13. //
  14. //***************************************************************************
  15. /////////////////////////////////////////////////////////////////////////////
  16. // Levenberg-Marquart ----> 第一次前向计算初始化    //
  17. /////////////////////////////////////////////////////////////////////////////
  18. __declspec (dllimport) void LMForwardCalculateInit( int nInputLayerNumber,
  19. int nHideLayerNumber,
  20. int nOutputLayerNumber,
  21. CMatrix &matrixDemoDataInput,
  22. CMatrix &matrixInputLayerValue,
  23. CMatrix &matrixInputToHideWeightValue,
  24. CMatrix &matrixHideLayerValveValue,
  25. CMatrix &matrixHideToOutputWeightValue,
  26. CMatrix &matrixOutputLayerValveValue
  27. );
  28. /////////////////////////////////////////////////////////////////////////////
  29. // Levenberg-Marquart ----> 前向计算    //
  30. /////////////////////////////////////////////////////////////////////////////
  31. __declspec(dllimport) void LMForwardCalculate ( int nInputLayerNumber,
  32. int nHideLayerNumber,
  33. int nOutputLayerNumber,
  34. bool bSimulateDataFlag,
  35. int nComboFunc,
  36. CMatrix &matrixDemoDataInput,
  37. CMatrix &matrixInputLayerValue,
  38. CMatrix &matrixInputToHideWeightValue,
  39. CMatrix &matrixHideLayerValveValue,
  40. CMatrix &matrixHideLayerOutput,
  41. CMatrix &matrixHideToOutputWeightValue,
  42. CMatrix &matrixOutputLayerOutput,
  43. CMatrix &matrixOutputLayerValveValue
  44.    );
  45. /////////////////////////////////////////////////////////////////////////////
  46. // Levenberg-Marquart ----> 反馈计算    //
  47. /////////////////////////////////////////////////////////////////////////////
  48. __declspec(dllimport) bool LMDemoDataTrainRepeat ( int nInputLayerNumber,
  49. int nHideLayerNumber,
  50. int nOutputLayerNumber,
  51. bool bSimulateDataFlag,
  52. int nComboFunc,
  53. double nSystemErrorOld,
  54. double nSystemErrorNew,
  55. double nSystemErrorLevel,
  56. double nSystemError,
  57. double nStep,
  58. UINT nMaxTrainTimes,
  59. UINT nTrainTimes,
  60. DWORD ID_SYSTEM_ERROR,
  61. DWORD ID_TRAIN_TIMES,
  62. HWND  hWnd,
  63. CMatrix &matrixDemoDataInput,
  64. CMatrix &matrixInputLayerValue,
  65. CMatrix &matrixInputToHideWeightValue,
  66. CMatrix &matrixHideLayerValveValue,
  67. CMatrix &matrixHideLayerOutput,
  68. CMatrix &matrixHideToOutputWeightValue,
  69. CMatrix &matrixOutputLayerOutput,
  70. CMatrix &matrixOutputLayerValveValue
  71.  );
  72. /////////////////////////////////////////////////////////////////////////////
  73. // Back propagation ----> 前向计算(Only for Training)    //
  74. /////////////////////////////////////////////////////////////////////////////
  75. __declspec(dllexport) void BPForwardCalculate ( int nInputLayerNumber,
  76. int nHideLayerNumber,
  77. int nOutputLayerNumber,
  78. bool bSimulateDataFlag,
  79. int nComboFunc,
  80. CMatrix &matrixDemoDataInput,
  81. CMatrix &matrixInputLayerValue,
  82. CMatrix &matrixInputToHideWeightValue,
  83. CMatrix &matrixHideLayerValveValue,
  84. CMatrix &matrixHideLayerOutput,
  85. CMatrix &matrixHideToOutputWeightValue,
  86. CMatrix &matrixOutputLayerOutput,
  87. CMatrix &matrixOutputLayerValveValue,
  88. CMatrix &cMatrixExHideLayerValveValue,
  89. CMatrix &cMatrixExOutputLayerValveValue
  90.    );
  91. /////////////////////////////////////////////////////////////////////////////
  92. // Back propagation ----> 前向计算(Only for Simulating)    //
  93. /////////////////////////////////////////////////////////////////////////////
  94. __declspec(dllimport) void BPForwardCalculate2( int nInputLayerNumber,
  95. int nHideLayerNumber,
  96. int nOutputLayerNumber,
  97. bool bSimulateDataFlag,
  98. int nComboFunc,
  99. CMatrix &matrixDemoDataInput,
  100. CMatrix &matrixInputLayerValue,
  101. CMatrix &matrixInputToHideWeightValue,
  102. CMatrix &matrixHideLayerValveValue,
  103. CMatrix &matrixHideLayerOutput,
  104. CMatrix &matrixHideToOutputWeightValue,
  105. CMatrix &matrixOutputLayerOutput,
  106. CMatrix &matrixOutputLayerValveValue
  107.    );
  108. /////////////////////////////////////////////////////////////////////////////
  109. // Back propagation ----> 反馈计算    //
  110. /////////////////////////////////////////////////////////////////////////////
  111. __declspec(dllimport) bool BPDemoDataTrainRepeat ( int nInputLayerNumber,
  112. int nHideLayerNumber,
  113. int nOutputLayerNumber,
  114. bool bSimulateDataFlag,
  115. int nComboFunc,
  116. double nSystemErrorOld,
  117. double nSystemErrorNew,
  118. double nSystemErrorLevel,
  119. double nSystemError,
  120. double nStep,
  121. UINT nMaxTrainTimes,
  122. UINT nTrainTimes,
  123. DWORD ID_SYSTEM_ERROR,
  124. DWORD ID_TRAIN_TIMES,
  125. HWND  hWnd,
  126. CMatrix &matrixDemoDataInput,
  127. CMatrix &matrixInputLayerValue,
  128. CMatrix &matrixInputToHideWeightValue,
  129. CMatrix &matrixHideLayerValveValue,
  130. CMatrix &matrixHideLayerOutput,
  131. CMatrix &matrixHideToOutputWeightValue,
  132. CMatrix &matrixOutputLayerOutput,
  133. CMatrix &matrixOutputLayerValveValue
  134.  );
  135. //***************************************************************************
  136. class CNNBPDlg;
  137. /////////////////////////////////////////////////////////////////////////////
  138. // 线程结构体
  139. struct STHREADDATA
  140. {
  141. CNNBPDlg *pDlg;
  142. };
  143. //***************************************************************************
  144. /////////////////////////////////////////////////////////////////////////////
  145. // CNNBPDlg dialog
  146. class CNNBPDlg : public CDialog
  147. {
  148. // Construction
  149. public:
  150. CNNBPDlg(CWnd* pParent = NULL); // standard constructor
  151. // Dialog Data
  152. //{{AFX_DATA(CNNBPDlg)
  153. enum { IDD = IDD_NNBP_DIALOG };
  154. CComboBox m_ctrlComboArithmetic;
  155. CComboBox m_ctrlComboFunc;
  156. CStaticFader m_staticTextTitle;
  157. CButtonST m_btnState;
  158. CButtonST m_btnSimuResultBrowser;
  159. CButtonST m_btnSimuNetworkFoldBrowser;
  160. CButtonST m_btnSimuDataInputBrowser;
  161. CButtonST m_btnDemoSaveResultBrowser;
  162. CButtonST m_btnDemoSaveNetworkBrowser;
  163. CButtonST m_btnDemoDataInputBrowser;
  164. CButtonST m_btnStopTrain;
  165. CButtonST m_btnExit;
  166. CButtonST m_btnAboutUs;
  167. CButtonST m_btnBeginTrain;
  168. CString m_strDemoDataInput;
  169. CString m_strDemoSaveResult;
  170. UINT m_nInputLayerNumber;
  171. UINT m_nHideLayerNumber;
  172. UINT m_nOutputLayerNumber;
  173. int m_nComboFunc;
  174. double m_nSystemError;
  175. UINT m_nTrainTimes;
  176. double m_nSystemErrorLevel;
  177. UINT m_nMaxTrainTimes;
  178. CString m_strDemoSaveNetwork;
  179. CString m_strSimuNetworkFold;
  180. CString m_strSimuDataInput;
  181. CString m_strSimuResult;
  182. int m_nComboArithmetic;
  183. double m_nStep;
  184. //}}AFX_DATA
  185. // ClassWizard generated virtual function overrides
  186. //{{AFX_VIRTUAL(CNNBPDlg)
  187. protected:
  188. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  189. //}}AFX_VIRTUAL
  190. // Implementation
  191. protected:
  192. HICON m_hIcon;
  193. // Generated message map functions
  194. //{{AFX_MSG(CNNBPDlg)
  195. virtual BOOL OnInitDialog();
  196. afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  197. afx_msg void OnPaint();
  198. afx_msg HCURSOR OnQueryDragIcon();
  199. afx_msg void OnExit();
  200. afx_msg void OnAboutus();
  201. afx_msg void OnTimer(UINT nIDEvent);
  202. afx_msg void OnDemoDataInputBrowser();
  203. afx_msg void OnDemoSaveNetworkBrowser();
  204. afx_msg void OnDemoSaveResultBrowser();
  205. afx_msg void OnSimuNetworkFoldBrowser();
  206. afx_msg void OnSimuDataInputBrowser();
  207. afx_msg void OnSimuResultBrowser();
  208. afx_msg void OnBeginTrain();
  209. afx_msg void OnState();
  210. afx_msg void OnStopTrain();
  211. //}}AFX_MSG
  212. DECLARE_MESSAGE_MAP()
  213. public:
  214. // 是否开始训练的标志
  215. bool m_bStartFlag;
  216. // 是样本训练还是数据仿真?
  217. bool m_bSimulateDataFlag;
  218. // 数据仿真
  219. bool SimulateData();
  220. // 样本训练
  221. bool TrainingDemo();
  222. private:
  223. // 向文件中写入常量字符串
  224. bool SaveConstantStringToFile(CString& strFileName,CString& strConstantData);
  225. // 前向计算初始化
  226. void ForwardCalculateInit();
  227. // 反复训练
  228. bool DemoDataTrainRepeat();
  229. // 用于存储输入的样本数据的矩阵
  230. CMatrix m_matrixDemoDataInput;
  231. // 样本的输入层的数值矩阵
  232. CMatrix m_matrixInputLayerValue;
  233. // 输入层到隐含层的权值矩阵
  234. CMatrix m_matrixInputToHideWeightValue;
  235. // 隐含层的阀值矩阵
  236. CMatrix m_matrixHideLayerValveValue;
  237. // 隐含层到输出层的权值矩阵
  238. CMatrix m_matrixHideToOutputWeightValue;
  239. // 输出层的阀值矩阵
  240. CMatrix m_matrixOutputLayerValveValue;
  241. // 隐含层的输出值的矩阵
  242. CMatrix m_matrixHideLayerOutput;
  243. // 输出层的输出值的矩阵
  244. CMatrix m_matrixOutputLayerOutput;
  245. // 用来仿真时输入的网络参数矩阵
  246. CMatrix m_matrixSimuNetwork;
  247. // 用来存放仿真数据结果的矩阵
  248. CMatrix m_matrixSimuResult;
  249. // 创建新的线程的线程句柄
  250. HANDLE m_hThread;
  251. // 系统误差
  252. double m_SystemErrorNew;
  253. double m_SystemErrorOld;
  254. };
  255. //{{AFX_INSERT_LOCATION}}
  256. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  257. #endif // !defined(AFX_NNBPDLG_H__C646FE1F_4498_483B_8CFF_EC573C349AEB__INCLUDED_)