📄 modularnetdlg.cpp
字号:
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 + -