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

📄 waterstatus.cs

📁 数据挖掘的一个源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
			for(i=0;i<WATERPOLNUM;i++)//找出对该方面的污染贡献最大的污染物
			{
				if(tmpmax<=WaterPolWeight[i])
				{
					tmpmax=WaterPolWeight[i];
					maxindex=i;
				}
			}

			switch(maxindex)
			{
				case 0:WaterMainPol="化学需氧量 ";break;
				case 1:WaterMainPol="氟化物 ";break;
				case 2:WaterMainPol="氰化物 ";break;
				case 3:WaterMainPol="总汞 ";break;
				case 4:WaterMainPol="总砷 ";break;
				case 5:WaterMainPol="总铅 ";break;
				case 6:WaterMainPol="总镉 ";break;
				case 7:WaterMainPol="六价铬 ";break;
				case 8:WaterMainPol="石油类 ";break;
			}
               
			for(i=0;i<WATERPOLNUM;i++)//找出对该方面的污染贡献最大的污染物
			{
				if(i!=maxindex)
				{
					if( (WaterPolWeight[maxindex]-WaterPolWeight[i])<=0.0001 )
					{
						switch(i)
						{
							case 0:WaterMainPol=WaterMainPol+"化学需氧量 ";break;
							case 1:WaterMainPol=WaterMainPol+"氟化物 ";break;
							case 2:WaterMainPol=WaterMainPol+"氰化物 ";break;
							case 3:WaterMainPol=WaterMainPol+"总汞 ";break;
							case 4:WaterMainPol=WaterMainPol+"总砷 ";break;
							case 5:WaterMainPol=WaterMainPol+"总铅 ";break;
							case 6:WaterMainPol=WaterMainPol+"总镉 ";break;
							case 7:WaterMainPol=WaterMainPol+"六价铬 ";break;
							case 8:WaterMainPol=WaterMainPol+"石油类 ";break;
						}
					}
				}
			}

		}

		private void GetSingleResult()//计算大气,地表水,海水,噪声这四个方面每方面的污染情况评估结果
		{//WATERPOLNUM:该方面(大气,地表水,海水,噪声)的污染物种类的数目 WaterPolWeight:该方面的各种污染物的归一化权值
			//RMatrixWater:该方面的各种污染物关于五个污染等级的隶属度 BWater:该方面的污染情况评价结果
			//WaterPolGrade:污染的级别(第一级 清洁,第二级 尚清洁,第三级 轻污染,第四级 中污染,第五级 重污染)
   
			int i,j,maxindex;bool morethanone;
			double [] temp;
			double tmpmax,sum;
			temp=new double [MAXPOLNUM];

			sum=0.0;
			for(j=0;j<POLGRADENUM;j++)//计算         B          =           A           。       R
			{                         //    污染情况的评价结果  污染物的归一化权值矩阵 污染物的隶属度矩阵
				for(i=0;i<WATERPOLNUM;i++)//计算方法:采用 n算子 和 v算子 进行复合运算
				{//求出两个数当中的较小者,即,两个数进行"n"模糊运算 AnB=min(A,B)
					temp[i]=WaterPolWeight[i]<RMatrixWater[i,j]?WaterPolWeight[i]:RMatrixWater[i,j];
				}
				tmpmax=temp[0];
				for(i=0;i<WATERPOLNUM;i++)
				{//求出几个数当中的较大者,即,几个数进行"v"模糊运算 AvBvCv...vG=max(A,B,C,...,G)
					if(tmpmax<=temp[i])tmpmax=temp[i];
				}
				BWater[j]=tmpmax;
				sum=sum+tmpmax;
			}

			if(sum==0.0){ WaterPolGrade="第一级--清洁";return;}

			for(j=0;j<POLGRADENUM;j++)BWater[j]=BWater[j]/sum;//归一化
			tmpmax=BWater[0];maxindex=0;
			for(j=0;j<POLGRADENUM;j++)//求出 B污染情况的评价结果 的5个分量中的最大值
			{
				if(tmpmax<=BWater[j])
				{
					tmpmax=BWater[j];
					maxindex=j;
				}
			}

			morethanone=false;
			for(j=0;j<POLGRADENUM;j++)//检查 B污染情况的评价结果 的其它分量中是否有哪个分量 与 B污染情况的评价结果 的 最大分量 特别接近
			{
				if(j!=maxindex)
				{
					if( (tmpmax-BWater[j])<=0.0001 )morethanone=true;
				}
			}
			if(morethanone==true)//B污染情况的评价结果 的其它分量中有某个分量 与 B污染情况的评价结果 的 最大分量 特别接近 就要重新计算 B污染情况的评价结果
			{
				sum=0.0;
				for(j=0;j<POLGRADENUM;j++)//计算         B          =           A           。       R
				{                        //    污染情况的评价结果  污染物的归一化权值矩阵 污染物的隶属度矩阵
					for(i=0;i<WATERPOLNUM;i++)//计算方法:采用 .算子 和 v算子 进行运算
					{//求出两个数的点积
						temp[i]=WaterPolWeight[i]*RMatrixWater[i,j];
					}
					tmpmax=temp[0];
					for(i=0;i<WATERPOLNUM;i++)
					{//求出几个数当中的较大者,即,几个数进行"v"模糊运算 AvBvCv...vG=max(A,B,C,...,G)
						if(tmpmax<=temp[i])tmpmax=temp[i];
					}
					BWater[j]=tmpmax;
					sum=sum+tmpmax;
				}

				if(sum==0.0){ WaterPolGrade="第一级--清洁";return;}

				for(j=0;j<POLGRADENUM;j++)BWater[j]=BWater[j]/sum;//归一化
				tmpmax=BWater[0];maxindex=0;
				for(j=0;j<POLGRADENUM;j++)//求出 B污染情况的评价结果 的5个分量中的最大值
				{
					if(tmpmax<=BWater[j])
					{
						tmpmax=BWater[j];
						maxindex=j;
					}
				}
			}

			switch(maxindex)
			{
				case 0 : WaterPolGrade="第一级--清洁";break;
				case 1 : WaterPolGrade="第二级--尚清洁";break;
				case 2 : WaterPolGrade="第三级--轻污染";break;
				case 3 : WaterPolGrade="第四级--中污染";break;
				case 4 : WaterPolGrade="第五级--重污染";break;
			}

		}

		private void GetWaterStatus()
		{
			int i,j;
			GetRelative();
			GetWeight();
			GetSingleResult();
			
			/*Console.Write("R地表水:\n");
			for(i=0;i<WATERPOLNUM;i++)
			{
				for(j=0;j<POLGRADENUM;j++)Console.Write(RMatrixWater[i,j]+"	");
				Console.Write("\n");
			}
			Console.Write("\nA地表水=(");
			for(i=0;i<WATERPOLNUM;i++)Console.Write(WaterPolWeight[i]+"	");
			Console.Write(")\n");
			Console.Write("\nB地表水=(");
			for(i=0;i<POLGRADENUM;i++)Console.Write(BWater[i]+"	");
			Console.Write(")\n");
			Console.Write("\n地表水的污染等级:"+WaterPolGrade+"\n");
			Console.Write("对地表水污染贡献最大的污染物:"+WaterMainPol+"\n");*/
			//Console.ReadLine();
		}

		private void SaveResult(int MyIndex,OleDbConnection Myconnection)
		{
			string sql;
			sql="insert into waterpolresult values('"+PlaceID[MyIndex]+"','" + WaterPolGrade+"','"+WaterMainPol+"','"+WaterPol+"');";
			OleDbCommand command = new OleDbCommand(sql,Myconnection);
			command.ExecuteNonQuery();
		}

		public void GetPolStatus()
		{
			int i,j;string connectstring,sql;OleDbConnection connection;
			InitializePara();

			connectstring=@"Data Source=d:\environment.mdb;"+"Provider=Microsoft.Jet.OLEDB.4.0;";
			connection=new OleDbConnection(connectstring);

			try 
			{ 
				connection.Open(); 
				sql="delete * from waterpolresult";
				OleDbCommand command = new OleDbCommand(sql,connection);
				command.ExecuteNonQuery();
				for(i=0;i<RECORDNUM;i++)
				{
					for(j=0;j<WATERPOLNUM;j++)WaterPolValue[j]=WaterRecord[i,j];
					GetWaterStatus();
					SaveResult(i,connection);
				}
				connection.Close();	
			} 
			catch(OleDbException e) 
			{ 
				Console.WriteLine("An error occured!"); 
				Console.WriteLine("Your error message is"+e.Message);
				Console.ReadLine(); 
			} 
			catch(SystemException e) 
			{ 
				Console.WriteLine("An error occured!"); 
				Console.WriteLine("Your error message is"+e.Message);
				Console.ReadLine(); 
			} 
			catch(Exception e) 
			{ 
				Console.WriteLine("An error occured!"); 
				Console.WriteLine("Your error message is"+e.Message);
				Console.ReadLine(); 
			} 

		}

		public static void Main()
		{
			WaterStatus waterstatus=new WaterStatus();
			waterstatus.GetPolStatus();
		}

	}
	
}

⌨️ 快捷键说明

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