-
I sistemi esperti basati su regole
Definizione di Sistema Esperto
Un sistema esperto è un software che dopo essere stato istruito in modo opportuno, è in grado di dedurre nuove informazioni a partire da un insieme di informazioni di partenza (fatti).
In un sistema esperto la competenza di un esperto umano è codificata nella cosidetta base di conoscenza (ad esempio sotto forma di regola), aggiornabile in base all’esperienza.
I sistemi esperti basati su regole sono dei programmi composti da regole della forma IF condizione THEN azione.
Dati una serie di fatti i sistemi esperti, grazie alle regole di cui sono composti, riescono a dedurre nuovi fatti.
Perché scegliere un sistema basato su regole
Le regole ci permettono di rappresentare alcuni tipi di conoscenza che sono difficili da implementare in un canonico programma procedurale.
Un programma “rule-based” separa la conoscenza dal resto del programma.
Questo porta il vantaggio che se si cambia la conoscenza cio’ non comporta una modifica il programma procedurale.
Si ha così una maggiore flessibilità, in quanto si possono rinviare alcune deciosioni oppure riconsidarle senza ricostruire completamente il programma.
Un programma basato su regole può essere scritto in modi diversi. Alcuni linguaggi come OPS-5 sono stati studianti per questo scopo (http://free-compilers.sharnoff.org/TOOL/OPS5-1.html).
Definizione di Sistema di Produzione basato su regole:
Un sistema a regole di produzione (production system) è costituito da tre componenti fondamentali:
- Base di conoscenza a regole (che prende spesso il nome di memoria a lungo termine) in cui sono contenute le regole di produzione
- Memoria di lavoro (memoria a breve termine) in cui sono contenuti i dati e in cui vengono mantenute le conclusioni raggiunte dal sistema
- Motore inferenziale
- Relazioni (e.g., relazioni causali)
- Raccomandazioni, consigli, suggerimenti
- Direttive
- Strategia
- Euristica
- Forward chaining: cerca di giungere ad una conclusione partendo dai fatti presenti all’inizio nella memoria temporanea e applicando in avanti le regole.
- Backward chaining: si procede mediante riduzione dell’obiettivo principale (goal) a sottoproblemi. Una volta individuata la tesi da dimostrare, si applicano all’indietro le regole di produzione, cercando di trovare coerenza con i dati iniziali.
Ogni regola di produzione ha la seguente forma:
IF <pattern> THEN <body>Le regole non sono invocate per nome, ma sono attivate in base al pattern-matching.
La conoscenza
Fatti: informazioni che riguardano la particolare situazione
Regole: formulano elementari meccanismi del tipo se : : : allora : : :
Tipi di Regole
Raccomandazioni:
SE la stagione e’ autunno E il cielo e’ nuvoloso
ALLORA consiglio di prendere l’ombrelloStrategia:
SE l’auto non si avvia ALLORA controlla il serbatoio il serbatoio; passo-1 completato
SE passo-1 completato E il serbatoio e’ pieno ALLORA controlla la batteria; passo-2 completato
Euristica:
SE il liquido e’ scuro E ha pH < 6 E ha profumo acidulo ALLORA il liquido e' aceto balsamico
Relazioni:
SE il serbatoio e’ vuoto ALLORA l’auto non si avvia
Direttive:
SE l’auto non si avvia E il serbatoio e’ vuoto ALLORA riempi il serbatoio
Meccanismi di Inferenza
Due tipi di controllo (cioe’ di concatenamento delle regole):
ALGORITMO FORWARD CHAINING (o DATA-DRIVEN)
La memoria di lavoro nella sua configurazione iniziale contiene la conoscenza iniziale sul problema, cioè i fatti noti.
Le regole di produzione applicabili sono quelle il cui antecedente può fare matching con la memoria di lavoro (F-rules).
Ogni volta che una regola viene selezionata ed eseguita nuovi fatti dimostrati vengono inseriti nella memoria di lavoro.
Il procedimento termina con successo quando nella
memoria di lavoro viene inserito anche il goal da dimostrare (condizione di terminazione).Algoritmo Base
while <obiettivo non raggiunto> do
begin
<MATCH: determina l'insieme delle regole
applicabili (cio_e le regole il cui
antecedente _e soddisfatto dai fatti
contenuti nella memoria di lavoro)>;
<CONFLICT_RESOLUTION: seleziona la regola
da applicare>;
<FIRE: esegui l'azione associata
alla regola>;
end;Ecco il processo di inferenza schemattizato nel seguente flow-chart:


Esempio Forward Chaining
Regole:
R1: Y and D → Z
R2: X and B and E → Y
R3: A → X
R4: C → L
R5: L and M → N
Fatti: A B C D ERegole applicabili: R3,R4
2. Applichiamo R3 (preferenza alla regola con indice piu’ basso); R3 non potra’ piu’ essere usata
3. Fatti: A B C D E X
4. Regole applicabili: R2,R4
5. Applichiamo R2
6. Fatti: A B C D E X Y
7. Regole applicabili: R1,R4
8. Applichiamo R1
9. Fatti: A B C D E X Y Z
10. Regole applicabili: R4
11. Applichiamo R4
12. Fatti: A B C D E X Y Z L
13. stopConflict resolution
• Ordine lessicografico (e.g., R3 prima di R6)
• Attirubuire valori di priorita’ alle regole
• Preferire le regole piu’ dettagliate (e.g., quelle con una precondizione piu’ restrittiva)
• Preferire le regole inserite piu’ recentemente
• Metaregole: regole che impongono un ordine sulle regole. E.g., preferire le regole espresse da esperti `piu’ vecchi’Possibili Estensioni
1. Teoria dei Fattori di certezza (si asserisce una conclusione che e’ vera con una certa probabilita’)
2. Ragionamento probabilistico (principalmente basato sul teorema di Bayes)
3. Regole fuzzy. E.g., SE il carico della lavatrice e’ leggero ALLORA usa poca acquaEsempio:
Si consideri un sistema esperto che contiene le seguenti regole:
R1) SE piove ALLORA erba_bagnata
R2) SE piove ALLORA tetto_bagnato
R3) SE innaffiatore_acceso ALLORA erba_bagnata
R4) SE tetto_bagnato ALLORA acqua_in_garageE i seguenti fatti:
F1) pioveApplichiamo le modalità di ragionamento forward per sapere se è vero che c’è acqua in garage (cioè l’affermazione acqua_in_garage è verà).
Nel caso di più regole applicabili, scegliamo di applicare per prima la regola con indice più basso (cioè R2 sarà eseguita prima di R5).
Forward chaining
La memoria di lavoro contiene solo un’informazione: piove.
Cerchiamo una regola che abbia una corrispondenza (matching) con un fatto (ne abbiamo uno solo per ora).
Ci sono due regole applicabili: R1 e R2. Applichiamo R1 e inseriamo nella memoria di lavoro il fatto erba_bagnata. La regola R1 non sarà più considerata.
Cerchiamo ora altre regole applicabili: dati i fatti (piove e erba_bagnata), rimane solo R2 che ha una corrispondenza. Applichiamo R2 e aggiungiamo alla memoria di alvoro il fatto tetto_bagnato.
Ripetiamo il procedimento. Dati i fatti correnti e l’eliminazione delle regole R1 e R2, possiamo applicare solo la regola R4 che cio permette di inserire nella memoria di lavoro il fatto acqua_in_garage.
Lascia un Commento
Link consigliati
Categorie
- Actionscript 3 – Trucchi e Segreti (9)
- Algoritmi e Programmazione Avanzata (3)
- Analisi di Basi di Dati (10)
- Assembler 8086 (2)
- Base di dati (1)
- Codifiche (1)
- Data Mining (4)
- E-learning (4)
- Flash (9)
- Grafica 3D (1)
- HTML5 (1)
- Intelligenza Artificiale (1)
- Lego Mindstorms NXT (6)
- Linguaggio C++ (1)
- Linux (8)
- Microsoft Office (7)
- news (1)
- Objective C (4)
- PHP (9)
- Progetti Politecnico (12)
- Programmazione ad Oggetti (Java) (1)
- Programmazione in C (16)
- Realtà Aumentata (1)
- Red5 (6)
- Seminari (3)
- SEO (3)
- Server (3)
- Sicurezza dei Sistemi Informatici (17)
- Siti Amici (1)
- Strategia e Innovazione (19)
- Tecnologie delle Basi di Dati (2)
- Utilità (11)
- web design (2)
Articoli Recenti
- Come creare una UILabel da codice senza utilizzare Interface Builder in Objective-c
- Tool per testare il codice PHP online
- LMS – An Elearning Platform with Online activation and 5 free users forever
- LMS – Piattaforma di E-learning gratis per i primi 5 utenti….
- Gli Active Record di Yii: un design pattern per rappresentare le tabelle del database in un modo orientato agli oggetti.
- Come creare un pulsante dinamicamente in Objective-c – Iphone SDK
- Actionscript 3 versus Objective-C: vediamo le principali differenze a livello di sintassi del codice
- Firewall: IP Tables un esempio su Linux
- Una piccola introduzione al framework php Yii (Yes It Is!) – installazione e creazione di una semplice applicazione web 2.0
- NetBeans IDE: JVM Creation Failed vediamo come risolverlo
- I sistemi esperti basati su regole
- I protocolli in Objective C sono molto simili alle interfacce di Java
- 19 – Strategia e Innovazione – Benefici della diversificazione: matrice BGC
- 18 – Strategia e Innovazione – Scelta del tempo di ingresso nel mercato – I FIRST MOVER
- 17 – Strategia e Innovazione – I mercati “WINNER TAKE ALL”
Tags
Acrobat Writer Gratis
Actionscript 3
addEventListener
API disegno flash
appunti del corso di strategia e innovazione
AS3
Audio Streaming
Cancellare un'immagine da un PDF
cicli ed iterazioni in c
context free grammar
esercitazioni svolte in linguaggio c
esercitazioni svolte sui trigger oracle
esercizi svolti assembler 8086
eventi in actionscript 2
eventi in actionscript 3
file system linux
Formati Video HTML5
forward-chaining
gestione della memoria dinamica in c
gestione delle liste in c
getURL
Guida Visual Basic For Application - VBA
HTML5
indicizzare un sito sui motori
jflex
LEGO MINDSTORMS NXT 2.0 - BLUETOOTH - C#
linguaggi e traduttori
Modificare un file PDF
moveTo
navigateToURL
Oracle Database 10g Express Edition
Primo programma in c
programmare robot
root
scelte ed alternative in c
setChildIndex
streaming real time
swapDepths
TextField buttonMode
vettori in c
video in as2
video in as3
Video Streaming
XML
XMLList