Pianificazione STRIPS basata su grafi

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Teoria e Tecniche del Riconoscimento
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
Lezioni di Astronomia 3- Le stelle Bologna 8 aprile 2010
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Frontespizio Economia Monetaria Anno Accademico
Generazione di Piani attraverso Grafi di Pianificazione
Training On Line – CONA. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Annuali > Nuova Richiesta Si accede alla pagina di Richiesta.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
I MATEMATICI E IL MONDO DEL LAVORO
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
HDM Information Design notation v.4. HDM Information Design.
Programmazione 1 9CFU – TANTE ore
TIPOLOGIA DELLE VARIABILI SPERIMENTALI: Variabili nominali Variabili quantali Variabili semi-quantitative Variabili quantitative.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Concurrency: introduction1 ©Magee/Kramer Semantica operazionale di FSP Consideriamo i costrutti FSP e diamo la loro traduzione in Reti SA.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Constraints.
Componenti dell’architettura Oracle
Contatore: esempio di circuito sequenziale
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Ricerca di una chiave: Search(x, k) if x == nil or k == x.key return x
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Melfi, 1 aprile 2011 – MediaShow 1 Social Network: possibilità di uso consapevole nella didattica Uso, consapevolezza, opportunità, proposte Caterina Policaro.
CORSO TECNICO R.C.A. ELABORATO PERITALE
Presentazione Finale Team 2 1. Decomposizione in sottosistemi 2.
22 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ore 10:00.
Microsoft Access Maschere.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Laurea Magistrale in CHIMICA INDUSTRIALE GUIDA INTERATTIVA ALLISCRIZIONE posizionare correttamente il mouse e premere sulla freccia solo quando compare.
Modulo 1 bis Menù Incolla Esercitazione Un computer è quasi umano, a parte il fatto che non attribuisce i propri errori a un altro computer. (Anonimo)
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
INTERNET Internet è una rete a livello mondiale che permette alle persone di comunicare ed ad accedere a banca dati da qualunque parte del mondo e su qualunque.
Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa La mia scuola ha un sito Web: modelli per la qualità dei siti (Ingegneria del Web)
INTERNET Antonio Papa Classe 2^ beat I.S.I.S. G. Meroni a.s. 2007/2008.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
(1) Sistemi Operativi Prof. P. Cattaneo ufficio: L Ricevimento: Martedì14.00 –
Calibrating (Partial Equilibrium) Mathematical Programming Spatial Models Open questions … (filippo arfini) III Workshop PUE&PIEC - Treia (Mc), 3-4 febbraio.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Corso di Web Services A A Domenico Rosaci Patterns di E-Business D. RosaciPatterns per l'e-Business.
-17 Aspettative economiche – Europa Settembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +6 Indicatore.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
Collection & Generics in Java
Dynamic SQL.
1 Acceleratori e Reattori Nucleari Saverio Altieri Dipartimento di Fisica Università degli Studi - Pavia
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Partial Order Planning (POP)
Partial Order Planning (POP)
Transcript della presentazione:

Pianificazione STRIPS basata su grafi Graph-based Planning Pianificazione STRIPS basata su grafi Michele Lombardi <michele.lombardi2@unibo.it>

La lezione/esercitazione di oggi Pianificazione basata su grafi & derivati Approccio “pratico”: presentazione di pianificatori Graphplan Planning graph Pianificazione come ricerca sul planning graph Blackbox Ricerca nel planning graph come problema di soddisfacimento FF (Fast Forward) Ricerca su planning graph come euristica (ne parleremo a lungo) (accenni) (accenni)

Pianificazione basata su grafi Graphplan Pianificazione basata su grafi

Graphplan Perché Graphplan? La pianificazione basata su grafi nasce con Graphplan! Cos’è Graphplan? E’ un pianificatore per problemi tipo STRIPS introdotto da Blum & Furst (CMU) nel 1995 Basato su una struttura dati detta planning graph, che viene espansa ad ogni passo dell’algoritmo Pianificazione come ricerca sul planning graph Graphplan

Graphplan Un po’ di caratteristiche Introduce esplicitamente il fattore tempo nella costruzione di un piano E’ completo e produce sempre il piano più corto possibile Esegue early commitment (come i pianificatori lineari) Produce piani parzialmente ordinati (come per i pianificatori non lineari – partial order) Graph plan usa la Closed World Assumption quindi rientra nella categoria dei pianificatori off line Graphplan

Pianificazione STRIPS like Le azioni si rappresentano come quelle di STRIPS con PRECONDIZIONI ADD LIST DELETE LIST E’ implicitamente definita una azione no-op che non modifica lo stato (ha come precondizione qualunque predicato e come effetto lo stesso) Stato = oggetti + insieme di predicati Gli oggetti hanno un tipo (typed)! Graphplan

Planning graph Il planning graph è un grafo diretto a livelli: i nodi sono raggruppati in livelli gli archi connettono nodi a livelli adiacenti. Il planning graph alterna: Proposition levels, contenenti proposition nodes Action levels, contenti action nodes Il livello 0 corrisponde allo stato iniziale (è un proposition level) Gli archi si dividono in: Archi precodizione (proposition → action) Archi add (action→ proposition) Archi delete (action→ proposition) Graphplan

t=0 t=1 t=2 t=3 A Add arc + Add Precond - Delete Delete arc no-op Precond Precond Proposition level Action level Proposition level A un certo time step si può inserire una azione se al time step precedente sono presenti le sue precondizioni Le azioni fittizie “no-op” traslano le proposizioni di un time step al successivo (soluzione al frame problem) Graphplan

Planning graph Ogni action level contiene tutte le azioni che sono applicabili in quel time step vincoli che specificano quali coppie di azioni non possono essere eseguite contemporaneamente (inconsistenze o mutue esclusioni) Ogni proposition level contiene: Tutte le proposizioni del livello precedente (attraverso i no- ops) Gli add-effects delle azioni dell’action level precedente NOTA: il processo di costruzione del planning graph non prevede che si faccia alcuna scelta per selezionare le azioni che costruiscono il piano. Graphplan

Inconsistenze Durante la costruzione del planning graph vengono individuate eventuali inconsistenze, in particolare Due azioni possono essere inconsistenti nello stesso time step Due proposizioni possono essere incosistenti nello stesso time step In questo caso le azioni/proposizioni sono mutuamente esclusive Non possono comparire insieme in un piano Ma possono comparire nello stesso livello nel planning graph Graphplan

Inconsistenze Inconsistenza tra azioni: Interferenza (interference): una azione nega un effetto o una precondizione di un’altra ex. L’azione move(part,dest) ha come effetto not at(part) mentre l’azione no-op su at(part) ha questo come effetto ex. L’azione move(part,dest) ha come effetto not at(part) mentre l’azione no-op su at(part) ha questo come precondizione Requisiti in competizioni (competing needs): due azioni hanno precondizioni mutuamente esclusive ex. L’azione load(carico,mezzo) ha come precondizione in(carico, mezzo) mentre l’azione unload(carico, mezzo) ha come precondizione not in(carico, mezzo) Graphplan

Inconsistenze Due proposizioni sono mutuamente esclusive: Se sono uno la negazione del’altro Inconsistenze sul dominio ex. esistono regole quali ad esempio il fatto che un oggetto non può trovarsi in due luoghi contemporaneamente in uno stesso time step. Se tutti i possibili modi per raggiungerli coinvolgono azioni mutuamente esclusive Graphplan

Costruzione del planning graph Algoritmo per la costruzione passo a passo del planning graph: INIZIALIZZAZIONE: Tutte le proposizioni vere nello stato iniziale sono inserite nel primo proposition level CREAZIONE DI UN ACTION LEVEL: operatore ogni modo di unificare le sue precondizioni a proposizioni non mutuamente esclusive nel livello precedente, inserisci un action node Per ogni proposizione nel proposition level precedente, inserisci un operatore no-op Identifica le relazioni di mutua esclusione tra gli operatori appena costruiti Graphplan

Costruzione del planning graph Algoritmo per la costruzione passo a passo del planning graph: CREAZIONE DI UN PROPOSITION LEVEL: Per ogni action node nel action level precedente, aggiungi le proposizioni nella sua add list tramite archi non tratteggiati Per ogni “no-op” nel livello precedente, aggiungi la proposizione corrispondente Per ogni action node nel action level precedente, collega proposizioni nella sua delete list tramite archi tratteggiati Marca come esclusive due proposizioni tali per cui tutti i modi per raggiungere la prima siano incompatibili con tutti i modi per raggiungere la seconda. Graphplan

Un esempio classico (rivisitato!) 1. Due soggetti da trasportare 2. Un luogo di partenza 3. Un carrello motorizzato 4. Un luogo di destinazione Graphplan

Un esempio classico (rivisitato!) Un luogo di destinazione Graphplan

Un esempio classico (rivisitato!) Azioni: MOVE(R, PosA, PosB) PRECONDIZIONI: at(R,PosA), hasFuel(R) ADD LIST: at(R,PosB) DELETE LIST: at(R,PosA), hasFuel(R) LOAD(Oggetto, R, Pos) PRECONDIZIONI: at(R,Pos), at(Oggetto,Pos) ADD LIST: in(R,Oggetto) DELETE LIST: at(Oggetto,Pos) UNLOAD(Oggetto, Pos) PRECONDIZIONI: in(R,Oggetto), at(R,Pos) ADD LIST: at(Oggetto,Pos) DELETE LIST: in(R,Oggetto) Graphplan

Un esempio classico (rivisitato!) Tipi, stato, goal: OGGETTI: carrello: Carriola (c) oggetti: Bud (b), Terence (t) locazioni: Lunapark (l), HQ del Capo (chq) STATO INIZIALE: at(b,l) at(t,l) at(c,l) hasFuel(c) GOAL: at(b, chq) at(t, chq) Graphplan

NOTA: alcune azioni sono omesse per rendere il grafo più comprensibile Per ogni operatore/proposizione ad ogni time step viene calcolata una lista di mutua esclusione at(c,h) in(b,c) in(t,c) at(b,l) at(t,l) at(c,l) hasFuel(c) move(c,l,h) load(b,l) load(t,l) in(t,c) at(c,h) unload(b,h) unload(t,h) at(b,h) at(t,h) in(b,c) load(t,l) load(b,l) move(c,l,h) at(b,l) at(b,l) at(t,l) at(c,l) hasFuel(c) at(t,l) at(c,l) hasFuel(c) NOTA: alcune azioni sono omesse per rendere il grafo più comprensibile Graphplan

Esercizio Vediamo la costruzione del grafo in azione Scaricare graphplan dal sito del corso http://www.lia.deis.unibo.it/Courses/AI/applicationsAI2008 -2009/Lucidi/Xesercitazioni/graphplan.gentoo.zip Decomprimere l’archivio unzip graphplan.gentoo.zip Eseguire graphplan (o graphplan –h) ops file: cart.gp.ops fact file: cart.gp.facts Livello di informazioni (opzione –i da riga di comando) 0: il piano e poco più 1: grafo e passi della ricerca 2: grafo e liste di mutua esclusione Graphplan

Estrazione di un piano Valid plan un sottografo connesso e consistente del planning graph Azioni allo stesso time step del valid plan possono essere eseguite in qualunque ordine (non interferiscono) Proposizioni allo stesso time step del valid plan sono non mutuamente esclusive L’ultimo time step contiene tutti i letterali del goal e questi non sono marcati come mutuamente esclusivi Graphplan

Teoremi Se esiste un piano valido allora questo è un sottografo del planning graph. In un planning graph due azioni sono mutuamente esclusive in un time step se non esiste un valid plan che le contiene entrambe. In un il planning graph due proposizioni sono mutualmente esclusive in un time step se sono inconsistenti ossia una nega carsi dell’altra. Conseguenza importante: Le inconsistenza trovate dall’algoritmo permettono di eliminare strade nell’albero di ricerca Graphplan

Un esempio di valid plan in(t,c) in(t,c) in(t,c) load(t,l) unload(t,h) at(t,h) load(t,l) in(b,c) in(a,c) in(b,c) load(b,l) unload(a,h) load(b,l) at(b,h) at(c,h) at(c,h) at(c,h) move(c,l,h) move(c,l,h) move(c,l,h) at(b,l) at(b,l) at(b,l) at(b,l) at(t,l) at(t,l) at(t,l) at(t,l) at(c,l) at(c,l) at(c,l) at(c,l) hasFuel(c) hasFuel(c) hasFuel(c) hasFuel(c) load(t,l) load(a,l) Graphplan

Graphplan: algoritmo function GRAPHPLAN(problema): grafo = GRAFO_INIZIALE(problema) obiettivi = GOAL(problema) loop do: if obiettivi non mutex nell’ultimo step: Sol = ESTRAI_ SOLUZIONE(grafo, obiettivi) if sol Sol  fail: return Sol else if LEVEL_OFF(grafo): return fail grafo = ESPANDI_GRAFO(grafo, problema) Il primo nodo contiene il planning graph iniziale. Questo contiene solo un time step (proposition level) con le proposizioni vere nello stato iniziale. Il grafo iniziale è estratto da GRAFO_INIZIALE(problema) Graphplan

Graphplan: algoritmo Il goal da raggiungere è estratto dalla funzione GOAL(problema) Se gli obiettivi sono non mutuamente esclusivi nell’ultimo livello il planning graph potrebbe contenere un piano, ossia un valid plan. Il valid plan è estratto da ESTRAI_SOLUZIONE(grafo, obiettivi) che fornisce una soluzione o un fallimento Si procede livello dopo livello per meglio sfruttare i vincoli di mutua esclusione Metodo ricorsivo: dato un insieme di goals a tempo t si cerca un insieme di azioni a tempo t-1 che abbiano tali goals come add effects. Le azioni devono essere non mutuamente esclusive. La ricerca è ad albero, ibrida breadth/depth first e completa Graphplan

Graphplan: algoritmo Memoization (non è un errore tipografico!) Se ad un certo step della ricerca si determina che un sottoinsieme di goals non è soddisfacibile, graphplan salva questo risultato in una hash table. Ogni volta che lo stesso sottoinsieme di goals verrà selezionato in futuro quel ramo di ricerca fallirà automaticamento Graphplan

Esercizio Vediamo la ricerca di un valid plan in azione Eseguire graphplan (o graphplan –h) ops file: cart.gp.ops fact file: cart.gp.facts Guardate gli step del processo di ricerca variando il livello di informazione Provate a disabilitare l’individuazione delle mutue esclusioni: cosa vi aspettate che succeda? Cosa succede realmente? Riuscite a vedere quando la memoization viene utilizzata? In quali casi questo succede per l’esempio considerato? Graphplan

Blackbox Unificare pianificazione basata su grafi e pianificazione come soddisfacibilità

SATPLAN SATPLAN Nel 92 Selman e Kautz introducono un approccio alla pianificazione basato sulla ricerca di un assegnamento di variabili logiche indicanti una selezione di azioni che soddisfi una serie di vincoli, piuttosto che sulla deduzione APPROCCIO DEDUTTIVO (ex. situation calculus) Data una serie di regole di deduzione in first order logic... ...e un insieme di fluent inizialmente validi... ...si cerca di dedurre i goals Questo approccio non può essere modellato direttamente come problema di soddisfacimento di vincoli. A causa di un certo numero di problemi... Blackbox

SATPLAN Le regole di deduzione sono generali (ex. sono parametriche, quantificate universalmente) x, y: clear(x,s)  clear(y,s)  on(x,y,move(x,y,s))  clear(x,move(x,y,s)) ...ma si applicano ad un numero finito di oggetti! Potremmo introdurre una variabile logica per ogni possibile unificazione di una azione con le sue precondizioni clear(b1,s)  clear(b2,s)  move(b1,b2,s)  on(b1,b2,move(b1,b2,s))  clear(b1, move(b1,b2,s)) clear(b1,s)  clear(b3,s)  move(b1,b3,s)  on(b1,b3,move(b1,b3,s))  clear(b1, move(b1,b3,s)) ... VARIABILE Blackbox

SATPLAN Le regole di deduzione sono ricorsive clear(b1,s)  clear(b2,s)  move(b1,b2,s)  on(b1,b2,move(b1,b2,s))  clear(b1, move(b1,b2,s)) ...ma a noi interessano piani con un numero finito di azioni! Potremmo introdurre una variabile logica per ogni possibile unificazione di una azione con le sue precondizioni ad ogni time step. clear(b1,t0)  clear(b2,t0)  move(b1,b2,t0)  on(b1,b2,t1)  clear(b1, t1) clear(b1,t1)  clear(b3,t1)  move(b1,b2,t1)  on(b1,b3,t2)  clear(b1, t2) ... Blackbox

SATPLAN Le regole possono ammettere soluzioni spurie perché “falso” implica qualunque cosa. Ex. Se “move” viene selezionata ed uno dei “clear” è falso, gli effetti possono essere ancora veri! clear(b1,t0)  clear(b2,t0)  move(b1,b2,t0)  on(b1,b2,t1)  clear(b1, t1) ...ma precondizioni ed effetti possono essere trattati in modo simmetrico: move(b1,b2,t0)  clear(b1,t0)  clear(b2,t0)  on(b1,b2,t1)  clear(b1, t1) Blackbox

SATPLAN → BLACKBOX Con questi accorgimenti, per un certo numero di time step k: problema = variabili logiche + vincoli logici() piano = un assegnamento delle variabili logiche SAT (SATisfiability problem): data una formula logica, trovare un assegnamento consistente delle sue variabili. Esistono risolutori molto efficienti per SAT. SATPLAN nella sua prima versione effettuava questa conversione con k crescente, e risolveva il problema mediante un SAT solver. BLACKBOX (Selman, Kautz 1999) migliora l’approccio costruendo mano a mano un planning graph, e convertendo il planning graph in un problema SAT. Blackbox

Blackbox: algoritmo function BLACKBOX(problema): grafo = GRAFO_INIZIALE(problema) obiettivi = GOAL(problema) loop do: if obiettivi non mutex nell’ultimo step: converti il grafo in un problema SAT Sol = RICERCA(problema SAT, risolutore) if sol Sol  fail: return Sol else if LEVEL_OFF(grafo): return fail grafo = ESPANDI_GRAFO(grafo, problema) Rispetto a graphplan cambia solo il modo di fare ricerca (e la conversione, chiaramente) Si può usare qualunque SAT solver, o anche graphplan stesso Blackbox

Esercizio Scaricare balckbox dal sito del corso http://www.lia.deis.unibo.it/Courses/AI/applicationsAI2008 -2009/Lucidi/Xesercitazioni/blackbox.gentoo.zip Decomprimere l’archivio unzip blackbox.gentoo.zip Eseguire blackbox (viene visualizzato l’help) Blackbox risolve problemi specificati in PDDL (Planning Domain Definition Language). E’ abbastanza intuitivo, ma una guida breve è comunque disponibile su: http://www.ida.liu.se/~TDDA13/labbar/planning/2003/writing .html L’esempio di Bud&Terence in PDDL è incluso nell’archivio Blackbox

Esercizio Provate: Ad eseguire blackbox sull’esempio Ad eseguire blackbox usando come solver Graphplan Ad eseguire blackbox usando come solver CHAFF A vedere la WFF (Well Formed Formula) in cui viene convertito il planning graph all’ultimo stadio (per questo destreggiatevi un po’ tra la varie opzioni disponibili) Blackbox

Pianificazione basata su grafi come euristica (accenni) FF: Fast Forward Pianificazione basata su grafi come euristica (accenni)

FF: Fast Forward Fast Forward FF è un pianificatore euristico estremamente efficiente introdotto da Hoffmann nel 2000 Euristico = ad ogni stato S è una valutazione della distanza dal goal mediante una funzione euristica Funzionamento base: hill climbing + A* A partire da uno stato S, si esaminano tutti i successori S’ Se si individua uno stato successore S* migliore di S, ci si sposta su di esso e torna al punto 1 Se non si trova alcuno stato con valutazione migliore, viene eseguita una ricerca completa A*, usando la stessa euristica Fast Forward

La funzione euristica Dato un problema P, uno stato S ed un goal G, FF considera il problema rilassato P+ che si ottiene da P trascurando i delete effects delle azioni FF risolve P+ con graphplan Il numero di azioni nel piano risultante è utilizzato come euristica Fast Forward

Enforced hill climbing FF utilizza in realtà un cosiddetto “enforced hill climbing” function FF(problema): return soluzione or fails S = STATO_INIZIALE(problema) k = 1 loop do: explore all states S’ at k steps if a better state S* is found: S = S* else if k can be increased: k = k+1 else perform complete A* search In pratica è una ricerca completa breadth first Una soluzione viene sempre trovata, a meno che lo stato corrente non sia un vicolo cieco Fast Forward

Helpful actions Per muoversi da uno stato S ad uno adiancente non si considerano tutte le azioni, ma solo le cosiddette azioni utili (helpful actions) Sia G1 l’insieme delle proposizioni al time step 1 della soluzione del problema rilassato P+: H(S) = {pre(o)  S, add(o)  G1  } Ossia H(S) contiene le azioni applicabili nello stato corrente (S), che aggiungono almeno una delle proposizioni in G1 H(S0) = {load(t,l), load(b,l), move(c,l,h)} Fast Forward

Esercizi Scaricare FF dal sito del corso http://www.lia.deis.unibo.it/Courses/AI/applicationsAI2008 -2009/Lucidi/Xesercitazioni/ff.gentoo.zip Decomprimere l’archivio Provare ad eseguire il programma sull’esempio del carrello in pddl Guardate come varia la distanza dal goal Provate a modificare il modello in modo da rendere il problema impossibile: come varia la distanza dal goal? Fast Forward

Riferimenti GRAPHPLAN Blackbox Fast Forward Graphplan http://www.cs.cmu.edu/~avrim/graphplan.html A. Blum and M. Furst, "Fast Planning Through Planning Graph Analysis", Artificial Intelligence, 90:281--300 (1997). Blackbox http://www.cs.rochester.edu/u/kautz/satplan/blackbox/index.html SATPLAN: http://www.cs.rochester.edu/u/kautz/satplan/index.htm Henry Kautz and Bart Selman, “Planning as Satisfiability”, Proceedings ECAI-92. Henry Kautz and Bart Selman, “Unifying SAT-based and Graph-based Planning”, Proc. IJCAI-99, Stockholm, 1999. Fast Forward http://members.deri.at/~joergh/ff.html J. Hoffmann, “FF: The Fast-Forward Planning System”, in: AI Magazine, Volume 22, Number 3, 2001, Pages 57 - 62 Graphplan

Esercizi

Modellazione: esercizio 1 Modellare in pddl l’eight puzzle Stato iniziale Goal 7 3 8 2 1 6 5 1 2 3 4 5 6 7 8 Provare a risolverlo con i vari pianificatori Come variano le performance “mescolando” un altro po’? Graphplan

Modellazione: esercizio 2 Modellare per graphplan il classico indovinello “capra-lupo-cavolo” sulla riva del fiume. ATTENZIONE: è molto difficile! Lupo, capra e cavolo, barca e pastore sono sulla sponda A Il lupo se lasciato da solo con la capra la mangia La capra se lasciata sola con il cavolo lo mangia Il pastore può portare solo un oggetto alla volta con la barca Tutti devono arrivare sulla sponda B Graphplan

Valutazione: esercizio 1 Sul sito del corso sono disponibili alcuni pacchetti di istanze dall’International Planning Competition, edizione 3. Scaricate le istanze dal sito Due domini: Rovers: gestire le comunicazione tra robot per l’esplorazione di un pianeta Freecell: AKA il buon vecchio solitario di windows! Provate a vedere che performance hanno Graphplan (Blackbox + Graphplan), Blackbox + Chaff e FF sulle istanze Graphplan

Valutazione: esercizio 2 Sul sito del corso sono disponibili alcuni pacchetti di istanze dall’International Planning Competition, edizione 5. Scaricate le istanze dal sito Un dominio: TPP (Traveling Purchaser Problem) Attenzione: per avere una modellazione STRIPS classica occorre una file di dominio per ogni file di istanza Provate a vedere che performance hanno Graphplan (Blackbox + Graphplan), Blackbox + Chaff e FF sulle istanze Graphplan