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

📄 复件 formmain.cs

📁 用C#开发的录井油气识别专家系统
💻 CS
📖 第 1 页 / 共 3 页
字号:
			GAThread.Start();
		
		}

		private void menuGASuspend_Click(object sender, System.EventArgs e)
		{
			GAThread.Suspend();
		
		}

		private void menuGAResume_Click(object sender, System.EventArgs e)
		{
			GAThread.Resume();
		
		}

		private void menuAbortCurrentSample_Click(object sender, System.EventArgs e)
		{
			menuAbortCurrentSample.Checked^=true;
		
		}

		private void menuAbortAllSamples_Click(object sender, System.EventArgs e)
		{
			menuAbortAllSamples.Checked^=true;
		
		}

		
		private void menuGAAbort_Click(object sender, System.EventArgs e)
		{
			GAThread.Abort();
		
		}

		void ShowTable(DataTable table)
		{
			TabPage page=null;
			TabControl control=null;
			myGridCtrl grid=null;
			
			if(table ==ExamTable)
				grid=examdg;

			else if(table==ParamTable || table==SampleTable)
				grid=cridg;
			else if(table==ResultTable)
				 grid=resultdg;
		
			page=grid.Parent as TabPage;
			control=page.Parent as TabControl;
			control.SelectedTab=page;
			grid.DataMember=table.TableName;
		
			return;
			

		}
		
		#region attributes for convenience
		public DataTable ExamTable
		{
			get
			{
				return examdg.ExamTable;
			}
			set
			{
				examdg.ExamTable=value;
			}
		}

		public DataTable ParamTable
		{
			get
			{
				return cridg.ParamTable;
			}
			set
			{
				cridg.ParamTable=value;
			}
		}

		public DataTable SampleTable
		{
			get
			{
				return cridg.SampleTable;
			}
			set
			{
				cridg.SampleTable=value;
			}
		}


		public DataTable ResultTable
		{
			get
			{
				return resultdg.ResultTable;
			}
			set
			{
				resultdg.ResultTable=value;
			}
		}


		public myExamDataSet ExamSet
		{
			get
			{
				return examdg.ExamSet;
			}
			set
			{
				examdg.ExamSet=value;
			}
		}

		public myCriDataSet CriSet
		{
			get
			{
				return cridg.CriSet;
			}
			set
			{
				cridg.CriSet=value;
			}
		}

		
		public myResultDataSet ResultSet
		{
			get
			{
				return resultdg.ResultSet;
			}
			set
			{
				resultdg.ResultSet=null;
			}
		}



		public DataViewSetting ResultView
		{
			get
			{				
				return resultdg.ResultView;		
			}
			
		}

		public myTemplateDataSet TemplateSet
		{
			get
			{
				return templatedg.TemplateSet;
			}
			set
			{
				templatedg.TemplateSet=null;
			}
		}



		public DataViewSetting TemplateView
		{
			get
			{				
				return templatedg.TemplateView;		
			}
			
		}



		public DataViewSetting ExamView
		{
			get
			{				
				return examdg.ExamView;		
			}
			
		}

		public DataViewSetting ParamView
		{
			get
			{				
				return cridg.ParamView;
			}
			
		}

		public DataViewSetting SampleView
		{
			get
			{				
				return cridg.SampleView;
			}
			
		}
#endregion 

		
		unsafe private void  outputInfo(byte* s,int l)
		{
			string s2output="";
			for(int i=0;i<l;i++)
				s2output+=(char)s[i];
			output.Text+=s2output+"\r\n";
			

		}

		unsafe private bool Match( DataRow rawData,DataRow template,DataRow Templatemin,DataRow Templatemax,int bitstoignore)
		{
			bool ma;
		
			fixed(byte *s=new byte[16]) {
                
				foreach(DataColumn col in template.Table.Columns)
				{
					try
					{
						  if(rawData.Table.Columns[col.ColumnName]==null)
							continue;
						if(!myDataset.IsTemplateGene(col))
							continue;
						if(!myDataset.IsCriField(rawData.Table.Columns[col.ColumnName]))
							continue;
						
					
						if(rawData[col.ColumnName]==null)
							continue;
						if(template[col].GetType()==typeof(DBNull))
							continue;
						if(rawData[col.ColumnName].GetType()==typeof(DBNull))
							continue;


						float d=Convert.ToSingle(rawData[col.ColumnName]);
						string strTemplate=template[col].ToString();
						float min=Convert.ToSingle(Templatemin[col.ColumnName]);
						float max=Convert.ToSingle(Templatemax[col.ColumnName]);
						ma=MatchField(d,min,max,strTemplate,bitstoignore);
						if(!ma)
							return false;
					
					}
					catch(Exception e)
					{
						throw e;
					}


				}//end foreach


			}//end fixed
									
			return true;
		}


		unsafe private bool MatchField(float datafield,float min,float max,string templatefield,int bitstoignore)
		{
			
			bool ma=true;
			int length=templatefield.Length;
			

		
			fixed(byte *s=new byte[length]) 
			{            
			
						
				SimpleGA.Encoder.dobin(datafield,s,Convert.ToUInt16(length),min,max);
						
				for(int i=0;i<templatefield.Length-bitstoignore;i++)
				{
					char c=templatefield[i];
					char b=Convert.ToChar(s[i]);
						
					if(c!=b && c!='#' && b!='#')
						ma=false;
					if(!ma)
						return false;
					
				}//end for
			
				

				

			}//end fixed
									
			return true;
		}

	

		private void templatereasonsetting_Click(object sender, System.EventArgs e)
		{
			
			

			if(dlgTemplateReasonSetting.ShowDialog()==DialogResult.OK)
			{
			}
			
		}
		private void templateReason_Click(object sender, System.EventArgs e)
		{
			

			
			
			int idData;
			
			bool suc;
			DataGridCell myDataGridCell = examdg.CurrentCell;
			BindingManagerBase bm = BindingContext[examdg.DataSource, examdg.DataMember];
			for(int i=0;i<bm.Count;i++)
			{
				if(!examdg.IsSelected(i))
					continue;

				examdg.CurrentCell = new DataGridCell(i,1);
				DataRowView drv = (DataRowView) bm.Current;
				idData=Convert.ToInt16(drv["序号"]);
				output.Text+="对样品 "+ Convert.ToString(idData)+" 进行判断:\r\n";
				output.Update();
				

				suc=TemplateReason(idData);
				if(!suc)
				{
					output.Text+="\t模板库不能对此样品做出判断!\r\n";
					output.Update();
				}
			}
		}//end function


		private bool  TemplateReason(int idData)
		{
            
			
			bool ma=false;
			
			for(int i=0;i<=Convert.ToInt16(dlgTemplateReasonSetting.bittoignore.Text);i++)
			{
				output.Text+="\t忽略参数基因后"+Convert.ToString(i)+"位进行推理......\r\n";
				output.Update();
				ma=TemplateReason(idData,i);
				if(ma)
					return true;

			}//end for

			return false;
		}

		private void FormMain_Resize(object sender, System.EventArgs e)
		{
			if(splitter1.SplitPosition>this.Width)
				splitter1.SplitPosition=this.Width*4/5;
		}

		private bool  TemplateReason(int idData,int bitstoignore)
		{
			bool ma;
			int idTemp;
			foreach(DataRow dr in TemplateSet.TemplateTable.Rows)
			{
				idTemp=Convert.ToInt16(dr["序号"]);

				ma=TemplateReason(idTemp,idData,bitstoignore);
			
				if(ma)
				{

					output.Text+="\t"+Convert.ToString(idTemp)+"\t 匹配成功"
						+ "\t结论为:"+Convert.ToString(dr["结论"])+"\r\n";
					return true;
				}
			}//end foreach

			return false;
		}//end function

		private bool TemplateReason(int idTemp,int idData,int bitstoignore)
		{

			
			string filterTemp="序号="+idTemp;
			string filterData="序号="+idData;
			DataRow[] drTemplate=TemplateSet.TemplateTable.Select(filterTemp);
			DataRow[] drTemplateMax=TemplateSet.TemplateMaxTable.Select(filterTemp);
			DataRow[] drTemplateMin=TemplateSet.TemplateMinTable.Select(filterTemp);
			DataRow[] drData=ExamTable.Select(filterData);
			if(drTemplate.Length<=0)
				return false;
			if(drData.Length<=0)
				return false;
			if(drTemplateMin.Length<=0)
				return false;
			if(drTemplateMax.Length<=0)
				return false;
			
			
			bool b=Match(drData[0],drTemplate[0],drTemplateMin[0],drTemplateMax[0],bitstoignore);
			
			return b;
		}//enf fuction


	}//end class FormMain

	
}//end namespace

⌨️ 快捷键说明

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