Salta el contingut

Sistemes basats en regles

Arquitectura dels sistemes basats en regles

Un sistema basat en regles (SBR) representa el coneixement com a conjunt de regles de la forma:

SI <condició> ALESHORES <acció>

Components principals: - Base de coneixement: les regles (coneixement expert) - Memòria de treball (Working Memory): els fets actuals - Motor d'inferència: aplica les regles als fets per generar nous fets o accions

Encadenament cap endavant (Forward Chaining)

Parteix dels fets coneguts i aplica regles fins arribar a una conclusió. Apropiat quan la pregunta és: "donat el que sé, quines conclusions puc treure?"

Fets inicials: {plou, és_hivern}
Regles:
  R1: SI plou ALESHORES agafa_paraigua
  R2: SI és_hivern ALESHORES porta_abric
  R3: SI agafa_paraigua I porta_abric ALESHORES estàs_preparat

Execució:
  Iteració 1: R1 → agafa_paraigua; R2 → porta_abric
  Iteració 2: R3 → estàs_preparat ✅

Encadenament cap enrere (Backward Chaining)

Parteix d'un objectiu i busca les regles que el suporten fins arribar a fets coneguts. Apropiat per a sistemes de diagnòstic: "quines condicions cal complir perquè X sigui cert?"

Objectiu: estàs_preparat?
  → Necessita: agafa_paraigua I porta_abric
    → agafa_paraigua: necessita plou → ✅ (és un fet)
    → porta_abric: necessita és_hivern → ✅ (és un fet)
  → Conclusió: estàs_preparat ✅

CLIPS

CLIPS (C Language Integrated Production System) és un sistema expert de referència, de domini públic, creat per la NASA el 1985. Continua sent usat en entorns crítics.

; Definir fets
(deffacts fets-inicials
  (temperatura 38.5)
  (mal-de-cap si)
)

; Definir regles
(defrule diagnosticar-febre
  (temperatura ?t&:(> ?t 38))
  =>
  (assert (diagnostic febre))
  (printout t "Diagnòstic: febre detectada" crlf)
)

(defrule recomanar-tractament
  (diagnostic febre)
  (mal-de-cap si)
  =>
  (printout t "Recomanació: paracetamol i repòs" crlf)
)

Drools

Drools és el motor de regles de negoci open-source més usat en entorns empresarials Java/JVM. Integra Business Rules Management System (BRMS) amb interfície visual per a no programadors.

// Exemple de regla Drools
rule "Detectar frau potencial"
    when
        $transaccio : Transaccio(
            import > 5000,
            pais != "ES",
            hora > 23 || hora < 6
        )
    then
        $transaccio.setEstat("SUSPESA");
        insert(new Alerta("Possible frau: " + $transaccio.getId()));
end

Casos d'ús empresarials de Drools: - Regles de negoci en banca (aprovació de crèdits) - Sistemes de salut (protocols clínics) - Assegurances (càlcul de primes) - Logística (regles de tarifació)

Limitacions dels SBR

Els sistemes basats en regles escalen malament: amb milers de regles, el manteniment és molt costós i els conflictes entre regles difícils de detectar. Per a problemes amb dades abundants i patrons complexos, el Machine Learning supera els SBR. La tendència 2025 és combinar ambdós (IA neuro-simbòlica).

Miniactivitat — AC5071/02/04

Implementa un sistema expert senzill en Python (sense CLIPS) per diagnosticar si una planta necessita reg. Usa un diccionari de regles i encadenament cap endavant. Les entrades seran: humitat del sòl (%), dies des de l'últim reg, i color de les fulles.