📄 fuzzynumber.cs
字号:
dSetTwoMinMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum;
else
dSetTwoMinMaximum = setParams.SetTwoMinMaximum;
if( setParams.SetTwoMaxMaximum == 0 )
dSetTwoMaxMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum;
else
dSetTwoMaxMaximum = setParams.SetTwoMaxMaximum;
if( setParams.SetTwoMinMembership == 0 )
dSetTwoMinMembership = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership;
else
dSetTwoMinMembership = setParams.SetTwoMinMembership;
if( setParams.SetTwoMinMinimum == 0 )
dSetTwoMinMinimum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum;
else
dSetTwoMinMinimum = setParams.SetTwoMinMinimum;
if( setParams.SetTwoMinNumber == 0 )
dSetTwoMinNumber = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number;
else
dSetTwoMinNumber = setParams.SetTwoMinNumber;
if( ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Maximum >= dSetOneMinMaximum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum >= dSetTwoMinMaximum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Maximum <= dSetOneMaxMaximum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum <= dSetTwoMaxMaximum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Membership >= dSetOneMinMembership &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership >= dSetTwoMinMembership &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Membership <= dSetOneMaxMembership &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership <= dSetTwoMaxMembership &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Minimum >= dSetOneMinMinimum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum >= dSetTwoMinMinimum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Minimum <= dSetOneMaxMinimum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum <= dSetTwoMaxMinimum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Number >= dSetOneMinNumber &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number >= dSetTwoMinNumber &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Number <= dSetOneMaxNumber &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number <= dSetTwoMaxNumber )
{
if( dSetOneMinMaximum >= dSetTwoMinMaximum &&
dSetOneMaxMaximum <= dSetTwoMaxMaximum &&
dSetOneMinMembership >= dSetTwoMinMembership &&
dSetOneMaxMembership <= dSetTwoMaxMembership &&
dSetOneMinMinimum >= dSetTwoMinMinimum &&
dSetOneMaxMinimum <= dSetTwoMaxMinimum &&
dSetOneMinNumber >= dSetTwoMinNumber &&
dSetOneMaxNumber <= dSetTwoMaxNumber )
{
returnSet[ returnSet.Count + 1 ] = new FuzzyNumber( ( FuzzyNumber )this.FuzzyArray[ i ] );
}
}
}
}
return returnSet;
}
/// <summary>
/// return an exclusive or set
/// </summary>
/// <param name="setOne"></param>
/// <param name="setTwo"></param>
/// <returns></returns>
public FuzzyNumberSet ExclusiveOR( FuzzyNumberSet fuzzySet )
{
FuzzyNumberSet returnSet = new FuzzyNumberSet();
bool bFound = false;
/// Get the ones in set one but not in set two
for( int i=0; i<this.Count; i++ )
{
bFound = false;
for( int n=0; n<fuzzySet.Count; n++ )
{
if( ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Maximum == ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Membership == ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Minimum == ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum &&
( ( FuzzyNumber )this.FuzzyArray[ i ] ).Number == ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number )
{
bFound = true;
n=fuzzySet.Count;
}
}
if( bFound == false )
{
returnSet[ returnSet.Count + 1 ] = new FuzzyNumber( ( FuzzyNumber )this.FuzzyArray[ i ] );
}
}
/// get the ones in set two but not in set one
for( int i=0; i<fuzzySet.Count; i++ )
{
bFound = false;
for( int n=0; n<this.Count; n++ )
{
if( ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Maximum == ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Maximum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Membership == ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Membership &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Minimum == ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Minimum &&
( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Number == ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Number )
{
bFound = true;
n=this.Count;
}
}
if( bFound == false )
{
returnSet[ returnSet.Count + 1 ] = new FuzzyNumber( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] );
}
}
return returnSet;
}
/// <summary>
/// exclusive or taking the fuzzy parameter set.
/// </summary>
/// <param name="setOne"></param>
/// <param name="setTwo"></param>
/// <param name="setParams"></param>
/// <returns></returns>
public FuzzyNumberSet ExclusiveOR( FuzzyNumberSet fuzzySet, FuzzySetParameters setParams )
{
FuzzyNumberSet returnSet = new FuzzyNumberSet();
bool bFound = false;
double dSetOneMinMinimum;
double dSetOneMaxMinimum;
double dSetOneMinMembership;
double dSetOneMaxMembership;
double dSetOneMinMaximum;
double dSetOneMaxMaximum;
double dSetOneMinNumber;
double dSetOneMaxNumber;
double dSetTwoMinMinimum;
double dSetTwoMaxMinimum;
double dSetTwoMinMembership;
double dSetTwoMaxMembership;
double dSetTwoMinMaximum;
double dSetTwoMaxMaximum;
double dSetTwoMinNumber;
double dSetTwoMaxNumber;
/// Get the ones in set one but not in set two
for( int i=0; i<this.Count; i++ )
{
bFound = false;
if( setParams.SetOneMaxMembership == 0 )
dSetOneMaxMembership = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Membership;
else
dSetOneMaxMembership = setParams.SetOneMaxMembership;
if( setParams.SetOneMaxMinimum == 0 )
dSetOneMaxMinimum = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Minimum;
else
dSetOneMaxMinimum = setParams.SetOneMaxMinimum;
if( setParams.SetOneMaxNumber == 0 )
dSetOneMaxNumber = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Number;
else
dSetOneMaxNumber = setParams.SetOneMaxNumber;
if( setParams.SetOneMinMaximum == 0 )
dSetOneMinMaximum = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Maximum;
else
dSetOneMinMaximum = setParams.SetOneMinMaximum;
if( setParams.SetOneMaxMaximum == 0 )
dSetOneMaxMaximum = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Maximum;
else
dSetOneMaxMaximum = setParams.SetOneMaxMaximum;
if( setParams.SetOneMinMembership == 0 )
dSetOneMinMembership = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Membership;
else
dSetOneMinMembership = setParams.SetOneMinMembership;
if( setParams.SetOneMinMinimum == 0 )
dSetOneMinMinimum = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Minimum;
else
dSetOneMinMinimum = setParams.SetOneMinMinimum;
if( setParams.SetOneMinNumber == 0 )
dSetOneMinNumber = ( ( FuzzyNumber )this.FuzzyArray[ i ] ).Number;
else
dSetOneMinNumber = setParams.SetOneMinNumber;
for( int n=0; n<fuzzySet.Count; n++ )
{
if( setParams.SetTwoMaxMembership == 0 )
dSetTwoMaxMembership = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership;
else
dSetTwoMaxMembership = setParams.SetTwoMaxMembership;
if( setParams.SetTwoMaxMinimum == 0 )
dSetTwoMaxMinimum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum;
else
dSetTwoMaxMinimum = setParams.SetTwoMaxMinimum;
if( setParams.SetTwoMaxNumber == 0 )
dSetTwoMaxNumber = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number;
else
dSetTwoMaxNumber = setParams.SetTwoMaxNumber;
if( setParams.SetTwoMinMaximum == 0 )
dSetTwoMinMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum;
else
dSetTwoMinMaximum = setParams.SetTwoMinMaximum;
if( setParams.SetTwoMaxMaximum == 0 )
dSetTwoMaxMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Maximum;
else
dSetTwoMaxMaximum = setParams.SetTwoMaxMaximum;
if( setParams.SetTwoMinMembership == 0 )
dSetTwoMinMembership = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Membership;
else
dSetTwoMinMembership = setParams.SetTwoMinMembership;
if( setParams.SetTwoMinMinimum == 0 )
dSetTwoMinMinimum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Minimum;
else
dSetTwoMinMinimum = setParams.SetTwoMinMinimum;
if( setParams.SetTwoMinNumber == 0 )
dSetTwoMinNumber = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ n ] ).Number;
else
dSetTwoMinNumber = setParams.SetTwoMinNumber;
if( dSetOneMinMaximum >= dSetTwoMinMaximum &&
dSetOneMaxMaximum <= dSetTwoMaxMaximum &&
dSetOneMinMembership >= dSetTwoMinMembership &&
dSetOneMaxMembership <= dSetTwoMaxMembership &&
dSetOneMinMinimum >= dSetTwoMinMinimum &&
dSetOneMaxMinimum <= dSetTwoMaxMinimum &&
dSetOneMinNumber >= dSetTwoMinNumber &&
dSetOneMaxNumber <= dSetTwoMaxNumber )
{
bFound = true;
n=fuzzySet.Count;
}
}
if( bFound == false )
{
returnSet[ returnSet.Count + 1 ] = new FuzzyNumber( ( FuzzyNumber )this.FuzzyArray[ i ] );
}
}
/// get the ones in set two but not in set one
for( int i=0; i<fuzzySet.Count; i++ )
{
bFound = false;
if( setParams.SetTwoMaxMembership == 0 )
dSetTwoMaxMembership = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Membership;
else
dSetTwoMaxMembership = setParams.SetTwoMaxMembership;
if( setParams.SetTwoMaxMinimum == 0 )
dSetTwoMaxMinimum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Minimum;
else
dSetTwoMaxMinimum = setParams.SetTwoMaxMinimum;
if( setParams.SetTwoMaxNumber == 0 )
dSetTwoMaxNumber = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Number;
else
dSetTwoMaxNumber = setParams.SetTwoMaxNumber;
if( setParams.SetTwoMinMaximum == 0 )
dSetTwoMinMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Maximum;
else
dSetTwoMinMaximum = setParams.SetTwoMinMaximum;
if( setParams.SetTwoMaxMaximum == 0 )
dSetTwoMaxMaximum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Maximum;
else
dSetTwoMaxMaximum = setParams.SetTwoMaxMaximum;
if( setParams.SetTwoMinMembership == 0 )
dSetTwoMinMembership = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Membership;
else
dSetTwoMinMembership = setParams.SetTwoMinMembership;
if( setParams.SetTwoMinMinimum == 0 )
dSetTwoMinMinimum = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Minimum;
else
dSetTwoMinMinimum = setParams.SetTwoMinMinimum;
if( setParams.SetTwoMinNumber == 0 )
dSetTwoMinNumber = ( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] ).Number;
else
dSetTwoMinNumber = setParams.SetTwoMinNumber;
for( int n=0; n<this.Count; n++ )
{
if( setParams.SetOneMaxMembership == 0 )
dSetOneMaxMembership = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Membership;
else
dSetOneMaxMembership = setParams.SetOneMaxMembership;
if( setParams.SetOneMaxMinimum == 0 )
dSetOneMaxMinimum = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Minimum;
else
dSetOneMaxMinimum = setParams.SetOneMaxMinimum;
if( setParams.SetOneMaxNumber == 0 )
dSetOneMaxNumber = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Number;
else
dSetOneMaxNumber = setParams.SetOneMaxNumber;
if( setParams.SetOneMinMaximum == 0 )
dSetOneMinMaximum = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Maximum;
else
dSetOneMinMaximum = setParams.SetOneMinMaximum;
if( setParams.SetOneMaxMaximum == 0 )
dSetOneMaxMaximum = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Maximum;
else
dSetOneMaxMaximum = setParams.SetOneMaxMaximum;
if( setParams.SetOneMinMembership == 0 )
dSetOneMinMembership = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Membership;
else
dSetOneMinMembership = setParams.SetOneMinMembership;
if( setParams.SetOneMinMinimum == 0 )
dSetOneMinMinimum = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Minimum;
else
dSetOneMinMinimum = setParams.SetOneMinMinimum;
if( setParams.SetOneMinNumber == 0 )
dSetOneMinNumber = ( ( FuzzyNumber )this.FuzzyArray[ n ] ).Number;
else
dSetOneMinNumber = setParams.SetOneMinNumber;
if( dSetOneMinMaximum >= dSetTwoMinMaximum &&
dSetOneMaxMaximum <= dSetTwoMaxMaximum &&
dSetOneMinMembership >= dSetTwoMinMembership &&
dSetOneMaxMembership <= dSetTwoMaxMembership &&
dSetOneMinMinimum >= dSetTwoMinMinimum &&
dSetOneMaxMinimum <= dSetTwoMaxMinimum &&
dSetOneMinNumber >= dSetTwoMinNumber &&
dSetOneMaxNumber <= dSetTwoMaxNumber )
{
bFound = true;
n=this.Count;
}
}
if( bFound == false )
{
returnSet[ returnSet.Count + 1 ] = new FuzzyNumber( ( FuzzyNumber )fuzzySet.FuzzyArray[ i ] );
}
}
return returnSet;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -