The FuzzyLite Libraries for Fuzzy Logic Control

By Juan Rada-Vilela, Ph.D.

Current Versions

(20/03/2017)   QtFuzzyLite 6
(20/03/2017)   fuzzylite 6.0 for C++
(20/03/2017)   jfuzzylite 6.0 for Java and Android

License

fuzzylite 6.0 and jfuzzylite 6.0 are licensed under the GNU General Public License (GPL) 3.0. You are strongly encouraged to support the development of the FuzzyLite Libraries by purchasing a license of QtFuzzyLite 6.

QtFuzzyLite 6 is the new and (very likely) the best graphical user interface available to easily design and directly operate fuzzy logic controllers in real time. Available for Windows, Mac, and Linux, its goal is to significantly speed up the design of your fuzzy logic controllers, while providing a very useful, functional and beautiful user interface. Please, download it and check it out for free at www.fuzzylite.com/downloads/.

Introduction

fuzzylite is a free and open-source fuzzy logic control library programmed in C++ for multiple platforms (e.g., Windows, Linux, Mac, iOS). jfuzzylite is the equivalent library for Java and Android platforms. Together, they are the FuzzyLite Libraries for Fuzzy Logic Control.

If you are going to cite the FuzzyLite Libraries in your article, please do so as:

Reference
Juan Rada-Vilela. fuzzylite: a fuzzy logic control library, 2017. URL http://www.fuzzylite.com.

 @misc{fl::fuzzylite,
 author={Juan Rada-Vilela},
 title={fuzzylite: a fuzzy logic control library},
 url={http://www.fuzzylite.com},
 year={2017}}
 

Features

(6) Controllers: Mamdani, Takagi-Sugeno, Larsen, Tsukamoto, Inverse Tsukamoto, Hybrids

(21) Linguistic terms: (4) Basic: triangle, trapezoid, rectangle, discrete.
(9) Extended: bell, cosine, gaussian, gaussian product, pi-shape, sigmoid difference, sigmoid product, spike.
(5) Edges: binary, concave, ramp, sigmoid, s-shape, z-shape.
(3) Functions: constant, linear, function.

(7) Activation methods: general, proportional, threshold, first, last, lowest, highest.

(8) Conjunction and Implication (T-Norms): minimum, algebraic product, bounded difference, drastic product, einstein product, hamacher product, nilpotent minimum, function.

(10) Disjunction and Aggregation (S-Norms): maximum, algebraic sum, bounded sum, drastic sum, einstein sum, hamacher sum, nilpotent maximum, normalized sum, unbounded sum, function.

(7) Defuzzifiers: (5) Integral: centroid, bisector, smallest of maximum, largest of maximum, mean of maximum.
(2) Weighted: weighted average, weighted sum.

(7) Hedges: any, not, extremely, seldom, somewhat, very, function.

(3) Importers: FuzzyLite Language fll, Fuzzy Inference System fis, Fuzzy Control Language fcl.

(7) Exporters: C++, Java, FuzzyLite Language fll, FuzzyLite Dataset fld, R script, Fuzzy Inference System fis, Fuzzy Control Language fcl.

(30+) Examples of Mamdani, Takagi-Sugeno, Tsukamoto, and Hybrid controllers from fuzzylite, Octave, and Matlab, each included in the following formats: C++, Java, fll, fld, R, fis, and fcl.

In addition, you can easily:

  • Create your own classes inheriting from fuzzylite, register them in the factories, and incorporate them to operate in fuzzylite.
  • Utilize multiple rule blocks within a single engine, each containing any number of (possibly weighted) rule, and different conjunction, disjunction and activation operators.
  • Write inference rules just naturally, e.g., "if obstacle is left then steer is right".
  • Return a default output value, lock the output values to be within specific ranges, lock the previous valid output value when no rules are activated.
  • Explore the function space of your controller.
  • Utilize the entire library across multiple threads as it is thread-safe.
  • Download the sources, documentation, and binaries for the major platforms in the Downloads tab.

Screenshots

Windows-10

Ubuntu-1510

MacOS-Sierra

Videos

tutorial on fuzzylite
tutorial on qtfuzzylite
example of fuzzylite in real time