FuzzyLogic.jl

InfoBuild statusDocumentationContributingCitation
versionCI StatusStable docscontributing guidelinesbibtex
Licese: MITCoverageDev docsSciML Code Stylepaper
downloadsPkgEvalJuliaCon videogitter-chatzenodo

A Julia library for fuzzy logic and applications.

If you use this in your research, please cite it as

@INPROCEEDINGS{ferranti2023fuzzylogicjl,
  author={Ferranti, Luca and Boutellier, Jani},
  booktitle={2023 IEEE International Conference on Fuzzy Systems (FUZZ)}, 
  title={FuzzyLogic.jl: A Flexible Library for Efficient and Productive Fuzzy Inference}, 
  year={2023},
  pages={1-5},
  doi={10.1109/FUZZ52849.2023.10309777}}

Features

Installation

  1. If you haven't already, install Julia. The easiest way is to install Juliaup. This allows to easily manage julia versions.

  2. Open the terminal and start a julia session by simply typing julia

  3. Install the library by typing

using Pkg; Pkg.add("FuzzyLogic")
  1. The package can now be loaded (in the interactive REPL or in a script file) with the command
using FuzzyLogic
  1. That's it, have fun!

Quickstart example

fis = @mamfis function tipper(service, food)::tip
    service := begin
      domain = 0:10
      poor = GaussianMF(0.0, 1.5)
      good = GaussianMF(5.0, 1.5)
      excellent = GaussianMF(10.0, 1.5)
    end

    food := begin
      domain = 0:10
      rancid = TrapezoidalMF(-2, 0, 1, 3)
      delicious = TrapezoidalMF(7, 9, 10, 12)
    end

    tip := begin
      domain = 0:30
      cheap = TriangularMF(0, 5, 10)
      average = TriangularMF(10, 15, 20)
      generous = TriangularMF(20, 25, 30)
    end

    service == poor || food == rancid --> tip == cheap
    service == good --> tip == average
    service == excellent || food == delicious --> tip == generous
end

fis(service=1, food=2)