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

📄 main.cpp.~84~

📁 神经网络用于X荧光分析的源码。输入元素峰的强度
💻 ~84~
📖 第 1 页 / 共 2 页
字号:
		  {
		  Tablesample->Open();
		  }
		 catch(...)
		 {
		 Tablesample->Close();
		 }
		}
	 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)
{



  //Tablesample->

 // dbgSamples->Columns[0].Items[1]->Font->Color=clGreen;
  // dbgSamples->Columns[0].Items[1]->Font->Color=clGreen;
//  dbgSamples->Refresh();
//  dbgSamples->Canvas->te
}
//---------------------------------------------------------------------------


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;
	// prepare XOR traing data
		 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< colnum; i++)
			{
			  for (int j = 0; j< rownum; 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]={
				8.58,	0.21,	1.02,	5.67,
				5.36,	0.13,	0.72,	6.06,
				7.92,	0.21,	1.25,	6.61,
				10.03,	0.26,	0.92,	5.35,
				10.25,	0.31,	1.29,	6.39,
				8.17,	0.25,	1.25,	6.4,
				16.26,	0.36,	1.10,	5.07,
				12.45,	0.48,	1.1,	5.9 };
		  rownum = 8;  colnum = 3;
		   */

		int numLayers = 3, lSz[3] = {colnum,6,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.000002;


	// maximum no of iterations during training
	long num_iter = 8000000;


	// 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;
			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-2)%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 + -