UD02 · Notebook 1 — Control difuso con scikit-fuzzy¶
Requisitos
Necesitas el contenedor de prácticas de IA de la UD00 funcionando, o un entorno Python 3.12+ con numpy y scikit-fuzzy:
docker compose up -d # si usas el contenedor del curso
pip install scikit-fuzzy==0.5.0
Objetivo: construir un sistema de control difuso tipo Mamdani que decida la velocidad de un ventilador según la temperatura y la humedad de una sala, recorriendo las tres fases de un sistema de razonamiento impreciso — fuzzificación, evaluación de reglas y desfuzzificación (RA2-d).
Es una entrega evaluable: se corrige con la rúbrica de su tarea en Moodle.
Fase 1 — Importa las librerías y define los universos¶
%pip install scikit-fuzzy
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# TU CÓDIGO: define los tres Antecedent/Consequent (temperatura 0-40, humedad 0-100, velocidad 0-100)
temperatura = ...
humedad = ...
velocidad = ...
Fase 2 — Funciones de pertenencia (términos lingüísticos)¶
¿Por qué trapezoidal en los extremos?
Las funciones de los extremos suelen ser trapezoidales para que «fresca» o «caliente» mantengan pertenencia plena hasta el límite del universo, y triangulares en el centro.
# TU CÓDIGO: funciones de pertenencia de las tres variables
...
Fase 3 — Reglas IF-THEN¶
# TU CÓDIGO
r1 = ...
r2 = ...
r3 = ...
Fase 4 — Sistema y simulación¶
# TU CÓDIGO
sistema = ...
sim = ...
print(...)
Fase 5 — Visualiza las funciones de pertenencia¶
Añade al informe una captura de la gráfica y explica qué ocurre en cada simulación.
# TU CÓDIGO
velocidad.view()
Fase 6 — Experimento (respuesta razonada)¶
Prueba estas combinaciones y anota el resultado en una tabla:
| Temperatura | Humedad | Velocidad (%) | ¿Coherente? |
|---|---|---|---|
| 10 | 30 | ||
| 25 | 50 | ||
| 38 | 90 | ||
| 18 | 80 |
# TU CÓDIGO: calcula la velocidad para las 4 combinaciones de la tabla anterior
...
✏️ Respuesta: copia la tabla de la Fase 6 aquí ya completada, y comenta si algún resultado te sorprende y por qué.
(escribe aquí)
Entrega¶
| Fase | Evidencia mínima |
|---|---|
| 1-2 | Las dos variables de entrada y la de salida, con sus funciones de pertenencia |
| 3 | Las tres reglas IF-THEN |
| 4 | Las dos simulaciones (20 ºC/50 % y 33 ºC/85 %) con su velocidad resultante |
| 5 | La captura de velocidad.view() |
| 6 | La tabla de experimentos completa, con la columna «¿Coherente?» justificada |
Soluciones
Las soluciones no se publican: se corrigen y comentan en clase.