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

📄 modularnetdlg.cpp

📁 本源代码是本人亲自编写的关于模糊神经网络模型的实现
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				return;
			}
			if(m_studyrate<=0.0||m_studyrate>=1)
			{
				::MessageBox (this->m_hWnd, _T("请输入学习率!"), _T(":("), MB_OK);				
				return;
			}
			if(m_trainnetStr.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取训练数据存放的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			
			//加载数据
			BOOL loadbool;
			loadbool=m_matrixPattern.LoadDataSampleFile(m_trainnetStr);
			if(loadbool)
			{
				
				m_nPattern=m_matrixPattern.GetMatrixRowNumber();//行数
				m_xPattern=m_matrixPattern.GetMatrixColNumber();//列数		
				
				//数组初始化	
				m_matrixUapt.SetMatrixRowAndCol(m_nPattern,m_rulenum);
				m_matrixZvector.SetMatrixRowAndCol(m_rulenum,m_xPattern);
				m_matrixBquan.SetMatrixRowAndCol(m_xPattern,m_rulenum);
				m_Yp.SetMatrixRowAndCol(m_nPattern,1);
				DFCM();
				DEXPERT_NET();
				UpdateData(TRUE);
				MessageBox("训练完毕,请千万先保存结果!");
			}

			break;
		}
	case 1://仿真数据
		{
			if(m_rulenum<=0||m_rulenum>6)
			{
				::MessageBox (this->m_hWnd, _T("请输入规则数!(不超过6条)"), _T(":("), MB_OK);				
				return;
			}			
			if(m_trainnetStr.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取仿真数据存放的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			if(m_saveU.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取专家网络权值的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			if(m_saveZ.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取中心向量结果的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			
			//加载数据
			BOOL sbool=m_matrixPattern.LoadDataSampleFile(m_trainnetStr);
			if(sbool)
			{
				m_nPattern=m_matrixPattern.GetMatrixRowNumber();
				m_xPattern=m_matrixPattern.GetMatrixColNumber();
				m_Yp.SetMatrixRowAndCol(m_nPattern,1);
				//加载专家网络权值
				BOOL bbool=m_matrixBquan.LoadDataFromFile(m_saveU);
				if(bbool)
				{
				//加载中心向量数组
					BOOL zbool=m_matrixZvector.LoadDataFromFile(m_saveZ);
					if(zbool)
					{
						m_matrixUapt.SetMatrixRowAndCol(m_nPattern,m_rulenum);
						DGATING_NET();
			
						DPREDICT();
						UpdateData(FALSE);
						MessageBox("预测完毕,请千万先保存结果!");
					}
					else
					{MessageBox("z文件打开错误!");m_matrixZvector.InitializeZero();}
				}
				else
				{MessageBox("b文件打开错误!");m_matrixBquan.InitializeZero();}
			}
			else
			{MessageBox("s文件打开错误!");}
			break;
		}
	default:{break;}
	}
	
	
}

void CModularNetDlg::OnBtnsave() 
{
	UpdateData(TRUE);
	CString sstr;
	switch(m_trainradio)
	{
	case 0://
		{
			if(m_saveU.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取专家网络权值结果的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			if(m_saveZ.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取保存中心向量结果的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			if(m_saveSample.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取保存学习结果的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			BOOL savebool=m_matrixBquan.SaveDataToFile(m_saveU);
			if(savebool)
			{
				//去掉z数组的最后一列0值
				CMatrix m_matrixSubZvector(m_matrixZvector.GetMatrixRowNumber(),m_matrixZvector.GetMatrixColNumber()-1);
				
				m_matrixZvector.CopySubMatrix(m_matrixSubZvector,0,0);

				BOOL Zbool=m_matrixSubZvector.SaveDataToFile(m_saveZ);
				if(Zbool)
				{
					
					BOOL Sbool=m_matrixPattern.SaveDataToFile(m_saveSample);
					if(Sbool)
					{
						//*********存y*值
						char* filbuffer;
						filbuffer=new char[100];
						BOOL pathbool=GetCurrentDirectory(100,filbuffer);	
						if(pathbool)
						{
							strcat(filbuffer,"\\Train.txt");
							CString strfilename;
							strfilename.Format("%s",filbuffer);
							BOOL ybool=m_Yp.SaveDataToFile(strfilename);
							if(!ybool)
								MessageBox("保存失败!");
						}
						else AfxMessageBox("文件路径错误!");
						delete filbuffer;
						//*********************
						(CModularNetDlg *)GetDlgItem(IDC_EDITERROR)->EnableWindow(TRUE);
						Qresult=m_matrixPattern.GetMatrixQresult();
						
						err=m_matrixPattern.GetMatrixError();
						sstr.Format("Q= %f ,error= %f",Qresult,err);
						m_ctlerror.SetWindowText(sstr);

						UpdateData(TRUE);
						//释放内存
						m_matrixUapt.InitializeZero();
						m_matrixBquan.InitializeZero();
						m_matrixZvector.InitializeZero();
						
						MessageBox("结果保存完毕!");
					}
					else
					{MessageBox("保存样本失败!");m_matrixUapt.InitializeZero();}
				}
				else 
				{MessageBox("保存中心向量失败!");m_matrixZvector.InitializeZero();}

			}
			else 
			{MessageBox("保存权值失败!");
			m_matrixBquan.InitializeZero();}

			break;
		}
	case 1:
		{
			
			if(m_saveSample.IsEmpty())
			{
				::MessageBox (this->m_hWnd, _T("你还没选取保存预测结果的文件!"), _T(":("), MB_OK | MB_ICONINFORMATION);
				return;
			}
			
			BOOL pbool=m_matrixPattern.SaveDataToFile(m_saveSample);
			if(pbool)
			{
				//*************************y*
				char* filbuffer;
				filbuffer=new char[100];
				BOOL pathbool=GetCurrentDirectory(100,filbuffer);
				
				if(pathbool)
				{
					strcat(filbuffer,"\\Predict.txt");
					CString strfilename;
					strfilename.Format("%s",filbuffer);
					BOOL ybool=m_Yp.SaveDataToFile(strfilename);
					if(!ybool)
						MessageBox("保存失败!");
				}
				else AfxMessageBox("文件路径错误!");
				delete filbuffer;
				//****************************

				(CModularNetDlg *)GetDlgItem(IDC_EDITERROR)->EnableWindow(TRUE);
				Qresult=m_matrixPattern.GetMatrixQresult();
				err=m_matrixPattern.GetMatrixError();
				sstr.Format("Q= %f ,error= %f",Qresult,err);
				m_ctlerror.SetWindowText(sstr);
				UpdateData(TRUE);
				//释放内存
				m_matrixUapt.InitializeZero();
				m_matrixBquan.InitializeZero();
				m_matrixZvector.InitializeZero();
			
				MessageBox("结果保存完毕!");
			}
			else 
			{MessageBox("保存失败!");}
			break;
		}
	default:{break;}
	}
	
}

void CAboutDlg::OnHelpmodular() 
{
	DWORD		nBufferLength=256;
	TCHAR		lpBuffer[256];
	CString		m_strPath;

	GetCurrentDirectory(nBufferLength,lpBuffer);
	m_strPath = lpBuffer;
	m_strPath = m_strPath + '\\' + TEXT("Help.doc");
	HINSTANCE hHelpFile = ShellExecute (NULL,"open", m_strPath, NULL, NULL, SW_SHOWNORMAL);
	
	if((long)hHelpFile == ERROR_FILE_NOT_FOUND)
	{
		::MessageBox(this->m_hWnd, _T("帮助文件没有找到,你是不是把它给删了?"), _T("没找到"), MB_ICONEXCLAMATION | MB_OK );
		return ;
	}
}

void CAboutDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CDialog::OnOK ();	
	CDialog::OnLButtonDown(nFlags, point);
}

void CModularNetDlg::SelOpenFile(DWORD IDC,CString m_nOpenStr)
{
	static char BASED_CODE szFilter[] = TEXT("文本文件(*.txt)|*.txt|All Files (*.*)|*.*||");
	static char BASED_CODE lpszDefExt[] = TEXT("txt");

	//Create the dialog to select the train data file to load the data
	CFileDialog dlg(TRUE,
		            lpszDefExt,
					NULL,
					OFN_READONLY		| 
					OFN_FILEMUSTEXIST   |
					OFN_PATHMUSTEXIST,
					szFilter,
					this);

	if(dlg.DoModal () == IDOK)
	{
		m_nOpenStr = dlg.GetPathName ();
		
		HWND hWnd = ::GetDlgItem (this->m_hWnd,IDC);
		::SetWindowText (hWnd,m_nOpenStr);

	}
	else
	{
		return;
	}	
}
void CModularNetDlg::SelSaveFile(DWORD IDC,CString m_nSaveStr)
{
	static char BASED_CODE szFilter[] = TEXT("文本文件(*.txt)|*.txt|All Files (*.*)|*.*||");
	static char BASED_CODE lpszDefExt[] = TEXT("txt");

	//Create the dialog to select the demo data file to save the result
	CFileDialog dlg(FALSE,
		            lpszDefExt,
					NULL,
					OFN_HIDEREADONLY    | 
					OFN_CREATEPROMPT	|
					OFN_OVERWRITEPROMPT,
					szFilter,
					this);

	if(dlg.DoModal ()==IDOK)
	{
		m_nSaveStr = dlg.GetPathName ();//得到文件路径名
		
		HWND hWnd = ::GetDlgItem (this->m_hWnd, IDC);
		::SetWindowText (hWnd, m_nSaveStr);

	}
	else
	{
		return;
	}	
}
void CModularNetDlg::ClearAll()
{
	m_rulenum=0;
	m_studyrate=0.0f;
	m_error=0.0f;
	m_nITNUM=0;
	m_trainnetStr=_T("");
	m_saveU=_T("");
	m_saveZ=_T("");
	m_saveSample=_T("");
}
void CModularNetDlg::OnAboutus() 
{
  	CAboutDlg	dlg;
	if(dlg.DoModal () == IDOK)
		return;
}

⌨️ 快捷键说明

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