Lightweight and simple fuzzy logic system implementation
- scikit-fuzzy like API
- Custom operators in production system
- Access to all intermediate system outputs
import numpy as np
import fuzzylite as fuzzy
quality = fuzzy.FuzzyVariable(np.arange(0, 10 + 1, 1), 'quality')
quality['poor'] = fuzzy.trimf(quality.universe, [0, 0, 5])
quality['average'] = fuzzy.trimf(quality.universe, [0, 5, 10])
quality['good'] = fuzzy.trimf(quality.universe, [5, 10, 10])
service = fuzzy.FuzzyVariable(np.arange(0, 10 + 1, 1), 'service')
service['poor'] = fuzzy.trimf(quality.universe, [0, 0, 5])
service['average'] = fuzzy.trimf(quality.universe, [0, 5, 10])
service['good'] = fuzzy.trimf(quality.universe, [5, 10, 10])
tip = fuzzy.FuzzyVariable(np.arange(0, 25 + 1, 1), 'tip')
tip['low'] = fuzzy.trimf(tip.universe, [0, 0, 13])
tip['medium'] = fuzzy.trimf(tip.universe, [0, 13, 25])
tip['high'] = fuzzy.trimf(tip.universe, [13, 25, 25])
rules = [
fuzzy.Rule([quality['poor'], service['poor']], tip['low']),
fuzzy.Rule([service['average']], tip['medium']),
fuzzy.Rule([service['good'], quality['good']], tip['high'])
]
system = fuzzy.FuzzySystem(rules)
system.input = { 'quality': 6.5, 'service': 9.8 }
system.produce()
print(system.output)
fuzzy-lite depends from NumPy package