This project implements a Fuzzy Logic Controller for a water pump system. The controller takes water pressure and water demand as inputs and outputs pump activation using fuzzy logic.
-
Water Pressure
- Linguistic Variable: Low, Moderate, High
- Universe of Discourse: 0-100
- Membership Functions:
- Low Pressure:
def low_pressure(u: float) -> float: if u >= 40: return 0 return (40 - u) / 40
- Moderate Pressure:
def moderate_pressure(u: float) -> float: res = 0 if u <= 20 or u >= 60: return 0 if u >= 20 and u <= 40: res = (u - 20) / (40 - 20) elif u >= 40 and u <= 60: res = (60 - u) / (60 - 40) return res
- High Pressure:
def high_pressure(u: float) -> float: if u <= 40: return 0 if u >= 40 and u <= 70: return (u - 40) / (70 - 40) return 1.0
- Low Pressure:
-
Water Demand
- Linguistic Variable: Low, Moderate, High
- Universe of Discourse: 0-100
- Membership Functions:
- Low Demand:
def low_demand(u: float) -> float: if u >= 30: return 0 return (30 - u) / 30
- Moderate Demand:
def moderate_demand(u: float) -> float: res = 0 if u <= 20 or u >= 80: return 0 if u >= 20 and u <= 40: return (u - 20) / (40 - 20) if u >= 40 and u <= 60: return 1.0 if u >= 60 and u <= 80: return (80 - u) / (80 - 60)
- High Demand:
def high_demand(u: float) -> float: if u <= 60: return 0 if u >= 60 and u <= 80: return (u - 60) / (80 - 60) return 1.0
- Low Demand:
| LOW | MODERATE | HIGH | |
|---|---|---|---|
| LOW | DEACTIVATE | HALF | FULL |
| MODERATE | DEACTIVATE | DEACTIVATE | FULL |
| HIGH | DEACTIVATE | DEACTIVATE | HALF |
1. Fuzzify input variables.
2. Apply rules defined in system responses for different input conditions.
3. Calculate center of gravity and convert fuzzy output to a crisp value.
