The FuzzyLite Libraries for Fuzzy Logic Control

By Juan Rada-Vilela, Ph.D.

Current Versions

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

Introduction

QtFuzzyLite 6 is (very likely) the best application available to easily design and directly operate fuzzy logic controllers in real time.
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 fuzzylite library for Java and Android platforms.

If you are going to cite us in your article, please do so as:
Juan Rada-Vilela. fuzzylite: a fuzzy logic control library, 2017. URL http://fuzzylite.com/
or using BibTeX as:

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

License of the FuzzyLite Libraries

The FuzzyLite Libraries, namely fuzzylite 6.0 and jfuzzylite 6.0, are licensed under the GNU General Public License (GPL) 3.0 and under a paid license for commercial purposes. If you are using them under the GPL license, please consider purchasing a license of QtFuzzyLite to support the development of the libraries. If you want a commercial license of fuzzylite and jfuzzylite, please contact sales@fuzzylite.com.

Features

The FuzzyLite Libraries have the following 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.

Videos

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