📄 main.cpp.~93~
字号:
}
DataSource1->DataSet = Tablesample;
dbgSamples->DataSource = DataSource1;
}
cbSubstanceChange(Sender);
/*
int i,J,K;
for (i = 5 ; i < dbgSamples->Columns->Count; i++)
{
dbgSamples->Columns->Items[i]->Visible =false;
// dbgSamples->Columns->Items[i]->Color
}
for (i =5 ; i < dbgSamples->Columns->Count; i++)
{
AnsiString felname;
Config.SubstNo = cbSubstance->ItemIndex;
felname = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
if (dbgSamples->Columns->Items[i]->FieldName == felname)
{
dbgSamples->Columns->Items[i]->Visible =true;
// dbgSamples->Columns->Items[i]->Color = clRed;
dbgSamples->Columns->Items[i]->Font->Color = clRed;
}
}
// dbgSamples->Columns->Items[i]->FieldName = Config.UseFieldName;
*/
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::MenuExitsClick(TObject *Sender)
{
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::cbSubstanceChange(TObject *Sender)
{
int i;
AnsiString felname1,felname2,felname3,felname4;
Config.SubstNo = cbSubstance->ItemIndex;
felname1 = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
felname2 = AnsiString(prefRegrField) + Config.SubstName[Config.SubstNo];
felname3 = AnsiString(prefUseField) + Config.SubstName[Config.SubstNo];
felname4 = AnsiString(prefLOOCVfield) + Config.SubstName[Config.SubstNo];
for (i = 5 ; i < dbgSamples->Columns->Count; i++)
{
dbgSamples->Columns->Items[i]->Visible =false;
}
for (i =5 ; i < dbgSamples->Columns->Count; i++)
{
if (dbgSamples->Columns->Items[i]->FieldName == felname3)
{
dbgSamples->Columns->Items[i]->Visible =true;
// dbgSamples->Columns->Items[i]->Color = clRed;
dbgSamples->Columns->Items[i]->Font->Color = clRed;
}
if (dbgSamples->Columns->Items[i]->FieldName == felname1)
{
dbgSamples->Columns->Items[i]->Visible =true;
// dbgSamples->Columns->Items[i]->Color = clRed;
dbgSamples->Columns->Items[i]->Font->Color = clGreen;
}
if (dbgSamples->Columns->Items[i]->FieldName == felname2)
{
dbgSamples->Columns->Items[i]->Visible =true;
// dbgSamples->Columns->Items[i]->Color = clRed;
dbgSamples->Columns->Items[i]->Font->Color = clBlue;
}
if (dbgSamples->Columns->Items[i]->FieldName == felname4)
{
dbgSamples->Columns->Items[i]->Visible =true;
// dbgSamples->Columns->Items[i]->Color = clRed;
dbgSamples->Columns->Items[i]->Font->Color = clTeal;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::Button1Click(TObject *Sender)
{
ListBox1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton2Click(TObject *Sender)
{
for (int i = ListBoxpeaks1->Items->Count-1;i >-1; i--)
{
ListBoxpeaks2->Items->Insert(0,ListBoxpeaks1->Items->Strings[i]);
ListBoxpeaks1->Items->Delete(i);
}
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton1Click(TObject *Sender)
{
for (int i = ListBoxpeaks1->Items->Count-1;i >=0; i--)
{
if(ListBoxpeaks1->Selected[i])
{
ListBoxpeaks2->Items->Insert(0,ListBoxpeaks1->Items->Strings[i]);
ListBoxpeaks1->Items->Delete(i);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton4Click(TObject *Sender)
{
for (int i = ListBoxpeaks2->Items->Count-1;i >-1; i--)
{
// if(ListBoxpeaks1->Selected[i])
ListBoxpeaks1->Items->Insert(0,ListBoxpeaks2->Items->Strings[i]);
ListBoxpeaks2->Items->Delete(i);
}
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton3Click(TObject *Sender)
{
for (int i = ListBoxpeaks2->Items->Count-1;i >=0; i--)
{
if(ListBoxpeaks2->Selected[i])
{
ListBoxpeaks1->Items->Insert(0,ListBoxpeaks2->Items->Strings[i]);
ListBoxpeaks2->Items->Delete(i);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::BitBtn1Click(TObject *Sender)
{
/* Tablesample->CancelRange();
Tablesample->SetRangeStart();
Tablesample->FieldByName("PointNr")->AsInteger = Editfirst->Text.ToInt();
Tablesample->SetRangeEnd();
Tablesample->FieldByName("PointNr")->AsInteger = Editlast->Text.ToInt();
Tablesample->ApplyRange();
*/
RecordFrom = Editfirst->Text.ToInt();
RecordTo = Editlast->Text.ToInt();
dbgSamples->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton5Click(TObject *Sender)
{
Tablesample->CancelRange();
Tablesample->SetRangeStart();
Tablesample->FieldByName("PointNr")->AsInteger = 0;
Tablesample->SetRangeEnd();
Tablesample->FieldByName("PointNr")->AsInteger = Editlast->Text.ToInt();
Tablesample->ApplyRange();
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::SpeedButton6Click(TObject *Sender)
{
Tablesample->CancelRange();
Tablesample->SetRangeStart();
Tablesample->FieldByName("PointNr")->AsInteger = Editfirst->Text.ToInt();
Tablesample->SetRangeEnd();
Tablesample->FieldByName("PointNr")->AsInteger = Tablesample->RecordCount;
Tablesample->ApplyRange();
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::Button2Click(TObject *Sender)
{
double fluorsum;
if (ListBoxpeaks2->Items->Count == 0)
return ;
int hengwei;
rownum = 0;
AnsiString yuming, fieldele;
Tablesample->First();
while (! Tablesample->Eof)
{
colnum = 0;
if ((Tablesample->FieldByName("PointNr")->AsInteger >= RecordFrom)&&
(Tablesample->FieldByName("PointNr")->AsInteger <= RecordTo))
{
yuming = AnsiString(prefUseField) + Config.SubstName[Config.SubstNo];
if((Tablesample->FieldByName(yuming)->AsString=="c")||(Tablesample->FieldByName(yuming)->AsString=="C"))
{
fluorsum = Tablesample->FieldByName("FluorSum")->AsFloat;
for (int i = 0; i< ListBoxpeaks2->Items->Count; i++)
{
fieldele = ListBoxpeaks2->Items->Strings[i];
hengwei = fieldele.Pos("-"); // change Ka-1 to Ka_1;
if (hengwei!=0)
{
fieldele.Delete(hengwei,1);
fieldele.Insert("_",hengwei);
}
data[rownum][i] = Tablesample->FieldByName(fieldele)->AsFloat;
data[rownum][i] = data[rownum][i] / fluorsum;
colnum ++;
}
yuming = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
data[rownum][colnum] = Tablesample->FieldByName(yuming)->AsFloat;
data[rownum][colnum] = data[rownum][colnum] / 100.0;
rownum ++;
}
}
colnum = ListBoxpeaks2->Items->Count;
inputNVNum = colnum;
Tablesample->Next();
}
for (int i = 0; i<= colnum; i++)
{
for (int j = 0; j< rownum; j++)
{
StringGridstatic->Cells[i][j] = AnsiString( data[j][i]);
}
}
StringGridstatic->Refresh();
for (int i = 0; i< rownum; i++)
{
for (int j = 0; j< colnum; j++)
{
testdata[i][j] = data[i][j];
}
}
// defining a net with 4 layers having 3,3,3, and 1 neuron respectively,
// the first layer is input layer i.e. simply holder for the input parameters
// and has to be the same size as the no of input parameters, in out example 3
// int numLayers = 4, lSz[4] = {3,3,2,1};
/*
double data[][4]={
0, 0, 0, 0,
0, 0, 0.5, 0.33333,
0, 1, 0, 0.33333,
0, 1, 1, 0.66667,
1, 0, 0, 0.33333,
1, 0, 1, 0.666667,
1, 1, 0, 0.666667,
1, 1, 1, 1 };
// prepare test data
double testdata[][3]={
0, 0, 0,
0, 0, 1,
0, 1, 0,
0, 1, 1,
1, 0, 0,
1, 0, 1,
1, 1, 0,
1, 1, 1}; */
// rownum = 31; colnum = 5;
// rownum = 8; colnum = 4;
// rownum = 8; colnum = 3;
int numLayers = 3, lSz[3] = {colnum,4,1};
// Learing rate - beta
// momentum - alpha
// Threshhold - thresh (value of target mse, training stops once it is achieved)
double beta = 0.8, alpha = 0.1, Thresh = 0.000000000001;
// maximum no of iterations during training
long num_iter = 80000000;
// Creating the net
CBackProp *bp = new CBackProp(numLayers, lSz, beta, alpha);
cout<< endl << "Now training the network...." << endl;
long i ;
for ( i=0; i<num_iter ; i++)
{
// bp->bpgt(data[i%8], &data[i%8][3]);
bp->bpgt(data[i%rownum], &data[i%rownum][colnum]);
if( bp->mse(&data[i%rownum][colnum]) < Thresh)
{
// cout << endl << "Network Trained. Threshold value achieved in " << i << " iterations." << endl;
// cout << "MSE: " << bp->mse(&data[i%rownum][colnum])
// << endl << endl;
ListBox1->Items->Add("MSE: " + AnsiString(bp->mse(&data[i%rownum][colnum])));
ListBox1->Refresh();
break;
}
if ( i%(num_iter/20000) == 0 )
{
ListBox1->Items->Add("MSE: " + AnsiString(bp->mse(&data[i%rownum][colnum])));
ListBox1->Refresh();
// cout<< endl << "MSE: " << bp->mse(&data[i%rownum][colnum])
// << "... Training..." << endl;
}
}
ListBox1->Items->Add( AnsiString(i));
// ListBox1->Items->Add( AnsiString(bp->mse(&data[i%rownum][colnum])));
ListBox1->Refresh();
if ( i == num_iter )
{
ListBox1->Items->Add(" iterations completed...");
ListBox1->Items->Add("MSE: " + AnsiString(bp->mse(&data[(i-1)%rownum][colnum])));
}
ShowMessage("MSE: " + AnsiString(bp->mse(&data[(i)%rownum][colnum])));
// cout << endl << i << " iterations completed..."
// << "MSE: " << bp->mse(&data[(i-1)%rownum][colnum]) << endl;
for ( i = 0 ; i <rownum ; i++ )
{
bp->ffwd(testdata[i]);
ListBox1->Items->Add(FloatToStr(bp->Out(0)));
}
// cout<< "Now using the trained network to make predctions on test data...." << endl << endl;
/* for ( i = 0 ; i < 8 ; i++ )
{
bp->ffwd(testData[i]);
cout << testData[i][0]<< " " << testData[i][1]<< " " << testData[i][2]<< " " << testData[i][3]<< " " << bp->Out(0) << endl;
}
return 0;
*/
}
//---------------------------------------------------------------------------
void __fastcall TformOXEA::dbgSamplesDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{
if ((Tablesample->FieldByName("PointNr")->AsInteger== RecordFrom)
||(Tablesample->FieldByName("PointNr")->AsInteger== RecordTo))
{
dbgSamples->Canvas->Font->Color = clRed;
dbgSamples->Canvas->FillRect(Rect);
dbgSamples->Canvas->TextOutA(Rect.Left,Rect.Top,Column->Field->Text);
}
if ((Tablesample->FieldByName("PointNr")->AsInteger < RecordFrom)
||(Tablesample->FieldByName("PointNr")->AsInteger > RecordTo))
// ||(Tablesample->FieldByName(Config.UseFieldName)->AsString==""))
{
dbgSamples->Canvas->Font->Color = clGray;
dbgSamples->Canvas->FillRect(Rect);
dbgSamples->Canvas->TextOutA(Rect.Left,Rect.Top,Column->Field->Text);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -