📄 main.cpp.~90~
字号:
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)
{
/*
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"))
{
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;
colnum ++;
}
yuming = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
data[rownum][colnum] = Tablesample->FieldByName(yuming)->AsFloat;
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[][6]={
0.119371718, 0.297931416, 9.035357298, 1.268460226, 12.61824644, 0.975,
0.185797456, 0.368635899, 11.44986608, 1.605912703, 16.23042634, 0.982,
0.069043598, 0.171071955, 5.300997181, 0.761496323, 8.194970811, 0.983,
0.095603806, 0.234866273, 7.578996753, 1.061416609, 10.87856038, 0.980,
0.120905264, 0.294447257, 9.155083734, 1.289108776, 12.62410848, 0.979,
0.42344231, 0.671186483, 19.97493273, 2.80735019, 27.09465429, 0.90,
0.115226539, 0.233120304, 8.0049518, 1.115503004, 11.39990387, 0.9803,
0.145759192, 0.324778296, 10.31971666, 1.437185049, 14.06406297, 0.934,
0.076319026, 0.208866373, 6.572237443, 0.918226418, 9.400992546, 0.983,
0.040710074, 0.0994579, 3.250108668, 0.451815286, 5.603260199, 0.913,
0.050679508, 0.13849969, 4.712211724, 0.66822158, 7.092004827, 0.883,
0.179188166, 0.348982229, 10.53744384, 1.504478509, 14.59858753, 0.783,
0.045852689, 0.086637028, 2.79328643, 0.392453526, 5.080387793, 0.9483,
0.140095517, 0.281948618, 8.471700738, 1.186813418, 11.75561251, 0.8983,
0.166141911, 0.317453662, 9.924077748, 1.40282835, 13.86988695, 0.583,
0.033597776, 0.067790029, 2.297198523, 0.32152899, 4.458174865, 0.383,
0.080993941, 0.157967585, 5.274628203, 0.739571975, 7.883997996, 0.583,
0.117286592, 0.20726331, 6.698438094, 0.941289729, 9.988561279, 0.483,
0.041574322, 0.073833233, 2.275637721, 0.329627501, 4.384071808, 0.2983,
0.076776581, 0.190721368, 6.172606948, 0.883164295, 8.785990153, 0.1983,
0.095438238, 0.226024891, 7.015687035, 0.98112894, 9.83510352, 0.983,
0.063168004, 0.163810245, 4.999574322, 0.70637718, 7.855679688, 0.983,
0.078459485, 0.18929381, 6.09092476, 0.861196877, 9.02957856, 0.983,
0.10943388, 0.227959347, 7.40101179, 1.038675329, 10.50612765, 0.983,
0.082048231, 0.186632279, 6.326824929, 0.894398365, 9.047896908, 0.9836,
0.071153477, 0.15304034, 5.237521572, 0.748365751, 7.611946198, 0.6983,
0.103014792, 0.198867771, 7.051374976, 0.994574332, 9.997865804, 0.983,
0.089249456, 0.233805, 7.500053042, 1.05129553, 10.42657281, 0.9083,
0.070917134, 0.178620739, 5.66204199, 0.793328942, 8.660057743, 0.8983,
0.128861897, 0.295285313, 9.24161036, 1.306492552, 13.02624183, 0.7983
};
// prepare test data
double testdata[][5]={
0.119371718, 0.297931416, 9.035357298, 1.268460226, 12.61824644,
0.185797456, 0.368635899, 11.44986608, 1.605912703, 16.23042634,
0.069043598, 0.171071955, 5.300997181, 0.761496323, 8.194970811,
0.095603806, 0.234866273, 7.578996753, 1.061416609, 10.87856038,
0.120905264, 0.294447257, 9.155083734, 1.289108776, 12.62410848,
0.073238718, 0.183949027, 5.641759295, 0.79974028, 8.642361027,
0.42344231, 0.671186483, 19.97493273, 2.80735019, 27.09465429,
0.115226539, 0.233120304, 8.0049518, 1.115503004, 11.39990387,
0.145759192, 0.324778296, 10.31971666, 1.437185049, 14.06406297,
0.076319026, 0.208866373, 6.572237443, 0.918226418, 9.400992546,
0.040710074, 0.0994579, 3.250108668, 0.451815286, 5.603260199,
0.050679508, 0.13849969, 4.712211724, 0.66822158, 7.092004827,
0.179188166, 0.348982229, 10.53744384, 1.504478509, 14.59858753,
0.045852689, 0.086637028, 2.79328643, 0.392453526, 5.080387793,
0.140095517, 0.281948618, 8.471700738, 1.186813418, 11.75561251,
0.166141911, 0.317453662, 9.924077748, 1.40282835, 13.86988695,
0.033597776, 0.067790029, 2.297198523, 0.32152899, 4.458174865,
0.080993941, 0.157967585, 5.274628203, 0.739571975, 7.883997996,
0.117286592, 0.20726331, 6.698438094, 0.941289729, 9.988561279,
0.041574322, 0.073833233, 2.275637721, 0.329627501, 4.384071808,
0.076776581, 0.190721368, 6.172606948, 0.883164295, 8.785990153,
0.095438238, 0.226024891, 7.015687035, 0.98112894, 9.83510352,
0.063168004, 0.163810245, 4.999574322, 0.70637718, 7.855679688,
0.078459485, 0.18929381, 6.09092476, 0.861196877, 9.02957856,
0.10943388, 0.227959347, 7.40101179, 1.038675329, 10.50612765,
0.082048231, 0.186632279, 6.326824929, 0.894398365, 9.047896908,
0.071153477, 0.15304034, 5.237521572, 0.748365751, 7.611946198,
0.103014792, 0.198867771, 7.051374976, 0.994574332, 9.997865804,
0.089249456, 0.233805, 7.500053042, 1.05129553, 10.42657281,
0.070917134, 0.178620739, 5.66204199, 0.793328942, 8.660057743,
0.128861897, 0.295285313, 9.24161036, 1.306492552, 13.02624183
};
/*
double data[][4]={
0, 0, 0, 0,
0, 0, 1, 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 = 4, lSz[4] = {colnum,3,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 + -