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:
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.