Jump to content

Fuzzy Control Language

From Wikipedia, the free encyclopedia

Fuzzy Control Language, or FCL, is a language for implementing fuzzy logic, especially fuzzy control. It was standardized by IEC 61131-7. It is a domain-specific programming language: it has no features unrelated to fuzzy logic, so it is impossible to even print "Hello, world!". Therefore, one does not write a program in FCL, but one may write part of it in FCL.

Example

[edit]
RULE 0: IF (temperature IS cold) THEN (output IS low)
RULE 1: IF (temperature IS very cold) THEN (output IS high)

Limitations

[edit]

FCL is not an entirely complete fuzzy language, for instance, it does not support "hedges", which are adverbs that modify the set. For instance, the programmer cannot write:

RULE 0: If (Temperature is VERY COLD) then (Output is VERY HIGH)

However, the programmer can simply define new sets for "very cold" and "very high". FCL also lacks support for higher-order fuzzy sets, subsets, and so on. None of these features are essential to fuzzy control, although they may be nice to have.


References

[edit]
[edit]
  • fuzzyTECH, a commercial fuzzy logic development system containing the specification document for IEC1131-7 (select Fuzzy Application Library)
  • IEC 1131-7 CD1 Archived 2021-03-04 at the Wayback Machine IEC 1131-7 CD1 PDF
  • fuzzylite, A fuzzy logic controller library written in C++.
  • Free Fuzzy Logic Library (FFLL), an implementation library written in C++.
  • JFuzzyLogic, open source FCL + Fuzzy Logic Package (sourceforge, java)
  • AwiFuzz, open source implementation written in C++ covering all three levels of IEC 61131-7 Fuzzy Controller Language
  • pyfuzzy, open source implementation written in python.