4.5 Design del motore di regole
4.5.2 Rules Layers
Nell’esperimento condotto su persone fisiche venivano attribuiti dei valori di impor- tanza, delle priorità, ad ogni social cue; priorità che di conseguenza sono state inserite anche negli algoritmi del robot, ovvero quelle funzioni che calcolavano lo score di ogni soggetto della scena nel precedente modello attentivo procedurale. Questo algoritmo infatti assegnava un peso ad ogni social cue, modificabile tramite un’interfaccia grafica, e solo in questo modo si poteva intervenire sul comportamento del robot, dando più o meno rilevanza a una social cue anziché un’altra.
Come già discusso nel paragrafo del precedente capitolo che trattava l’utilizzo della salience all’interno di CLIPS (vedi 3.6.3), è altamente sconsigliato per noi, utilizzando un motore di regole, forzare o gestire manualmente la priorità delle singole regole, quindi eviteremo di farlo. Sarà invece applicato il metodo, presentato nella stessa sezione, della costruzione di strati di regole (Rules Layers).
Analizziamo dunque i tre strati con cui si è deciso di suddividere la struttura del
brain. Ogni layer corrisponde a un set di regole (Rules Set) caratterizzato da un
determinato valore di Salience esplicitamente dichiarato nella loro definizione.
Analyzing Rule Set | (Salience = 100) Questo è il set con la massima priorità, contiene quindi quelle regole che ci si aspetta vengano poste in cima all’Agenda. Le regole relative a questo layer non portano ad azioni che il robot deve effettuare, piuttosto servono a innescare un ragionamento che conduca alla generazione di nuovi fatti. Queste regole verificano i dati ricevuti dai servizi sottostanti (primary facts) e sono responsabili dell’inferenza logica che porta alla creazione di fatti di un maggior livello di astrazione (secondary facts). Avviene in pratica quel passaggio che Antonio Damasio descrive parlando di cognizione primaria e secondaria. Qui è come se imponessimo al robot “prima di cominciare a ragionare sul da farsi, guardati intorno,
e capisci qual’è la situazione”.
I secondary facts generati dall’Analyzing Rule Set possono rimanere in memoria, arricchendo la conoscenza che il robot ha del mondo circostante, ma soprattutto possono innescare l’attivazione di interi set di regole dello strato successivo attraverso il metodo dei dummy facts. Questo metodo consiste nell’utilizzare la creazione dei fatti per innescare una catena di attivazioni. I dummy facts non sono rivolti solamente a un accrescimento della conoscenza del robot, anzi, possono anche non essere affatto utili alla Working Memory, tanto che spesso vengono eliminati nel momento stesso in cui vengono usati (per questo vengono definiti dummy). Essi servono principalmente
68 CAPITOLO 4. DESIGN DEL SISTEMA COGNITIVO
per gestire il percorso decisionale del motore di regole. Vengono asseriti nel Right Hand Side di una regola e sono presenti nel Left Hand Side di una o più regole. Questo crea una catena logica e una struttura composta da blocchi di regole che vengono attivate solo in seguito alla creazione di questi fatti.
Un classico esempio di regole appartenenti a questo layer sono le presence rules, regole che analizzano i dati della meta-scena per verificare la presenza o meno di certe categorie di soggetti, creando secondary facts come (children_presence) o (female_presence)4.
Una regola implementata nel brain, come si vedrà in seguito, è relativa alla prima domanda che deve porsi il robot: “sono solo o c’è qualcuno intorno a me?”. Dalla quale scaturirà la generazione del fatto (tracking_is on) o (tracking_is off), a seconda della presenza o meno di soggetti nella scena, che innescano tutta una serie di regole e stati d’animo conseguenti.
Planning Rule Set | (Salience 0) La salienza di queste regole non viene asse- gnata, il che per CLIPS equivale ad assegnare una Salience pari a zero. Questo set di regole occupa quindi una posizione centrale nella stratificazione della struttura, e comprende quelle regole che, sulla base dei fatti primari ricevuti dai sensori e quelli secondari prodotti dall’Analyzing Rule Set, prendono le decisioni sulle azioni che il robot dovrà compiere. Come si vedrà non sono loro a far partire l’esecuzione delle
CLIPS Actions, ma si limitano a modificare continuamente dei Templates in cui si
trovano le informazioni per i comandi da eseguire.
Fanno parte di questo set le look rules, le regole del modello di attenzione implementato nella mente del robot, che rappresentano quel processo decisionale il cui scopo è stabilire, non solo a chi rivolgere l’attenzione, ma anche quale espressione inscenare in base alla motivazione che ha scaturito il richiamo dell’attenzione del robot.
Executing Rule Set | (Salience -10) Dopo aver analizzato il mondo circostante deducendone informazioni secondarie, aver pianificato le azioni da compiere, ed elaborati gli stati d’animo scaturiti dal contesto, non resta che esprimere queste sensazioni ed eseguire le azioni pianificate. Questo è il compito del layer esecutivo, imposto come ultimo strato della struttura del brain grazie al valore di salienza negativo dichiarato nella definizione delle sue regole.
4.5. DESIGN DEL MOTORE DI REGOLE 69
Fig. 4.3: Rappresentazione grafica della struttura stratificata del brain.
Una regola dell’Executing Rule Set sarà la regola look_at_winner, ovvero “guarda il vincitore”. Al suo interno troveremo la chiamata delle funzioni Clips Actions che dettano l’espressione che il robot deve fare e il punto che deve raggiungere con lo sguardo. Questi ordini saranno impartiti simultaneamente al blocco dell’attuazione che li eseguirà .
Una rappresentazione grafica di questa struttura è riportata nella figura 4.3. Bisogna però capire che questi strati non hanno una corrispondenza reale e non costituiscono una struttura rigida e precedurale (stiamo pur sempre parlando di programmazione a eventi). L’unica cosa che possiamo affermare è che il brain verificherà in prima istanza i patterns del LHS delle regole dello strato a salienza più alta, per poi passare alla verifica delle condizioni delle regole con minore priorità; ma nel caso, ad esempio, che le azioni eseguite da una regola appartenente al Planning
Rule Set producessero un fatto che comporta l’attivazione di una regola dell’Analyzing Rule Set, la regola in questione sarebbe immediatamente attivata e disposta in Agenda
secondo la Conflict Resolution Strategy corrente, al pari di tutte le altre regole del sistema.
Capitolo 5
Implementazione del codice
A questo punto abbiamo chiarito la struttura e il funzionamento, non solo dell’ar- chitettura complessiva (capitolo 2), ma in particolare del Sistema Cognitivo e del motore di regole su cui questo si basa (capitoli 3 e 4). Possiamo quindi discutere la vera e propria implementazione del codice, la scrittura di quel motore di regole che determina i meccanismi del “cervello” del robot.
All’interno di questo capitolo verranno analizzate nel dettaglio tutte le parti che costituiscono il codice del motore di regole integrato nel Sistema Cognitivo di FACE. Si rende comunque disponibile una lettura del codice completo e senza interruzioni in appendice a questa tesi (App. B).
5.1
Premessa
Nel capitolo precedente è stato spiegato il meccanismo del caricamento dei moduli all’interno del blocco cognitivo tramite l’interfaccia Interactive Clips (vedi 4.4). Si è visto anche che questo caricamento significa, non solo acquisire le informazioni che si trovano nel modulo, ma anche tutta la parte di codice CLIPS scritta nel file init.clp relativo a quel modulo. Premesso che le regole scritte in questo file verranno automaticamente definite nel motore di regole generale del brain, ovvero
Clips Engine, e che al momento l’unico modulo caricato nel brain è l’Attention Module,
se ne deduce che tutto il codice qui riportato, e che costituirà il motore di regole, equivale esattamente al contenuto del file init.clp dell’Attention Module. In base a questa semplice premessa è chiaro che i primi due comandi da lanciare dall’interfaccia
iClips per il corretto funzionamento del brain saranno i seguenti:
72 CAPITOLO 5. IMPLEMENTAZIONE DEL CODICE
Codice 5.1: Inizializzazione del brain
( r e q u i r e " A t t e n t i o n M o d u l e " ) ( r e s e t )
Dove il primo comando corrisponde al caricamento dell’Attention Module e delle regole definite nell’init.clp, mentre il secondo, ovvero (reset) garantisce la definizione di tutti i deftemplate e deffacts descritti nel seguito.