|
Documentazione del Programma |
Blackbox è
un pianificatore che elabora problemi di pianificazione specificati nel
linguaggio STRIPS. Esso utilizza GraphPlan per trovare una soluzione e
se questa non viene trovata in un tempo accettabile (o definito dai parametri
in input), converte il Planning Graph in forma CNF (forma normale congiuntiva)
e, per trovare la soluzione, utilizza uno o più motori di ricerca
tra i più noti: SatZ, Walksat, Relsat, Compact. Il nome 'blackbox'
deriva dal fatto che il generatore del piano non vede e non si preoccupa
del motore con il quale il piano stesso verrà risolto, e viceversa:
l'uno é una 'scatola nera', una 'blackbox' per l'altro. L'utente
che utilizza blackbox ha a disposizione tutta una serie di comandi
e opzioni che permettono di modificare i parametri per ogni singolo
motore di ricerca, di limitare il lavoro di un singolo motore ad un tempo
predefinito per passare poi al motore successivo, ecc.. All'interno di
questa pagina è possibile trovare anche esempi
esplicativi di utilizzo di blackbox.
Il file contenente le sorgenti di Blackbox, attualmente giunto alla versione 3.4, é scaricabile dalla seguente pagina di Internet: http://www.research.att.com/~kautz/blackbox/index.html Una volta ottenuto il file, eseguire i seguenti comandi: uudecode blackbox3_4_tar_Z.uu
per decomprimere il file. Verrà creata la apposita cartella che contiene i files sorgenti da compilare e i files di esempio. Per compilare eseguire: cd blackbox-ver3.4
Nella cartella ci sarà ora il file eseguibile
'blackbox'.
Come utilizzare Blackbox Nella sottocartella Examples é contenuta
una serie di problemi classici già specificati nel linguaggio PDDL
(Planning Domain Definition Language), un linguaggio conforme a STRIPS
utilizzato per dare l'input a Blackbox.
blackbox –o domain.pddl –f prob004-log-a.pddl In aggiunta a questi può essere utile, per ottenere risultati personalizzati o per migliorare le prestazioni, specificare altre opzioni e parametri: ne segue la lista completa. -o <op file>
per specificare il file degli operatori (per esempio '-o domain.pddl')
Per <SPEC> posso avere: <SPEC>{-maxit N}{-maxsec F}<COMMAND>{opzioni specifiche di 'solver'} <COMMAND> graphplan || satz || walksat
|| relsat || compact
Se maxsec o maxit non vengono
specificati, verrà utilizzato il valore settato più recentemente.
Seguono le opzioni per ogni singolo risolutore, ottenibili anche con il comando blackbox -help -solver
<COMMAND>
Opzioni di GraphPlan -O <lista di opzioni> dove
Opzioni di SatZ (satz-rand) -seed N inizializza
a N il seme per la funzione random
Opzioni di Walksat -seed N -cutoff N
Heuristics:
Printing:
Opzioni di Compact compact -l (unary) -b (binary) -s (singleton)
-p (pure) -d (dump)
Opzioni di RelSat -seed N
inizializza a N il seme per la funzione
random
-learnorder N lunghezza massima delle clausole che devono essere 'permanentemente' acquisite durante la prova.Ognuna di esse corrisponde a un punto di backtrack e viene derivato dall’originale wff. Default = 3 -norelevance se selezionato, non esegue la limitazione dell’ordine sull’acquisizione delle clausole.Altrimenti, i punti di backtrack che corrispondono alle clausole derivate che sono più lunghe del 'learnorder' vengono temporaneamente aggiunte al wff fino a che i backtrack variano l’assegnamento delle altre variabili nelle clausole. Vedi '-dump' -dump se selezionato, le clausole acquisite vengono messe su due files in output.Se il wff in input ha nome FOO.cnf, questi files saranno nominati FOO-perm.f e FOO-temp.f, rispettivamente per le clausole size-bounded e relevance-bounded .Se vengono eseguite più prove, le clausoler vengono aggiunte agli stessi file, pertanto potrebbero esistere poi dei duplicati. Le clausole vengono stampate una per linea, con *no* trailing 0. -fudge N A B Il fudge-factors viene utilizzato per 'degradare' la scelta delle variabili euristiche. Nel primo passo della scelta della variabile di branch (ramo da percorrere), ad ogni variabile viene assegnato un valorepari al numero delle volte che appare nelle clausole binarie.Oltre le N variabili che sono entro le A volte, viene scelto il miglior valore. Quindi, ad ognuna di queste N variabili viene riassegnato un valore da quante singole propagazioni vengono attuate se la variabile è settata. Durante questo passaggio, se si scopre che un particolare valore assegnato alla variabile porta ad una inconsistenza, allora viene immediatamente scelto.Altrimenti, per l’insieme di tutte le variabili che sono state riassegnate e che sono entro le B volte,viene determinato il miglior valore di riassegnamento e viene scelta a caso una variabile da questo insieme. Default = 10 .8 .9 Esempi di utilizzo di Blackbox
1)
Esegue graphplan per 10 secondi, quindi satz per un tempo illimitato. 2)
Lavora solo su piani di lunghezza 8. Esegue graphplan fino a 100 ricorsioni, quindi satz fino a 100 backtracks. 3)
Esegue satz per 100 secondi.Quando raggiunge i 20 backtracks, riavvia Satz: ripete il tutto 40 volte. Se viene specificato un valore per il riavvio di Satz, viene automaticamente introdotto un valore di noise a 0.4 nella scelta euristica 4)
Esegue Satz per un totale di 100 backtracks.Il
pianificatore viene riavviato ogni 20 backtracks: l'opzionerestart 40 non
verrà sfruttata, poiché il limite di 40 non potrá
mai essere raggiunto: la linea di comando é dunque equivalente alla
seguente:
5)
Inizializza il seme per la funzione random di walksat a 123, ed esegue il pianificatore per 100 riavvii con un livello di noise pari a 0.4. Continua a lavorare finché il problema viene risolto 10 volte (per ottenere una stima più accurata della durata media del tempo di ricerca). |