📄 fuzzylogic.cs
字号:
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 + -