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

📄 fuzzylogic.cs

📁 包括Pheromones Algorythm、Memory Algorythm和Hill Climbing Algorythm I
💻 CS
📖 第 1 页 / 共 2 页
字号:
		private double dSetTwoMinNumber;
		private double dSetTwoMaxNumber;

		public FuzzySetParameters()
		{
			dSetOneMinMinimum = 0;
			dSetOneMaxMinimum = 0;
			dSetOneMinMembership = 0; 
			dSetOneMaxMembership = 0;
			dSetOneMinMaximum = 0;
			dSetOneMaxMaximum = 0;
			dSetOneMinNumber = 0;
			dSetOneMaxNumber = 0;
			dSetTwoMinMinimum = 0;
			dSetTwoMaxMinimum = 0;
			dSetTwoMinMembership = 0;
			dSetTwoMaxMembership = 0;
			dSetTwoMinMaximum = 0;
			dSetTwoMaxMaximum = 0;
			dSetTwoMinNumber = 0;
			dSetTwoMaxNumber = 0;
		}


		public double SetOneMinMinimum
		{
			get
			{
				return dSetOneMinMinimum;
			}
			set
			{
				dSetOneMinMinimum = value;
			}
		}

		public double SetOneMaxMinimum
		{
			get
			{
				return dSetOneMaxMinimum;
			}
			set
			{
				dSetOneMaxMinimum = value;
			}
		}

		public double SetOneMinMembership
		{
			get
			{
				return dSetOneMinMembership;
			}
			set
			{
				dSetOneMinMembership = value;
			}
		}

		public double SetOneMaxMembership
		{
			get
			{
				return dSetOneMaxMembership;
			}
			set
			{
				dSetOneMaxMembership = value;
			}
		}

		public double SetOneMinMaximum
		{
			get
			{
				return dSetOneMinMaximum;
			}
			set
			{
				dSetOneMinMaximum = value;
			}
		}

		public double SetOneMaxMaximum
		{
			get
			{
				return dSetOneMaxMaximum;
			}
			set
			{
				dSetOneMaxMaximum = value;
			}
		}

		public double SetOneMinNumber 
		{
			get
			{
				return dSetOneMinNumber;
			}
			set
			{
				dSetOneMinNumber = value;
			}
		}

		public double SetOneMaxNumber
		{
			get
			{
				return dSetOneMaxNumber;
			}
			set
			{
				dSetOneMaxNumber = value;
			}
		}

		public double SetTwoMinMinimum
		{
			get
			{
				return dSetTwoMinMinimum;
			}
			set
			{
				dSetTwoMinMinimum = value;
			}
		}

		public double SetTwoMaxMinimum
		{
			get
			{
				return dSetTwoMaxMinimum;
			}
			set
			{
				dSetTwoMaxMinimum = value;
			}
		}

		public double SetTwoMinMembership
		{
			get
			{
				return dSetTwoMinMembership;
			}
			set
			{
				dSetTwoMinMembership = value;
			}
		}

		public double SetTwoMaxMembership
		{
			get
			{
				return dSetTwoMaxMembership;
			}
			set
			{
				dSetTwoMaxMembership = value;
			}
		}

		public double SetTwoMinMaximum
		{
			get
			{
				return dSetTwoMinMaximum;
			}
			set
			{
				dSetTwoMinMaximum = value;
			}
		}

		public double SetTwoMaxMaximum
		{
			get
			{
				return dSetTwoMaxMaximum;
			}
			set
			{
				dSetTwoMaxMaximum = value;
			}
		}

		public double SetTwoMinNumber 
		{
			get
			{
				return dSetTwoMinNumber;
			}
			set
			{
				dSetTwoMinNumber = value;
			}
		}

		public double SetTwoMaxNumber
		{
			get
			{
				return dSetTwoMaxNumber;
			}
			set
			{
				dSetTwoMaxNumber = value;
			}
		}



	}

	/// <summary>
	/// The Fuzzy Set class holds the basic Fuzzy Set stuff
	/// </summary>
	abstract public class FuzzySet
	{
		private ArrayList arrayFuzzy;

		private string strName;

		public string Name
		{
			get
			{
				return strName;
			}
			set
			{
				strName = value;
			}
		}

		/// <summary>
		/// basic constructor
		/// </summary>
		public FuzzySet()
		{
			arrayFuzzy = new ArrayList();
		}


		/// <summary>
		/// allow direct access to the ArrayList
		/// </summary>
		public ArrayList FuzzyArray
		{
			get
			{
				return arrayFuzzy;
			}
		}

		public int Count
		{
			get
			{
				return arrayFuzzy.Count;
			}
		}

		/// <summary>
		/// is there a fuzzy number that has the membership value of 1
		/// </summary>
		/// <returns></returns>
		public bool IsCompleteMembership()
		{
			for( int i=0; i<arrayFuzzy.Count; i++ )
			{
				if( ( ( FuzzyBasic )arrayFuzzy[ i ] ).Membership == 1.0 )
					return true;
			}

			return false;
		}

		/// <summary>
		/// get the value that has complete membership
		/// </summary>
		/// <returns></returns>
		public FuzzyBasic GetCompleteMembership()
		{
			for( int i=0; i<arrayFuzzy.Count; i++ )
			{
				if( ( ( FuzzyBasic )arrayFuzzy[ i ] ).Membership == 1.0 )
					return ( FuzzyBasic )arrayFuzzy[ i ];
			}

			return null;
		}

		/// <summary>
		/// is the passed in parameter in the set
		/// </summary>
		/// <param name="fuzzy"></param>
		/// <returns></returns>
		public bool IsInSet( FuzzyBasic fuzzy )
		{
			for( int i=0; i<this.Count; i++ )
			{
				if( ( ( FuzzyBasic )this.FuzzyArray[ i ] ).IsEqual( fuzzy ) == true )
					return true;
			}

			return false;
		}

		/// <summary>
		/// Get the value of the best member in the fuzzy set
		/// Note returns lowest value ie less than one
		/// </summary>
		/// <returns></returns>
		public FuzzyBasic GetBestMembershipValue()
		{
			int nBestMember = 0;
			double dBestValue = 0.0;
			double dTempValue = 0.0;

			for( int i=0; i<arrayFuzzy.Count; i++ )
			{
				dTempValue = ( ( FuzzyBasic )arrayFuzzy[ i ] ).Membership;
				if( dTempValue > dBestValue && dTempValue < 1.0 )
				{
					dBestValue = dTempValue;
					nBestMember = i;
				}
			}

			return ( FuzzyBasic )arrayFuzzy[ nBestMember ];
		}

		/// <summary>
		/// returns the best membership value greater than 1
		/// </summary>
		/// <returns></returns>
		public FuzzyBasic GetHighestBestMembershipValue()
		{
			int nBestMember = 0;
			double dBestValue = 0.0;
			double dTempValue = 0.0;

			for( int i=0; i<arrayFuzzy.Count; i++ )
			{
				dTempValue = ( ( FuzzyBasic )arrayFuzzy[ i ] ).Membership;
				if( dTempValue < dBestValue && dTempValue > 1.0 )
				{
					dBestValue = dTempValue;
					nBestMember = i;
				}
			}

			return ( FuzzyBasic )arrayFuzzy[ nBestMember ];
		}

		#region /* OVERRIDE THESE IN CHILD CLASSES IF NEEDED */
		/// The folowing functions are fairly essential ( so far )
		/// but require specific class function knowledge for implementation. 

		/// <summary>
		/// gets the default membership value for the term ie when membership == 1
		/// therefore gets the middle value
		/// </summary>
		/// <param name="strTerm"></param>
		/// <returns></returns>
		public virtual double ValueFromTerm( string strTerm )
		{
			return 0.0;
		}

		/// <summary>
		///  get the name of the current value of the set
		/// </summary>
		/// <returns></returns>
		public virtual string GetTerm()
		{
			return null;
		}

		/// <summary>
		///  Is the current value within the specified term ( name of the fuzzy item )
		///  
		/// </summary>
		/// <param name="strTerm">name of the fuzzy item that the value is supposed to be within</param>
		/// <returns>true or false</returns>
		public virtual bool IsTerm( string strTerm )
		{
			return false;
		}

		/// <summary>
		///  Set the value for the Set to the Name of a passed in fuzzy number
		/// </summary>
		/// <param name="strTerm"></param>
		public virtual void SetToTerm( string strTerm )
		{
		}

		#endregion


		/// <summary>
		/// use an indexer for the class
		/// </summary>
		public FuzzyBasic this[ int index ]
		{
			get
			{
				if( index <= arrayFuzzy.Count )
					return ( FuzzyBasic )arrayFuzzy[ index ];
				else
					return null;
			}
			set
			{
				if( index < arrayFuzzy.Count )
				{
					arrayFuzzy.Insert( index, value );
				}
				else
					arrayFuzzy.Add( value );
			}
		}

		/// <summary>
		///  clear out the array list
		/// </summary>
		public void Empty()
		{
			this.FuzzyArray.Clear();
		}


		/// get a string for logging and printing the contents of the current fuzzy set
		public string FuzzyPrintOut
		{
			get
			{
				StringBuilder strTemp = new StringBuilder();
				strTemp.Append( "\nContents Of Fuzzy Set " );
				if( this.Name != "" )
					strTemp.Append( "Name = " + this.Name + "\n" );
				else
					strTemp.Append( "\n" );

				for( int i=0; i<this.Count; i++ )
				{
					strTemp.Append( "\n" + ( ( FuzzyBasic )this.FuzzyArray[ i ] ).ToString() + "\n" );
				}

				return strTemp.ToString();
			}
		}

		/// It doesn't make sense to add the comparison operators here as at this point
		/// it's impossible to tell what classes the array will be holding
	}
}

⌨️ 快捷键说明

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