Skip to content

gregory-chatelier/fuzzy-logic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fuzzy Logic System

A Python implementation of a Fuzzy Logic inference engine, originally ported from the C# code accompanying the book L'Intelligence Artificielle pour les développeurs - Concepts et implémentations en C# by Virginie Mathivet (Editions ENI).

Installation

You can install this library directly from GitHub using pip:

pip install git+https://github.com/gregory-chatelier/fuzzy-logic.git

Or, if you have cloned the repository:

pip install .

Usage

Basic Example (Blinds Control)

from fuzzy_system.fuzzy_system import FuzzySystem
from fuzzy_system.linguistic_variable import LinguisticVariable
from fuzzy_system.linguistic_value import LinguisticValue
from fuzzy_system.fuzzy_sets.left_fuzzy_set import LeftFuzzySet
from fuzzy_system.fuzzy_sets.trapezoidal_fuzzy_set import TrapezoidalFuzzySet
from fuzzy_system.fuzzy_sets.right_fuzzy_set import RightFuzzySet

# 1. Create System
system = FuzzySystem("Blinds Control")

# 2. Define Input Variables
# Temperature: 0-35 degrees
temp = LinguisticVariable("Temperature", 0, 35)
temp.add_value(LinguisticValue("Cold", LeftFuzzySet(0, 35, 10, 12)))
temp.add_value(LinguisticValue("Fresh", TrapezoidalFuzzySet(0, 35, 10, 12, 15, 17)))
temp.add_value(LinguisticValue("Good", TrapezoidalFuzzySet(0, 35, 15, 17, 20, 25)))
temp.add_value(LinguisticValue("Hot", RightFuzzySet(0, 35, 20, 25)))
system.add_input_variable(temp)

# ... (Add more variables and rules) ...

# 3. Solve
# system.set_input_variable(temp, 21)
# result = system.solve()

See the examples/ directory for complete working scripts.

Alternatives

This library was created primarily for educational purposes and to port specific logic from the referenced book. If you are looking for a robust, actively maintained fuzzy logic library for production use in Python, consider these established alternatives:

  • scikit-fuzzy: The standard fuzzy logic toolkit for SciPy.
  • Simpful: A user-friendly and lightweight library for fuzzy logic.
  • pyfuzzylite: A comprehensive fuzzy logic control library.

Development

Project Structure

  • src/fuzzy_system: Core library code.
  • examples/: Example scripts (example_app1.py, example_app2.py) and plotting scripts.
  • tests/: Unit tests.

Running Tests

This project uses pytest.

pip install pytest
pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Fuzzy logic system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages