De acuerdo a lo solicitado y la sugerencia del instructor, el sistema basado en conocimiento a desarrollar será:
==========================================================
SISTEMA EXPERTO PARA DIAGNÓSTICO DE ENFERMEDADES RESPIRATORIAS
Basado en hechos, reglas e inferencia lógica
==========================================================
----------------------------------------------------------
Clase Base de Conocimiento
----------------------------------------------------------
class BaseDeConocimiento:
def __init__(self):
self.hechos = []
self.reglas = []
def agregar_hecho(self, hecho):
if hecho not in self.hechos:
self.hechos.append(hecho)
def agregar_regla(self, condiciones, conclusion):
self.reglas.append((condiciones, conclusion))
----------------------------------------------------------
Clase Sistema Experto
----------------------------------------------------------
class SistemaExperto:
def __init__(self, base):
self.base = base
def inferir(self):
print("===== Iniciando proceso de inferencia =====\n")
nuevos_hechos = True
while nuevos_hechos:
nuevos_hechos = False
for condiciones, conclusion in self.base.reglas:
# Verificar si todas las condiciones se cumplen
if all(condicion in self.base.hechos for condicion in condiciones):
if conclusion not in self.base.hechos:
self.base.agregar_hecho(conclusion)
print("Regla aplicada:")
print(f"SI {' Y '.join(condiciones)}")
print(f"ENTONCES {conclusion}\n")
nuevos_hechos = True
----------------------------------------------------------
Crear la Base de Conocimiento
----------------------------------------------------------
base = BaseDeConocimiento()
----------------------------------------------------------
Registrar los síntomas del paciente (Hechos)
----------------------------------------------------------
base.agregar_hecho("fiebre alta")
base.agregar_hecho("tos")
base.agregar_hecho("dificultad para respirar")
----------------------------------------------------------
Registrar las reglas del sistema
----------------------------------------------------------
base.agregar_regla(
["fiebre alta", "tos"],
"infección respiratoria"
)
base.agregar_regla(
["infección respiratoria", "dificultad para respirar"],
"neumonía"
)
Reglas adicionales
base.agregar_regla(
["tos"],
"irritación respiratoria"
)
base.agregar_regla(
["neumonía"],
"requiere atención médica inmediata"
)
----------------------------------------------------------
Ejecutar el Sistema Experto
----------------------------------------------------------
sistema = SistemaExperto(base)
sistema.inferir()
----------------------------------------------------------
Mostrar resultados
----------------------------------------------------------
print("=" * 50)
print("HECHOS Y DIAGNÓSTICOS OBTENIDOS")
print("=" * 50)
for hecho in base.hechos:
print(f"• {hecho}")
Salida esperada
===== Iniciando proceso de inferencia =====
Regla aplicada:
SI fiebre alta Y tos
ENTONCES infección respiratoria
Regla aplicada:
SI infección respiratoria Y dificultad para respirar
ENTONCES neumonía
Regla aplicada:
SI tos
ENTONCES irritación respiratoria
Regla aplicada:
SI neumonía
ENTONCES requiere atención médica inmediata
==================================================
HECHOS Y DIAGNÓSTICOS OBTENIDOS
• fiebre alta
• tos
• dificultad para respirar
• infección respiratoria
• neumonía
• irritación respiratoria
• requiere atención médica inmediata