Groupe de fonction Fuzzy Logic

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Groupe de fonction Fuzzy Logic

Message par Guimauve »

Bonjour à tous,

Je relâche un groupe de fonction à propos de la logique "Fuzzy" utilisé entre autre dans la programmation d'un intelligence artificielle.

(J'ai perdu le code de démonstration, désolé)

A+
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Fonction FuzzyLogic
; Nom du Fichier : Lib_FuzzyLogic.pb
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 11-09-2007
; Mise à jour : 10-05-2009
; Codé avec 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

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<