This is a set of Fuzzy Logic function for use in developpement, but not limited to, AI systems.
Best Regards
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : FuzzyLogic function
; File Mame : Lib_FuzzyLogic.pb
; File Version : 1.0.0
; Programmation : OK
; Programmed by : Guimauve
; Date : 11-09-2007
; Last Update : 10-05-2009
; Coded for PureBasic V4.30
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure.d FuzzyGrade(Value.d, x0.d, x1.d)
If Value <= x0
FuzzyResult.d = 0.0
ElseIf Value >= x1
FuzzyResult = 1.0
Else
FuzzyResult = (Value - x0) / (x1 - x0)
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyReverseGrade(Value.d, x0.d, x1.d)
If Value <= x0
FuzzyResult.d = 1.0
ElseIf Value >= x1
FuzzyResult = 0.0
Else
FuzzyResult = (x1 - Value) / (x1 - x0)
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyTriangle(Value.d, x0.d, x1.d, x2.d)
If Value <= x0
FuzzyResult.d = 0.0
ElseIf Value = x1
FuzzyResult = 1.0
ElseIf (Value > x0) And (Value < x1)
FuzzyResult = (Value - x0) / (x1 - x0)
ElseIf (Value > x1) And (Value < x2)
FuzzyResult = (x2 - Value) / (x2 - x1)
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyTrapezoid(Value.d, x0.d, x1.d, x2.d, x3.d)
If Value <= x0
FuzzyResult.d = 0.0
ElseIf (Value >= x1) And (Value <= x2)
FuzzyResult = 1.0
ElseIf (Value > x0) And (Value < x1)
FuzzyResult = (Value-x0) - / (x1 - x0)
ElseIf (Value > x2) And (Value < x3)
FuzzyResult = (x3 - Value) / (x3 - x2)
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyAND(A.d, B.d)
If A > B
FuzzyResult.d = B
ElseIf A <= B
FuzzyResult = A
Else
FuzzyResult = A
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyOR(A.d, B.d)
If A < B
FuzzyResult.d = B
ElseIf A >= B
FuzzyResult = A
Else
FuzzyResult = A
EndIf
ProcedureReturn FuzzyResult
EndProcedure
Procedure.d FuzzyNOT(A.d)
ProcedureReturn 1.0 - A
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<