Documente Academic
Documente Profesional
Documente Cultură
Curs 7 IA 2011-2012
Curs 7 IA 2011-2012
CURS 7
4.4.1 Introducere
Atunci când trebuie rezolvate probleme complexe, este deseori necesar să generăm planuri
foarte lungi, de sute de acţiuni. În abordarea prezentată anterior aceasta pune probleme pentru
că numărul de entităţi manipulate creşte foarte mult.
Ne putem gândi la utilizarea unei abordări alternative, numită ierarhizată, care constă în
neglijarea într-o primă etapă a tuturor detaliilor astfel încât să se obţină o soluţie globală.
Această soluţie generală este de fapt un schelet abstract al planului alcătuit din macro-acţiuni,
adică acţiuni care nu sunt direct exectabile. Aceste macro-acţiuni urmează să fie detaliate
până când se va obţine un plan alcătuit din acţiuni primitive, acţiuni elementare executabile.
Abordarea ierarhizată va crea planuri de nivel din ce în ce mai scăzut, deci din ce în ce mai
detaliat. La fiecare nivel, conflictele vor fi detectate şi rezolvate, ceea ce va permite
micşorarea de fiecare dată a spaţiului soluţiilor şi deci evitarea creşterii masive a
combinaţiilor posibile. Abordarea ierarhizată va lucra deci cu mai multe reprezentări, de
nivele de abstractizare diferite pentru planul de acţiuni; acestă abordare nu ordonează
acţiunile decât în măsura în care aceasta permite evitarea conflictelor. Această strategie de
ordonare parţială a acţiunilor plasează abordarea ierarhizată în grupul generatoarelor neliniare
în măsura în care mai multe secvenţe paralele de acţiuni pot exista în planul primitiv.
4.4.2 NOAH
Pentru a concretiza vom examina un sistem ierarhizat numit NOAH (Network Of Actions
Hirarchies). Intrarea în NOAH este un plan de nivel n (1 este nivelul cu cea mai mare
abstractizare posibilă) şi ieşirea lui este un plan detaliat de nivel (n+1). Planul (n+1) face
obiectul unei detecţii şi rezolvări de eventuale conflicte. Macro-acţiunile sunt detaliate, de la
un anumit nivel la altul, utilizând game operatorii care sunt numite aici funcţii SOUP
(Semantics Of User’s Problem). Vom aplica modul de lucru al sistemului NOAH la lumea de
cuburi din situaţia nerezolvată optimal în precedentul paragraf.
Figura 4.13
Această gamă operatorie poate poate fi citită în următoarea manieră: pentru a face un bloc x
accesibil, este suficient să se facă accesibil blocul y care se găseşte pe el şi din punerea lui y
pe masă. Se va remarca caracterul recursiv al definiţiei.
LIBER(x)
prin:
(macro-acţiune) PE(x, y)
LIBER(y) (acţiune primitivă)
(macro-acţiune)
Figura 4.14
Această gamă semnifică următoarele: pentru a avea x pe y este suficient să se facă accesibile
x şi y şi să se aşeze x peste y. Cum nu există nici un motiv, în acest stadiu, de a realiza
LIBER(x) înaintea lui LIBER(y), cele două macro-acţiuni sunt propuse în paralel.
Obiectivul este în cazul nostru PE(a, b) & PE(b, c) (vezi figura 4.11)
PE(a, b)
PE(b, c)
Figura 4.15
LIBER(a)
PE(a, b)
LIBER(b)
LIBER(b)
PE(b, c)
LIBER(c)
Figura 4.16
macro-acţiunile de detaliat
acţiunile primitive
LIBER(a)
PE(a, b)
LIBER(b)
LIBER(b)
PE(b, c)
LIBER(c)
Figura 4.17
Cele două acţiuni fantomă sunt reduntante; una dintre ele poate fi suprimată. Se ajunge deci
după o analiză critică la nivelul 2 (după analiza critică) ca în figura 4.18:
LIBER(a)
PE(a, b)
LIBER(b)
PE(b, c)
LIBER(c)
Figura 4.18
LIBER(b) PE(a,b)
PE(b, c)
LIBER(c)
Figura 4.19
Apare din nou un conflict de precedenţă, de data aceasta între PE(c, masă) şi PE(b, c). Soluţia
propusă de NOAH este aceea din figura 4.20:
PE(a, b)
LIBER(b)
PE(b, c)
LIBER(c)
Figura 4.20
Reapare acum redundanţa între două acţiuni. În final se obţine nivelul 3 (după analiza critică)
ca în figura 4.21:
Figura 4.21
Planul nu conţine decât acţiuni fantomă sau primitive. Este deci executabil. El constă din:
PE(c, masă)
PE(b, c)
PE(a, b)
După ce a fost dezvoltat un plan de acţiuni este util ca el să fie memorat pentru a fi eventual
utilizat în alte acţiuni similare. Pentru a-l memora este nevoie de o modalitate de reprezentare
şi ulterior ar trebui încercată o generalizare a lui astfel încât să crească pe cât posibil la
maximum aria lui de utilizare.
Vom relua exemplul anterior din paragraful 4.3. Planul de acţiune era:
eliberează(b, a)
pune_deasupra(b, d)
apucă(c)
pune_deasupra(c, a)
0 Stare iniţială A1
1 (Lista liniei Lista adăugărilor
precedente)- lui A1
A2
- (retragerile A1)
2 (Lista liniei (Lista liniei Lista
precedente)- precedente)- adăugărilor lui
- (retragerile A2) - (retragerile A2) A2
An
n (Lista liniei (Lista liniei (Lista liniei Lista
precedente)- precedente)- precedente)- adăugărilor
- (retragerile An) - (retragerile An) - (retragerile An) lui An
0 1 n
Figura 4.22
Elementul (0, 0) conţine descrierea stării iniţale a problemei. Elementul (1, 0) este obţinut
retrăgând din (0, 0) lista retragerilor lui A1. Elementul (1, 1) este alcătuit din lista adăugărilor
lui A1. Prin consecinţă, linia 1 reprezintă starea curentă după aplicarea acţiunii A1. Rezultatul
aplicării lui A2 este dat de linia A2. Linia n reflectă prin urmare o stare acceptabilă ca soluţie
finală.
EFECTOR_LIBER
0 LIBER(b) eliberează(b, a)
PE(b, a)
1 LIBER(d) pune_deasupra(b, d)
ŢINE(b)
LIBER(c) EFECTOR_LIBER
2 apucă(c)
PE_MASĂ(d)
LIBER(a) ŢINE(C)
3 pune_deasupra(c, a)
PE_MASĂ(a) PE(b, d) EFECTOR_LIBER
4 PE_MASĂ(d) LIBER(b) PE(c, a)
LIBER(c)
0 1 2 3 4
Figura 4.24
Pentru a simplifica într-o anumită măsură reprezentarea planului se vor reţine în liniile lui
numai predicatele care sunt precondiţii ale acţiunilor; în linia 4 vom reţine numai predicatele
care figurează la specificarea obiectivului atins. Se obţine atunci ca mai sus în figura 4.23. Se
defineşte în acest stadiu nucleul de rang i ca fiind submulţimea alcătuită din liniile situate sub
(şi inclusiv) linia i şi din coloanele situate la stânga (şi inclusiv) coloana i. În tabelul din
figura 4.24 s-a delimitat cu linie dublă nucleul de rang 1.
Nucleul de rang i conţine de fapt toate precondiţiile cerute pentru aplicarea sub-planului Ai+1,
Ai+2…….An, aici: pune_deasupra(b, d), apucă(c), pune_deasupra(c, a).
Se poate imagina punerea în practică a unor poceduri de execuţie a unor planuri mai
inteligente.
La început ştim că planul este aplicabil dacă predicatele din nucleul de rang 0 decurg logic din
starea curentă.
Să presupunem că acţiunea Ai tocmai a fost executată. Pentru ca ceea ce urmează din plan să
poată fi executat trebuie ca nucleul de rang i să decurgă logic din starea produsă. Mai degrabă
decât să se efectueze acest test se poate cerceta nucleul de rang maxim care decurge logic din
starea curentă astfel încât să se profite de orice incident care ne-ar apropia de scopul propus.
În acestă procedură nu se replanifică decât dacă nu se găseşte nici un nucleu care să decurgă
logic din starea curentă. Acest tip de procedură se numeşte repararea planului.