Skip to content

lucaferranti/FuzzyLogic.jl

Repository files navigation

FuzzyLogic.jl

Info Build status Documentation Contributing Citation
version CI Status Stable docs contributing guidelines bibtex
Licese: MIT Coverage Dev docs SciML Code Style paper
downloads pkgeval-img JuliaCon video gitter-chat zenodo

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)

Documentation

  • STABLE: Documentation of the latest release
  • DEV: Documentation of the version on main

JuliaCon video

Contributing

Contributions are welcome! Here is a small decision tree with useful links.

  • To chat withe the core dev(s), you can use the element chat. This is a good entry point for less structured queries.

  • If you find a bug or want to request a feature, open an issue.

  • There is a discussion section on GitHub. You can use the helpdesk for asking for help on how to use the software or the show and tell to share with the world your work using FuzzyLogic.jl.

  • You are also encouraged to send pull requests (PRs). For small changes, it is ok to open a PR directly. For bigger changes, it is advisable to discuss it in an issue first. Before opening a PR, make sure to check the contributing guidelines.

Copyright