Sei sulla pagina 1di 87

Fondamenti di Intelligenza Artificiale

Planning

Alfredo Milani & Tom Lenaerts

Pag.1
Planning

• Planning: dominio e problema


• Ricerca nello Spazio degli Stati
• Ricerca nello Spazio dei Piani(Partial-
order planning)
• Il Planning graph
• Pianificazione in logica proposizionale
• Analisi degli approcchi al planning

Pag.5
AI 1
juni
200
Cos’e’ il Planning
Un problema di planning P=(I,O,G)
Dato uno stato iniziale I e un insieme di operatori
O , generare una “sequenza” di azioni (istanze di
operatori O) che se eseguite a partire da I
raggiungono uno stato che verifica il goal G

Problemi di Pianificazione Classica: totalmente


osservabile, finito deterministico, statico e discreto.
Applicazioni reali
– Progettazione e produzione manufacturing
– Operazioni militari, logistica
– giochi
– Esplorazione spaziale, sottomarina
3

Pag.5
AI 1
juni
200
Esempio: comprare latte, banane e un
trapano elettrico

Pag.4
Domini Reali: difficoltà

Supponiamo di avere un agente che utilizza


un qualche metodo di ricerca…
– Quali azioni sono rilevanti?
– Ricerca esaustiva vs. ricerca backward
– Qual’e’ una buona funzione euristica?
– Buona stima del costo dello stato?
– Euristiche Problem-dependent vs, Problem-independent
– Come decomporre il problema?
– La maggior parte dei problemi reali sono quasi
decomponibili. (HTM Hierarchical Task network Planning(

Pag.5
AI 1
juni
200
I sistemi di pianificazione:
1) “aprono” le rappresentazioni degli stati, delle azioni e
del goal per permettere una selezione
2) rilassare la condizione che la soluzione `e una sequenza
lineare di azioni e non viene necessariamente costruita a par-
tire dallo stato iniziale
3) divide-et-impera mediante “subgoaling”

Pag.6
Linguaggio di Pianificazione

Un buon linguaggio di planning dovrebbe…


– Sufficientemente espressivo per esprimere una
ampia varietà di problemi.
– Sufficientemente restrittivo per utilizzare metodi
algoritmici efficienti.
– L’algortimo di planning dovrebbe sfruttare la
struttura logica del problema.
STRIPS, ADL, PDDL

Pag.5
AI 1
juni
200
STRIPS

Pag.8
Caratteristiche generali del linguaggio

Rappresentazione degli stati


Il mondo è descritto da condizioni logiche che
rappresentano uno stato come una congiunzione di
letterali positivi
– Letterali proposizionali: Poor ∧ Unknown
– Letterali-FirstOrder (ma ground/istanziati e function-free):
At(Plane1, Melbourne) ∧ At(Plane2, Sydney)
– Closed world assumption (tutto cio’ che non è affermato è
negato)
Rappresentazione dei goal
– Stati parzialmente specificati e rappresentati come un
congiunzione di letterali positivi
– Un goal è soddisfatto se lo stato contiene tutti i letterali nel goal

Pag.5
AI 1
juni
200
Notazione Grafica

Pag.10
Caratteristiche generali del linguaggio

Rappresentazione delle Azioni


– Azione = PRECONDIZIONI + EFFETTI
Action(Fly(p,from, to),
PRECOND: At(p,from) ∧ Plane(p) ∧ Airport(from) ∧ Airport(to)
EFFECT: ¬AT(p,from) ∧ At(p,to))
- Schema di azione o operatore, che deve essere istanziato
p, from, to
– Nome Azione e lista dei parametri
– Precondizioni (congiunzione di letterali positivi)
– Effetti (congiunzione di letterali P è True, not P è False)
– Rappresentazione Effetti STRIPS-like tramite
Add-list, delete-list in Effect

11

Pag.5
AI 1
juni
200
Semantica: eseguibilità

Gli stati sono modificati dall’esecuzione delle azioni

– Una azione è applicabile/eseguibile in qualsiasi


stato che soddisfa le sue precondizioni condizioni.
– La esecuzione di operatori FO coinvolge una
sostituzione θ delle variabili in PRECOND.
At(P1,JFK) ∧ At(P2,SFO) ∧ Plane(P1) ∧ Plane(P2) ∧ Airport(JFK) ∧
Airport(SFO)
Soddisfa : At(p,from) ∧ Plane(p) ∧ Airport(from) ∧ Airport(to)
With θ ={p/P1,from/JFK,to/SFO}
Quindi l’azione è applicabile.

12

Pag.5
AI 1
juni
200
Semantica: esecuzione

Il risultato dell’esecuzione di una azione a in uno


stato s è uno stato s’ tale che:
– s’ è uguale ad s eccettuato che
– Ogni letterale positivo P negli effetti di a aggiunto a s’
– Ogni letterla negativo ¬P è rimosso da s’
EFFECT: ¬AT(p,from) ∧ At(p,to):
At(P1,SFO) ∧ At(P2,SFO) ∧ Plane(P1) ∧ Plane(P2) ∧ Airport(JFK) ∧
Airport(SFO)

– STRIPS assumption: (evita il “frame problem”, inerzia


logica)
Ogni letterale NON menzionato negli effetti resta immodificato

13

Pag.5
AI 1
juni
200
Espressività ed Estensioni

STRIPS è semplice
– Un limite: uso di lettterali function-free
– Ammette una rappresentazione proposizionale
(I simboli di funzione portano ad infiniti stati ed azioni)

Action Description language (ADL)


Action(Fly(p:Plane, from: Airport, to: Airport),
PRECOND: At(p,from) ∧ (from ≠ to)
EFFECT: ¬At(p,from) ∧ At(p,to))

PDDL (Planning domain definition language): linguaggio


standardizzato per benchmark e planning competition

14

Pag.5
AI 1
juni
200
PDDL Esempio

Pag.15
Esempio: Blocks world

Init(On(A, Table) ∧ On(B,Table) ∧ On(C,Table) ∧ Block(A) ∧ Block(B) ∧ Block(C) ∧


Clear(A) ∧ Clear(B) ∧ Clear(C))
Goal(On(A,B) ∧ On(B,C))
Action(Move(b,x,y)
PRECOND: On(b,x) ∧ Clear(b) ∧ Clear(y) ∧ Block(b) ∧ (b≠ x) ∧ (b≠ y) ∧ (x≠ y)

EFFECT: On(b,y) ∧ Clear(x) ∧ ¬ On(b,x) ∧ ¬ Clear(y))


Action(MoveToTable(b,x)
PRECOND: On(b,x) ∧ Clear(b) ∧ Block(b) ∧ (b≠ x)
EFFECT: On(b,Table) ∧ Clear(x) ∧ ¬ On(b,x))

Spurious actions are possible: Move(B,C,C)

16

Pag.5
AI 1
juni
200
Esempio: air cargo transport

Init(At(C1, SFO) ∧ At(C2,JFK) ∧ At(P1,SFO) ∧ At(P2,JFK) ∧ Cargo(C1) ∧


Cargo(C2) ∧ Plane(P1) ∧ Plane(P2) ∧ Airport(JFK) ∧ Airport(SFO))
Goal(At(C1,JFK) ∧ At(C2,SFO))
Action(Load(c,p,a)
PRECOND: At(c,a) ∧At(p,a) ∧Cargo(c) ∧Plane(p) ∧Airport(a)
EFFECT: ¬At(c,a) ∧In(c,p))
Action(Unload(c,p,a)
PRECOND: In(c,p) ∧At(p,a) ∧Cargo(c) ∧Plane(p) ∧Airport(a)
EFFECT: At(c,a) ∧ ¬In(c,p))
Action(Fly(p,from,to)
PRECOND: At(p,from) ∧Plane(p) ∧Airport(from) ∧Airport(to)
EFFECT: ¬ At(p,from) ∧ At(p,to))

[Load(C1,P1,SFO), Fly(P1,SFO,JFK), Load(C2,P2,JFK), Fly(P2,JFK,SFO)]


17

Pag.5
AI 1
juni
200
Esempio: Spare tire problem

Init(At(Flat, Axle) ∧ At(Spare,trunk))


Goal(At(Spare,Axle))
Action(Remove(Spare,Trunk)
PRECOND: At(Spare,Trunk)
EFFECT: ¬At(Spare,Trunk) ∧ At(Spare,Ground))
Action(Remove(Flat,Axle)
PRECOND: At(Flat,Axle)
EFFECT: ¬At(Flat,Axle) ∧ At(Flat,Ground))
Action(PutOn(Spare,Axle)
PRECOND: At(Spare,Groundp) ∧¬At(Flat,Axle)
EFFECT: At(Spare,Axle) ∧ ¬At(Spare,Ground))
Action(LeaveOvernight
PRECOND:
EFFECT: ¬ At(Spare,Ground) ∧ ¬ At(Spare,Axle) ∧ ¬ At(Spare,trunk)
∧ ¬ At(Flat,Ground) ∧ ¬ At(Flat,Axle) )

Questo esempio estende STRIPS: letterali negativi nelle precondizioni (ADL)

18

Pag.
AI 1
Planning Spazio degli Stati: una
definizione formale
Un problema di planning è definito da una quadrupla
(F,S,I,O,G) dove
F è un insieme di fluenti booleani
S è un insieme di stati,uno stato è una funzione
s:F→{T,F},
I è uno stato iniziale,
G è una funzione parziale G:F→{T,F}
O è un insieme di operatori o∈O che trasformano
stati in stati, dove π(o) precondizioni e ε(o) sono
insieme di letterali in F (fluenti affermati o negati)

Pag.19
Planning Spazio degli Stati: una
definizione formale
o∈∈O è eseguibile in s, se ∀f∈π(o) s(f)=T e
∀¬f∈π(o) s(f)=F
Exec: S× →S è la funzione che da la semantica
×O→
dell’eseguibilità
Exec(s,o)=s’ è definita solo se o è eseguibile in s,
s‘ è tale che s’(f)= T se f ∈ε(o)
s’(f)= F se ¬f ∈ε(o)
s’(f)=s(f) altrimenti
un piano è una sequenza o1;o2;…;on

Pag.20
Planning Spazio degli Stati: una
definizione formale
•un piano è una sequenza p={o1;o2;…;on}
•un piano p è eseguibile in uno stato s0 se
a)o1 è eseguibile in s0, sia s1=exec(s0,o1)
b)oi+1 è eseguibile in exec(si-1,oi)
sp=exec(sn-1,on) è lo stato finale
risultante dall’esecuzione del piano
•un piano p è soluzione per un problema
(F,S,I,O,G) se p è eseguibile in I e se
∀g∈G sp (g)=T ∀¬g∈G sp(g)=F
Pag.21
Planning: ricerca nello
spazio degli stati
Possibili sia ricerca in avanti (forward) che
all’indietro(backward )
Progression planners
– forward state-space search
– Considerare gli effetti di tutte le possibili
azioni in uno stato dato (FF= Fast Forward)
Regression planners
– backward state-space search
– Per raggiungere un goal si suppone di aver
eseguire una azione in uno stato che in cui
l’azione era eseguibile.
22

Pag.
AI 1
Progressione / regressione

23

Pag.
AI 1
Planning: ricerca nello spazio degli stati

Formulazione come ricerca nello spazio degli stati:


– Stato Iniziale = stato iniziale del problema di planning
– I letterali non menzionati sono falsi (CWA)
– Operatori/Azioni:
– Goal test = verifica del soddisfacimentodel goal nello stato
– Step cost = ogni azione costa 1 (Classical Planning)
Senza funzioni ogni algoritmo di ricerca su grafo completo è un
algoritmo di planning completo.
– Ad es. A*
Inefficente:
– (1) scelta di azioni irrilevanti
– (2) necessità di buone euristiche per ricerca efficente

Pag.24
Algoritmo di Regressione

Come determinare gli stati predecessori?


– Quali sono gli stati da cui applicare una data azione conduce al
goal?
Goal state = At(C1, B) ∧ At(C2, B) ∧ … ∧ At(C20, B)
Azioni rilevanti per il primo congiunto: Unload(C1,p,B)
Necessità che le precondizioni di unload siano soddisfatte.
Stato precedente= In(C1, p) ∧ At(p, B) ∧ At(C2, B) ∧ … ∧ At(C20, B)
Il sottogoal At(C1,B) è stato eliminato.
Le azioni non devono disfare letterali desiderati (consistente)
Vantaggio principale: considerare solo azioni rilevanti.
– In pratica spesso un branching factor minore della ricerca in
avanti.

25

Pag.5
AI 1
juni
200
Algoritmo di Regressione

Processo generale per la costruzione dello stato predecessore:


– Data la descrizione di una congiunzione di goal G
– Sia A una azione rilevante e consistente
– Si calcoli il predecessore a partire dallo “stato” G come segue:
– Ogni effetto positivo di A che appare in G è cancellato.
– Ogni precondizione di A viene aggiunta al predecessore a meno che
non vi sia già.
Può essere applicato qualsiasi algoritmo di search.
Viene clacolata a ritroso una catena di predecessori
Terminazione: quando uno stato predecessore è soddisfatto
dallo stato iniziale.

26

Pag.5
AI 1
juni
200
Euristica per la ricerca state-space

Nessuna è efficiente senza una buona euristica


– Quante azioni sono necessarie per raggiungere il goal?
– La soluzione esatta è NP hard, trovare una buona stima
Esempi di euristiche ammissibili:
– Soluzione ottima del problema rilassato
– Rimuovere tutte le precondizioni delle azioni
– Rimuovere soltanto gli effetti negativi delle azioni
– Assunzione della indipendenza dei sottogoal:
Il costo per risolvere una congiunzione di sottogoal è
approssimativamente la somma de costi per risolvere I sottoproblemi
indipendentemente.

27

Pag.5
AI 1
juni
200
Ricerca nello Spazio dei Piani: Partial Order Planning

Progression e regression planning cercano


piani totalmente ordinati.
– Non traggono vantaggio dalla decomposizione del
problema.
– Prendono decisioni su come sequenzializzare le azioni su
tutti i sottoproblemi
Stategia Least commitment (minimo
impegno):
– Ritardare il più possibile le scelte non necessarie
durante la ricerca

28

Pag.5
AI 1
juni
200
Shoe example

Goal(RightShoeOn ∧ LeftShoeOn)
Init()
Action(RightShoe, PRECOND: RightSockOn
EFFECT: RightShoeOn)
Action(RightSock, PRECOND:
EFFECT: RightSockOn)
Action(LeftShoe, PRECOND: LeftSockOn
EFFECT: LeftShoeOn)
Action(LeftSock, PRECOND:
EFFECT: LeftSockOn)

Planner: combinare due sequenze di azioni (1)leftsock, leftshoe


(2)rightsock, rightshoe

29

Pag.5
AI 1
juni
200
Partial-order planning(POP)
Le azioni del piano sono un insieme parzialmente ordinato
L’ordine parziale può essere reso totale in vari modi, al
momento dell’esecuzione

30

Pag.5
AI 1
juni
200
POP come problema di search
States sono piani eventualmente incompleti
– Il piano iniziale è vuoto, o contiene al più due azioni
convenzionali:
– Start con precond nulle ed effetti uguali allo stato iniziale del
problema di planning e Finish che segue Start ed ha come
precond i goal del problema.
Ogni piano ha 4 componenti:
– Un insieme di azioni (i passi del piano)
– Un insieme di vincoli di ordinamento: A < B (A before B)
– I cicli rappresentano una contraddizione.
p
– Un insieme di vincoli causali A
 →B
Il piano non può essere esteso aggiungendo una nuova azione
C in conflitto con i link causali (Es. L’effetto di C è ¬p e C può essere
eseguito tra A e B)
– Un insieme di precondizioni aperte/open preconditions.
– Precondizioni non ancora raggiunte nel piano (senza link causali).
31

Pag.5
AI 1
juni
200
Esempio: piano finale

Actions={Rightsock, Rightshoe, Leftsock, Leftshoe, Start,


Finish}
Orderings={Rightsock < Rightshoe; Leftsock < Leftshoe}
Links={Rightsock->Rightsockon -> Rightshoe, Leftsock-
>Leftsockon-> Leftshoe, Rightshoe->Rightshoeon->Finish, …}
Open preconditions={}

32

Pag.5
AI 1
juni
200
POP come problema di search

Una soluzione è un piano consistente e completo.


Una precondizione ò soddisfatta sse `e l’effetto di un
passo precedente e nessun passo che si puo
intromettere lo vanifica.
Un piano è completo sse tutte le precondizioni sono
soddisfatte
Un piano è consistente se i vincoli di ordinamento ed
i legami sono coerenti(non contraddittori).

Pag.33
POP come problema di search
Un piano è consistente se e solo se non ci
sono cicli nei vincoli di ordinamento e non ci
sono conflitti nei link causali.
Un piano consistente senza precondizioni
aperte è un piano soluzione.
Un piano partial order viene eseguito
scegliendo iterativamente una delle possibili
azioni successive
– Questa flessibilità di esecuzione è un vantaggio in
ambienti imprevedibili o non cooperativi
(robustezza)
34

Pag.5
AI 1
juni
200
Risolvere il POP

Assumiamo problemi di planning


proposizionale:
– Il piano iniziale contiene Start e Finish, il vincolo di
ordinamento Start < Finish, nessun causal link,
tutte le precondizioni in Finish sono aperte.
– Funzione Successore :
– prendere una open precondition p di una azione B e
– Generare un piano successore per ogni possibile modo
consistente di scegliere una azione A che raggiunge p.
(aggiungere casual link consistenti, aggiungere nuove Azioni)
– Test del goal
35

Pag.5
AI 1
juni
200
Mantenere la consistenza

Quando genero il piano successore:


– Il link causale A->p->B e il vincolo di
ordinamento A < B vengono aggiunti al piano.
– Se A è nuovo: aggiunti start < A and A < B to the plan
– e le precondizioni di A all’insieme delle Open
preconditions
– Risolvi conflitti tra i nuovi causal link e tutte le
azioni esistenti (promotion/demotion)
– Risolvi conflitti tra l’azione A (se nuova) e tutti i
causal links esistenti.
36

Pag.5
AI 1
juni
200
POP
I meta-operatori costruiscono piani parziali:
– Aggiungendo link causali a condizioni aperte del piano
corrente
– Aggiungendo un nuovo passo/azione per raggiungere una
open condition.
– Ordinando tra loro le azioni per rimuove possibili conflitti
POP si muove gradualmente da piani
vaghi/incompleti verso piano corretti e completi
Backtracking: quando una open condition è
irraggiungibile o un conflitto è irrisolubile.

37

Pag.5
AI 1
juni
200
Esempio: banana,latte,trapano

Pag.38
Esempio: banana,latte,trapano

Pag.39
Esempio: banana,latte,trapano

Pag.40
Esempio: errore

Pag.41
Minacce, promotion, demotion

Una minaccia `e un passo che


potenzialmente interviene distruggendo
le condizioni raggiunte da un link
causale,
Es. Go(Home) minaccia At(HWS):
I

Pag.42
Esempio: banana,latte,trapano

Pag.43
Minacce, promotion, demotion

Pag.44
Esempio: prima ferramenta

Pag.45
Esempio: banana,latte,trapano

Pag.46
Esempio: banana,latte,trapano

Pag.47
Shakey

Pag.48
Esempio: la Ruota di Scorta

Init(At(Flat, Axle) ∧ At(Spare,trunk))


Goal(At(Spare,Axle))
Action(Remove(Spare,Trunk)
PRECOND: At(Spare,Trunk)
EFFECT: ¬At(Spare,Trunk) ∧ At(Spare,Ground))
Action(Remove(Flat,Axle)
PRECOND: At(Flat,Axle)
EFFECT: ¬At(Flat,Axle) ∧ At(Flat,Ground))
Action(PutOn(Spare,Axle)
PRECOND: At(Spare,Groundp) ∧¬At(Flat,Axle)
EFFECT: At(Spare,Axle) ∧ ¬Ar(Spare,Ground))
Action(LeaveOvernight
PRECOND:
EFFECT: ¬ At(Spare,Ground) ∧ ¬ At(Spare,Axle) ∧ ¬ At(Spare,trunk) ∧ ¬ At(Flat,Ground) ∧ ¬
At(Flat,Axle) )

49

Pag.5
AI 1
juni
200
Soluzione del Problema

Piano Iniziale: Start cong gli EFFECTS e Finish con PRECOND.

50

Pag.5
AI 1
juni
200
Soluzione del Problema

Piano Iniziale: Start con EFFECTS e Finish con PRECOND.


Prendi una open precondition: At(Spare, Axle)
E’ applicabile solo PutOn(Spare, Axle)
PutOn(Spare, Axle) At(Spare,Axle
Aggiungi un link causale:  )→ Finish
Aggiungi il vincolo : PutOn(Spare, Axle) < Finish

51

Pag.
AI 1
Soluzione del Problema

Prendi una open precondition : At(Spare, Ground)


Applicabile solo Remove(Spare, Trunk)
Aggiungi causal Re move(Spare,Trunk) At(Spare,Ground
link:    )→ PutOn(Spare, Axle)
Aggiungi constraint : Remove(Spare, Trunk) < PutOn(Spare,Axle)

52

Pag.5
AI 1
juni
200
Soluzione del Problema

Prendi una open precondition : ¬At(Flat, Axle)


LeaveOverNight e’ applicabile
conflitto: LeaveOverNight ha anche effetto ¬ At(Spare,Ground)
Re move(Spare,Trunk) At(Spare,Ground
   )→ PutOn(Spare, Axle)
To resolve, add constraint : LeaveOverNight < Remove(Spare, Trunk)

53

Pag.5
AI 1
juni
200
Soluzione del Problema

Prendi una open precondition : At(Spare, Ground)


LeaveOverNight e’ applicabile
¬At(Spare,Ground )
conflitto: LeaveOverNight      → PutOn(Spare, Axle)
Pe risolvere, aggiungi constraint : LeaveOverNight < Remove(Spare,
Trunk)
Aggiungi causal link:
Re move(Spare,Trunk) At(Spare,Ground
   )→ PutOn(Spare, Axle)
54

Pag.5
AI 1
juni
200
Risolvere il problema

Prendi una open precondition : At(Spare, Trunk)


Soltanto Start e’ applicabile
Start At(Spare,Trunk)
Aggiungi causal link:   → Re move(Spare,Trunk)
Conflitti: del casual link con l’effetto At(Spare,Trunk) in LeaveOverNight
– Nessuna soluzione con re-ordering e’ possibile.
backtrack

55

Pag.5
AI 1
juni
200
Solving the problem

Rimuovi LeaveOverNight, Remove(Spare, Trunk) ed i


causal link
Ripeti il passo Remove(Spare,Trunk)
Aggiungi anche RemoveFlatAxle e finisci

56

Pag.5
AI 1
juni
200
Qualche dettaglio …

Cosa cambia se vene usata una rappresentaizone first-order


che include le variabili?
– Complica il processo di rilevare e risolvere i conflitti.
– Può essere risolta introducendo vincoli di disuguaglianza.

Il criterio CSP della most-constrained-variable potrebbe essere


utilizzato da algoritmi di planning per scegliere una PRECOND.

57

Pag.5
AI 1
juni
200
Planning graphs

Utilizzati per fare stime euristiche migliori.


Una soluzione puo’ anche essere estratta
direttamente dal grafo(es. algoritmo GRAPHPLAN).
Consiste di una sequenza di livelli che
corrispondono a dei time step del piano.
– il Livello 0 e’ lo stato iniziale.
– Ogni livello consiste di un insieme di letterali ed un
insieme di azioni.
– Letterali = tutti quelli che potrebbero essere veri in un time
step, dipendono dalle azioni eseguite nel time step precedente.
– Azioni = tutte quelle azioni che potrebbero avere le
precondizioni soddisfatte in un dato time step, in dipendenza di
quei letterali che valgono davvero.

58

Pag.5
AI 1
juni
200
Planning graphs

“potrebbero essere vere/eseguibili”?


– Registra soltanto un sottinsieme ristretto di possibili interazioni
negative tra le azioni.
Lavorano solo per problemi proposizionali (estensione a
numerical planning , Poggioni).
Esempio:
Init(Have(Cake))
Goal(Have(Cake) ∧ Eaten(Cake))
Action(Eat(Cake), PRECOND: Have(Cake)
EFFECT: ¬Have(Cake) ∧ Eaten(Cake))
Action(Bake(Cake), PRECOND: ¬ Have(Cake)
EFFECT: Have(Cake))

59

Pag.5
AI 1
juni
200
Esempio Torta (Cake)

Start a livello S0 e determina il livello A0 ed il successivo livello S1.


– A0 >> tutte le azioni le cui precondizioni sono soddisfatte nel livello precedente.
– Connetti precondizione ed effetti delle azioni S0 --> S1
– La “non azione” “non far nulla” e’ rappresentato da azioni di persistenza o
“noop”.
Il livello A0 contiene le azioni che potrebbero aver luogo
– I conflitti tra azioni sono rappresentate dai link di mutex(mutua esclusione)

60

Pag.5
AI 1
juni
200
Esempio Torta (Cake)

Il livello S1 contiene tutti I letterali che potrebbero risultare dal


prelevare ogni sottinsieme di azioni di A0
– Conflitti tra letterali che non possono avvenire assieme sono rappresentati da
mutex links.
– S1 definisce stati multipli ed i mutex links sono vincoli definiti su questo insieme
di stati.
Continua sino a quanto due livelli consecutivi sono identici:
leveled off
– O contengono lo stesso insieme di letterali (spiegato in seguito)

61

Pag.5
AI 1
juni
200
Esempio Torta (Cake)

Si stabilisce una relazione mutex tra due azioni quando:


– Effetti Inconsistenti effects: una azione nega gli effetti dell’altra.
– Interferenza: uno degli effetti di una azione nega le precondizioni dell-altra.
– Risorse in competizione: una delle precondizioni di una delle azioni e’ in mutua esclusione con le
precondizioni dell’altra.
Una relazione mutex vale tra due letterali quando (supporto inconsistente):
– se uno e’ la negazione dell’altro OPPURE
– Se ogni possibile coppia di azioni che potrebbe raggiungere i letterali e’ in mutex.

62

Pag.5
AI 1
juni
200
PlanGraph e stime euristiche

PlanGraph fornisce informazioni sul problema


– Un letterale che non appare nel livello finale del grafo non puo-
essere raggiunto da alcun piano.
– Utile nel caso di backward search (cost = inf).
– Il livello in cui un letterale appare puo’essere usato come stima
del costo del raggiungimento di un qualsiasi letterale goal =
livello costo.
– Problemi piccoli: piu’ azioni allo “stesso tempo”
– Restringersi ad una sola azione con i serial PG (aggiungere i link mutex
tra ogni coppia di azioni eccetto le azioni di persistenza).
– Costo della congiuzione dei goal? Euristiche Max-level, sum-
level and set-level.
il PG (PlanGraph) rappresenta un problema rilassato.

63

Pag.5
AI 1
juni
200
L’algoritmo GRAPHPLAN

Estrazione della soluzione direttamente dal PlanGraph

function GRAPHPLAN(problem) return solution or failure


graph ← INITIAL-PLANNING-GRAPH(problem)
goals ← GOALS[problem]
loop do
if goals all non-mutex in last level of graph then do
solution ← EXTRACT-SOLUTION(graph, goals, LENGTH(graph))
if solution ≠ failure then return solution
else if NO-SOLUTION-POSSIBLE(graph) then return failure
graph ← EXPAND-GRAPH(graph, problem)

64

Pag.5
AI 1
juni
200
Esempio: la Ruota di Scorta

Init(At(Flat, Axle) ∧ At(Spare,trunk))


Goal(At(Spare,Axle))
Action(Remove(Spare,Trunk)
PRECOND: At(Spare,Trunk)
EFFECT: ¬At(Spare,Trunk) ∧ At(Spare,Ground))
Action(Remove(Flat,Axle)
PRECOND: At(Flat,Axle)
EFFECT: ¬At(Flat,Axle) ∧ At(Flat,Ground))
Action(PutOn(Spare,Axle)
PRECOND: At(Spare,Groundp) ∧¬At(Flat,Axle)
EFFECT: At(Spare,Axle) ∧ ¬At(Spare,Ground))
Action(LeaveOvernight
PRECOND:
EFFECT: ¬ At(Spare,Ground) ∧ ¬ At(Spare,Axle) ∧ ¬ At(Spare,trunk) ∧ ¬ At(Flat,Ground) ∧ ¬
At(Flat,Axle) )

Questo esempio usa una descrizione estesa (ADL) rispetto a STRIPS con eltterali negativi

65

Pag.5
AI 1
juni
200
GRAPHPLAN Esempio

Inizialmente il piano consiste di 5 letterali dallo stato iniziale e dai letterali


ricavati per CWE (S0).
Aggiungere azioni le cui precondizioni sono soddisfatte da EXPAND-GRAPH (A0)
Aggiungi anche le azioni di persistenza e relazioni mutex.
Aggiungere gli effetti a livello S1
Ripetere sino a che il goal compare in un qualche Si
66

Pag.5
AI 1
juni
200
GRAPHPLAN example

EXPAND-GRAPH cerca anche le relazioni mutex


– Effetti inconsistenti
– Es,. Remove(Spare, Trunk) and LeaveOverNight due to At(Spare,Ground) and not At(Spare,
Ground)
– Interferenza
– Es. Remove(Flat, Axle) and LeaveOverNight At(Flat, Axle) as PRECOND and not At(Flat,Axle) as
EFFECT
– Risorse in competizione
– E.g. PutOn(Spare,Axle) and Remove(Flat, Axle) due to At(Flat.Axle) and not At(Flat, Axle)
– Supporto Inconsistente
– E.g. in S2, At(Spare,Axle) and At(Flat,Axle)

67

Pag.5
AI 1
juni
200
GRAPHPLAN example

In S2, the goal literals exist and are not mutex with any other
– Solution might exist and EXTRACT-SOLUTION will try to find it
EXTRACT-SOLUTION can use Boolean CSP to solve the problem or a search
process:
– Initial state = last level of PG and goal goals of planning problem
– Actions = select any set of non-conflicting actions that cover the goals in the state
– Goal = reach level S0 such that all goals are satisfied
– Cost = 1 for each action.

68

Pag.5
AI 1
juni
200
GRAPHPLAN example

Termination? YES
PG are monotonically increasing or decreasing:
– Literals increase monotonically
– Actions increase monotonically
– Mutexes decrease monotonically
Because of these properties and because there is a finite number of actions
and literals, every PG will eventually level off !

69

Pag.5
AI 1
juni
200
Pag.
Planning Approcci compilativi

problema
PDDL

Planner
Piano

failure

Pag.
Planning Approcci compilativi

Blackbox Planner

problema istanza C’ di Solutore


PDDL encoding classe C
altra
classe di Soluzione C’
Problemi
C

Piano mapping
al piano

failure

Pag.
Planning con la logica
proposizionale
Si puo’ pianificare dimostrando teoremi nel
situation calculus.

Testare la soddisfacibilita’ di una formula


logica
initial state ∧ all possible action descriptions ∧ goal
il problema di planning ha una soluzione se
e solo se la formula corrispondente sara’
insoddisfacibile fino ad un fissato time-
step.
73

Pag.5
AI 1
juni
200
Planning con la logica
proposizionale
• Un simbolo proposizionale per ogni possibile occorrenza di
azioni ed ogni possibile fatto ad ogni possibile time step,
ogni fatto dello stato iniziale, ogni goal,
• le leggi della semantica delle azioni.
initial state ∧ all possible action descriptions ∧ goal

– Un modello “soluzione” assegnera’ vero alle variabili


proposizionali corrispondenti alle azioni/fatti/goal che sono
parte del piano corretto e falso alle altre
– Un assegnamento che corrisponde ad un piano scorretto non
non sara’ un modello poiche’ in contrasto con l’asserzione
che il goal e’ vero.

74

Pag.5
AI 1
juni
200
SATPLAN algorithm

function SATPLAN(problem, Tmax) return solution or failure


inputs: problem, a planning problem
Tmax, an upper limit to the plan length
for T= 0 to Tmax do
cnf, mapping ← TRANSLATE-TO_SAT(problem, T)
assignment ← SAT-SOLVER(cnf)
if assignment is not null then
return EXTRACT-SOLUTION(assignment, mapping)
return failure

75

Pag.5
AI 1
juni
200
cnf, mapping ← TRANSLATE-TO_SAT(problem, T)

Proposizioni distinte per le asserzioni per ogni time step.


– Gli apici indicano i time step
At(P1,SFO)0 ∧ At(P2,JFK)0
– No CWA si specificano quali proposizioni non sono vere
¬At(P1,SFO)0 ∧ ¬At(P2,JFK)0
– Proposizioni sconosciute sono lasciate non specificate.
Il goal e- associato con un particolare time=step
– Ma quale? Sino a che punto fare l’encoding

76

Pag.5
AI 1
juni
200
cnf, mapping ← TRANSLATE-TO_SAT(problem, T)

Come determinare il time step in cui


sara’raggiunto il goal?
– Inizia per T=0
– Afferma At(P1,SFO)0 ∧ At(P2,JFK)0
– Fallimento .. Try T=1
– Afferma At(P1,SFO)1 ∧ At(P2,JFK)1
–…
– RIPETI sino al raggiungimento del goal.
– La terminazione e’ assicurata da Tmax
77

Pag.5
AI 1
juni
200
cnf, mapping ← TRANSLATE-TO_SAT(problem, T)

Come codificare le azioni in logica


proposizionale(PL)?
– Assioma stato successore, versione proposizionale
At(P1,JFK)1 ⇔
(At(P1,JFK)0 ∧ ¬(Fly(P1,JFK,SFO)0 ∧ At(P1,JFK)0))∨
(Fly(P1,SFO,JFK)0 ∧ At(P1,SFO)0)
Tale assioma e’ richiesto per ciascun aereo,
aereoporto e time step
– Se piu’ aereoporti aggiungono altri modi di viaggiare, allora
sono necessari altri disgiunti
Una volta tutti gli assiomi sono formulati, l’algoritmo per la
soddisfacibilita puo’ iniziale a cercare un piano.

78

Pag.5
AI 1
juni
200
assignment ← SAT-SOLVER(cnf)

Si possono trovare modelli multipli


Non sono soddisfatti: (for T=1)
Fly(P1,SFO,JFK)0 ∧ Fly(P1,JFK,SFO)0 ∧ Fly(P2,JFK.SFO)0
La seconda azione e’ inammissibile

Evitare azioni “illegali”: assiomi pre-condition


initialFly(P1,SFO,JFK)
state ∧ all possible action descriptions ∧ goal1
0 ⇒ At(P1,JFK)

Esattamente un modello soddisfa ora tutti gli assiomi, il goal e-


raggiunto in quel modello per T=1.

79

Pag.5
AI 1
juni
200
assignment ← SAT-SOLVER(cnf)

Un aereo puo’ volare su due destinazioni allo stesso


tempo
Non sono soddisfatti: (per T=1)
Fly(P1,SFO,JFK)0 ∧ Fly(P2,JFK,SFO)0 ∧ Fly(P2,JFK.LAX)0
La seconda azione e’ inammissibile
Il piano consente ancora relazioni spurie
Evitare soluzioni spurie: assiomi di esclusione di azioni
¬(Fly(P2,JFK,SFO)0 ∧ Fly(P2,JFK,LAX))
Previene azioni simultanee
Perde flessibilita’ poiche il piano risulta totalmente ordinato:le
azioni non possono avvenire contemporaneamente.
– Restringe l’esclusione alle precondizioni

80

Pag.5
AI 1
juni
200
BlackBox: basato su sat

Blackbox Planner

problema Formula Satsolver


PDDL encoding CNF DP
Modello
(assegnamento)
randSAT

Piano Mapping
back
Walksat
failure

Pag.
Pianificazione Risorse tramite MIP
Rappresentazione del modello di Pianificazione
numerica tramite problema di programmazione
lineare intera mista (mixed integer/linear) di:
-vincoli logici
-vincoli numerici

1. Input in PDDL da cui viene generato un


2. Plangraph esteso con risorse e numerical parameters
3. Encoding come problema MIP
4. Soluzione tramite MIP solver (Es.ILOG)
5. Mapping della soluzione e generazione del piano

Pag.
Programmazione lineare mista

Programmazione Intera

problema MIP
encoding MIP
PDDL Solver(Ilog)
soluzione

Piano Mapping
back

failure

Pag.
Planning by Planning

Programmazione Intera

problema PDDL Any classical


PDDL encoding (classical) Planner
ESTESO
soluzione

Piano Mapping
back

failure

Pag.
Progetti di Fondamenti AI

• Un Pop planner per classical PDDL


• Schedulatore di attività con durata e
con uso di risorse
continue/discrete/riusabili
• Compilatore di piani con task/goal
temporali
• Compilatore di piani multiagente in
classical planning

Pag.85
Progetti di Fondamenti AI

• Derivatore di formule proposizionali


• SAT Solver
• PSO Particle Swarm Optimization, una
implementazione per caso discreto
• CSP per il problema dell’orario
• GA per il problema dell’orario
• Gioco della Sicurezza Informatica
(attaccante/difensore)
Pag.86
Progetti di Fondamenti AI
• Scribbler: automa programmabile un algoritmo online
per uscire da un labirinto

• Ricerca A* di un termine a partire da una pagina web


usando euristiche di “similarita’
semantica”(tassonomia)

• Esplorazione di una voce Youtube e raggruppamento


per similarita’ semantica dei link consigliati
(tassonomia)

Pag.87

Potrebbero piacerti anche