UD05 · Taller 2 — Lógica difusa: el problema de las propinas¶
Objetivo: implementar de principio a fin el ejemplo difuso de la teoría y comprobar en código las tres fases del razonamiento impreciso: fuzzificación, evaluación de reglas y desfuzzificación.
Fase 1 — Instalación y variables de entrada¶
Define dos antecedentes —servicio y comida, universo 0-10— con tres funciones de pertenencia triangulares cada uno.
%pip install scikit-fuzzy networkx
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# TU CÓDIGO: define los dos Antecedent y sus funciones de pertenencia
servicio = ...
comida = ...
Fase 2 — Variable de salida y reglas¶
Define el consecuente propina (universo 0-25) y las tres reglas de la teoría.
# TU CÓDIGO: el Consequent y las tres Rule
propina = ...
regla1 = ...
regla2 = ...
regla3 = ...
Fase 3 — Inferencia con el caso de la teoría¶
Monta el sistema de control, simúlalo con servicio 9,8 y comida 6,5, y obtén la propina.
# TU CÓDIGO
sistema = ...
sim = ...
print("Propina:", ...)
✏️ Respuesta: la teoría da 19,24 € y a ti te saldrá una cifra parecida pero no idéntica. ¿Por qué? (Pista: mira la resolución del universo que has definido.)
(escribe aquí)
Fase 4 — Visualiza las funciones de pertenencia¶
# TU CÓDIGO: dibuja las tres variables y el resultado de la inferencia
...
Fase 5 — Cambia el escenario¶
Prueba un caso opuesto —servicio malo y comida regular— e interpreta el resultado.
# TU CÓDIGO
...
✏️ Respuesta: ¿el resultado es coherente? ¿Qué reglas han pesado más?
(escribe aquí)
Fase 6 — Compara con un sistema de reglas «duro»¶
Escribe la misma lógica con if/elif sobre umbrales fijos y compara la salida en varios casos, sobre todo cerca de los umbrales.
def propina_dura(servicio, comida):
# TU CÓDIGO: la misma logica con umbrales fijos
...
for s, c in [(9.8, 6.5), (5.0, 5.0), (5.1, 5.0), (4.9, 5.0)]:
print(s, c, "->", propina_dura(s, c))
✏️ Respuesta: ¿qué le pasa al sistema duro cerca de los umbrales que no le pasa al difuso? Relaciónalo con la histéresis del Taller 1.
(escribe aquí)