Klasické plánování
Klasické plánování
Klasické plánování
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Klasické</strong> <strong>plánování</strong><br />
Radek Maˇrík<br />
CVUT FEL, K13133<br />
16. dubna 2013<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 1 / 70
Obsah<br />
1 Pojem <strong>plánování</strong><br />
Definice<br />
Koncepční model<br />
Typologie plánovač˚u<br />
2 Reprezentace<br />
STRIPS<br />
PDDL<br />
3 Metody <strong>plánování</strong><br />
Logika a prohledávání<br />
Stavov´y prostor<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 2 / 70
Koncept plánu [Nau09]<br />
Plán<br />
mnoho definic a pohled˚u ....<br />
Pojem <strong>plánování</strong> Definice<br />
Schéma, program nebo metoda pˇripravená dopˇredu k dosaˇzení<br />
nějakého cíle.<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 4 / 70
Definice plánu<br />
[Nau09, Pec10]<br />
Pojem <strong>plánování</strong> Definice<br />
Plánování<br />
Uvaˇzování o hypotetické interakci mezi agentem a prostˇredím<br />
vzhledem k dané úloze.<br />
Motivací k procesu <strong>plánování</strong> je zd˚uvodnění, ˇze daná dle plánu<br />
provedená sada akcí změní prostˇredí tak, aby bylo dosaˇzeno vytčeného<br />
cíle či ˇreˇsení zadání úlohy.<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 5 / 70
Pojem <strong>plánování</strong> Definice<br />
Plánování a rozvrhování [Nau09]<br />
Rozvrhování . . . pˇriˇrazuje ˇradě proces˚u zdroje s časov´ym omezením,<br />
Plánování . . . uvaˇzuje moˇzné interakce mezi komponentami plánu.<br />
Plánování<br />
Dáno: počáteční stav, cílov´y stav, operátory.<br />
Hledáme sekvenci operátor˚u, které dosáhnou na cílov´y stav z<br />
počátečního stavu<br />
v´yběr pˇrísluˇsn´ych akcí, uspoˇrádáním akcí, zahrnutí kauzalit<br />
Rozvrhování<br />
Dáno: zdroje, akce, omezení.<br />
Hledáme rozvrh, kter´y vyhovuje omezením<br />
uspoˇrádání akcí, pˇriˇrazení zdroj˚u, splnění omezení.<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 6 / 70
Pojem <strong>plánování</strong> Definice<br />
Reálné aplikace - pr˚uzkum vesmíru [Nau09]<br />
Projekty<br />
Autonomní <strong>plánování</strong>, rozvrhování, ˇrízení<br />
NASA: JPL a Ames.<br />
Remote Agent Experiment (REX)<br />
Deep Space 1.<br />
Mars Exploration Rover (MER)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 7 / 70
Pojem <strong>plánování</strong> Koncepční model<br />
Koncepční model <strong>plánování</strong> I [Nau09]<br />
Prostˇredí<br />
Systém s pˇrechody mezi<br />
stavy<br />
Σ = (S, A, E, γ)<br />
S = {states}<br />
A = {actions}<br />
E = {exogenous events}<br />
γ =<br />
{state-transition function}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 9 / 70
Roboty v docích [Wic11]<br />
Ilustrace plánovacích procedur<br />
pˇrístav s několika místy (doky)<br />
lodě,<br />
sklady s kontejnery<br />
parkovací místa pro<br />
vlaky,<br />
nákladní auta<br />
cíl:<br />
vyloˇzit/naloˇzit lodě atd.<br />
pˇremíst’ovat kontejnery<br />
pomocí robot˚u<br />
Pojem <strong>plánování</strong> Koncepční model<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 10 / 70
Pojem <strong>plánování</strong> Koncepční model<br />
Pˇríklad pˇrechodového systému [Nau09]<br />
Systém s pˇrechody mezi stavy<br />
Σ = (S, A, E, γ)<br />
S = {states}<br />
A = {actions}<br />
E = {exogenous events}<br />
γ = S × (A ∪ E) → 2 S<br />
Systém s pˇrechody mezi stavy<br />
S = {s0, s1, . . . , s5}<br />
A = {move1, move2, put,<br />
take, load, unload}<br />
E = {}<br />
γ = {viz ˇsipky}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 11 / 70
Pojem <strong>plánování</strong> Koncepční model<br />
Koncepční model <strong>plánování</strong> I [Nau09]<br />
ˇRadič<br />
pozorovací funkce<br />
h : S → O<br />
za pozorování o ∈ O<br />
produkuje akci a ∈ A<br />
Plánovač<br />
produkuje plány<br />
instrukce pro ˇradič<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 12 / 70
Plánovací úloha [Nau09]<br />
Pojem <strong>plánování</strong> Koncepční model<br />
angl. Planning problem<br />
popis systému Σ<br />
počáteční stav nebo<br />
mnoˇzina stav˚u<br />
počáteční stav = s0<br />
Zadání úlohy<br />
cílov´y stav<br />
mnoˇzina cílov´ych stav˚u<br />
mnoˇzina úloh,<br />
”trajektorie”stav˚u,<br />
hodnotící funkce<br />
cílov´y stav = s5<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 13 / 70
Plán [Nau09]<br />
Pojem <strong>plánování</strong> Koncepční model<br />
Klasick´y plán<br />
sekvence akcí<br />
< take, move1, load, move2 ><br />
Postup, taktika (angl. policy)<br />
částečná funkce z S do A<br />
{(s0, take), (s1, move1),<br />
(s3, load), (s4, move2)}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 14 / 70
Typy plánovač˚u [Nau09]<br />
Plánovače pro specifickou doménu<br />
Pojem <strong>plánování</strong> Typologie plánovač˚u<br />
navrˇzeny a vyladěny pro danou doménu<br />
nebudou pracovat dobˇre (jestli v˚ubec) v jiné doméně<br />
větˇsina úspěˇsn´ych reáln´ych plánovač˚u pracuje tímto zp˚usobem<br />
Plánovače nezávislé na doméně<br />
v principu pracuje v jakékoliv plánovací doméně<br />
nepouˇzívá ˇzádnou doménově specifickou znalost s vyjímkou definic<br />
základních akcí<br />
v praxi je neproveditelné, aby pracovalo pro kaˇzdou moˇznou doménu,<br />
zavedení ˇrady zjednoduˇsujících pˇredpoklad˚u<br />
klasické <strong>plánování</strong><br />
zaměˇrena větˇsina v´yzkumu automatizovaného <strong>plánování</strong><br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 16 / 70
Omezující pˇredpoklady [Nau09]<br />
Pojem <strong>plánování</strong> Typologie plánovač˚u<br />
A0: Konečn´y systém<br />
konečně mnoho stav˚u, akcí, událostí<br />
A1: Plně pozorovateln´y<br />
ˇradič vˇzdy m˚uˇze pozorovat současn´y stav<br />
A2: Deterministick´y<br />
kaˇzdá akce má pouze jedin´y v´ystup<br />
A3: Statick´y (ˇzádné vnějˇsí události)<br />
změny jsou zp˚usobeny pouze akcemi ˇradiče<br />
A4: Dosaˇzitelnost cíl˚u<br />
existence mnoˇziny cílov´ych stav˚u Sg<br />
A5: Sekvenční plány<br />
plán je lineárně uspoˇrádaná sekvence akcí < a0, a1, . . . , an ><br />
A6: Implicitní čas<br />
ˇzádné časové prodlevy, lineární sekvence okamˇzit´ych stav˚u<br />
A7: Off-line <strong>plánování</strong><br />
plánovač nezná aktuální stav běhu<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 17 / 70
<strong>Klasické</strong> <strong>plánování</strong> [Nau09]<br />
Pojem <strong>plánování</strong> Typologie plánovač˚u<br />
Vychází ze vˇsech 8 omezujících pˇredpoklad˚u<br />
Offline generování sekvencí akcí pro deterministické, statické, konečné<br />
systémy s úplnou znalostí, dosaˇziteln´ymi cíli a implicitním časem.<br />
Redukuje se na následující úlohu:<br />
Dáno (Σ, s0, Sg )<br />
Nalezni sekvenci akcí π =< a0, a1, . . . , an >, která produkuje sekvenci<br />
pˇrechod˚u mezi stavu < s0, s1, . . . , sn > takovou, ˇze sn ∈ Sg .<br />
Metodou je vyhledávání cesty v grafu<br />
uzly = stavy<br />
hrany = akce<br />
Je to triviální?<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 18 / 70
Pojem <strong>plánování</strong> Typologie plánovač˚u<br />
<strong>Klasické</strong> <strong>plánování</strong> - pˇríklad [Nau09]<br />
Realita<br />
Počet částic ve vesmíru je pouze okolo 10 87<br />
V´yzkum automatizovaného <strong>plánování</strong><br />
pˇreváˇzně klasické <strong>plánování</strong><br />
existují desítky (stovky) r˚uzn´ych algoritm˚u<br />
Pˇrevozy náklad˚u letadly<br />
10 letiˇst’<br />
50 letadel<br />
200 kus˚u nákladu<br />
počet stav˚u<br />
50 10 ×200 50+10 ≈ 10 155<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 19 / 70
<strong>Klasické</strong> representace [Wic11]<br />
Reprezentace STRIPS<br />
reprezentace pomocí v´yrok˚u<br />
stav světa je mnoˇzina v´yrok˚u<br />
akce obsahuje pˇredpoklady ve formě v´yrok˚u a efekty ve formě v´yrok˚u,<br />
které se pˇridávají či smaˇzou<br />
STRIPS reprezentace<br />
podobně jako v´yroková reprezentace<br />
místo v´yrok˚u se vˇsak pracuje s literály prvého ˇrádu<br />
reprezentace pomocí stavov´ych proměnn´ych<br />
stav je k-tice stavov´ych proměnn´ych {x1, . . . , xn}<br />
akce je parciální funkce nad stavy<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 21 / 70
Reprezentace STRIPS<br />
Rozloˇzená reprezentace stavu<br />
Reprezentace stavu světa<br />
atomická . . . stav je dále neděliteln´y<br />
rozloˇzená . . . stav je kolekce proměnn´ych<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 22 / 70
Reprezentace STRIPS<br />
STRIPS - reprezentace stav˚u [Wic11]<br />
Necht’ L je jazyk prvého ˇrádu<br />
s konečně mnoha predikátov´ymi symboly,<br />
s konečn´ym počtem konstatních symbol˚u,<br />
a ˇzádn´ymi funkčními symboly<br />
stav STRIPS plánovací domény je mnoˇzina základních atom˚u z L:<br />
(základní) atom p platí ve stavu s ⇔ p ∈ s<br />
s splňuje mnoˇzinu (základních) literál˚u g (s |= g), jestliˇze<br />
kaˇzd´y pozitivní literál v g je v s<br />
kaˇzd´y negativní literál v g není v s<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 23 / 70
Pˇríklad STRIPS stavu [Wic11]<br />
Stav v DWR doméně<br />
Reprezentace STRIPS<br />
state = {attached(p1, loc1),<br />
attached(p2, loc1),<br />
in(c1, p1), in(c3, p1),<br />
top(c3, p1), on(c3, c1),<br />
on(c1, pallet), in(c2, p2),<br />
top(c2, p2), on(c2, pallet),<br />
belong(crane1, loc1),<br />
empty(crane1),<br />
adjacent(loc1, loc2),<br />
adjacent(loc2, loc1),<br />
at(r1, loc2),<br />
occupied(loc2),<br />
unloaded(r1)}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 24 / 70
Reprezentace STRIPS<br />
STRIPS - reprezentace operátor˚u a akcí<br />
[Wic11]<br />
plánovací operátor STRIPS plánovací domény je trojice<br />
o = (name(o), precond(o), effects(o)),<br />
kde jméno operátoru name(o)<br />
je syntaktick´y v´yraz tvaru n(x1, . . . , xk),<br />
kde n je (jednoznačn´y) symbol<br />
a x1, . . . , xk jsou vˇsechny proměnné,<br />
které se vyskytují v o, a<br />
vstupní podmínky precond(o) a efekty effects(o) operátoru jsou<br />
mnoˇziny literál˚u.<br />
akce STRIPS plánovací domény je uzavˇrená instance plánovacího<br />
operátor˚u.<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 25 / 70
Reprezentace STRIPS<br />
Pˇríklad STRIPS operátor˚u [Wic11]<br />
move(r, l, m)<br />
robot r se pˇresune z místa l do sousedního místa m<br />
precond: adjacent(l, m), at(r, l), ¬occupied(m)<br />
effects: at(r, m), occupied(m), ¬occupied(l), ¬at(r, l)<br />
load(k, l, c, r)<br />
jeˇráb k na místě l naloˇzí kontejner c na robot r<br />
precond: belong(k, l), holding(k, c), at(r, l), unloaded(r)<br />
effects: empty(k), ¬holding(k, c), loaded(r, c), ¬unloaded(r)<br />
put(k, l, c, d, p)<br />
jeˇráb k na místě l poloˇzí kontejner c na d v svazku p<br />
precond: belong(k, l), attached(p, l), holding(k, c), top(d, p)<br />
effects:<br />
¬holding(k, c), empty(k), in(c, p), top(c, p), on(c, d), ¬top(d, p)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 26 / 70
Reprezentace STRIPS<br />
Aplikovatelnost a pˇrechody mezi stavy [Wic11]<br />
Necht’ L je mnoˇzina literál˚u<br />
L + je mnoˇzina atom˚u, které jsou pozitivní literály v L,<br />
L − je mnoˇzina vˇsech atom˚u, jejichˇz negace jsou v L<br />
Necht’ a je akce a s je stav.<br />
Potom a je aplikovatelná v s ⇔:<br />
precond + (a) ⊆ s; a<br />
precond − (a) ∩ s == {}<br />
Stavová pˇrechodová funkce y pro akci aplikovatelnou ve stavu s je<br />
definována jako:<br />
y(s, a) = (s − effects − (a)) ∪ effects + (a)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 27 / 70
Reprezentace STRIPS<br />
STRIPS: plánovací domény [Wic11]<br />
Necht’ L je jazyk prvého ˇrádu bez funkcí.<br />
STRIPS plánovací doména na L omezen´y stavově-pˇrechodov´y<br />
systém Σ = (S, A, γ) takov´y, ˇze:<br />
Sje mnoˇzina STRIPS stav˚u, tj. mnoˇzina uzavˇren´ych atom˚u,<br />
A je mnoˇzina uzavˇren´ych instancí nějak´ych STRIPS plánovacích<br />
operátor˚u O<br />
y : S × A → S kde<br />
y(s, a) = (s − effects − (a)) ∪ effects + (a), jestliˇze a je aplikovatelná v s<br />
y(s, a) = nedefinovaná jinak<br />
S je uzavˇrená v rámci y<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 28 / 70
Reprezentace STRIPS<br />
STRIPS: plánovací úloha [Wic11]<br />
STRIPS plánovací úloha je trojice P = (Σ, si, g), kde:<br />
Σ = (S, A, γ) je STRIPS plánovací doména na daném jazyce prvého<br />
ˇrádu L<br />
si ∈ S je počáteční stav<br />
g je mnoˇzina uzavˇren´ych literál˚u popisující cíl tak,<br />
ˇze mnoˇzina cílov´ych stav˚u je<br />
Sg = {s ∈ S|s |= g}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 29 / 70
Reprezentace STRIPS<br />
Pˇríklad STRIPS plánovací úlohy [Wic11]<br />
Stav v DWR plánovací úloha<br />
Σ: STRIPS plánovací doména DWR<br />
si: jak´ykoliv stav<br />
s0 = {attached(pile, loc1),<br />
in(cont, pile), top(cont, pile),<br />
on(cont, pallet), belong(crane, loc1),<br />
empty(crane), adjacent(loc1, loc2),<br />
adjacent(loc2, loc1),<br />
at(robot, loc2),<br />
occupied(loc2),<br />
unloaded(robot)}<br />
g ⊂ L<br />
g = {¬unloaded(robot),<br />
at(robot, loc2)}<br />
tj. Sg = {s5}<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 30 / 70
Základy PDDL [Wic11]<br />
Reprezentace PDDL<br />
Planning Domain Definition Language (PDDL)<br />
http://cs-www.cs.yale.edu/homes/dvm/<br />
vlastnosti jazyka (verze 1.x):<br />
základní forma STRIPS akcí<br />
r˚uzná rozˇsíˇrení jako explicitní poˇzadavky<br />
pouˇzíván k definicím:<br />
plánovacích domén:<br />
poˇzadavk˚u,<br />
typ˚u,<br />
predikát˚u,<br />
moˇzn´ych operátor˚u<br />
plánovacích problém˚u:<br />
objekty,<br />
rigidní a pr˚uběˇzné relace,<br />
počáteční situace,<br />
popis cíle.<br />
dnes jiˇz verze 3.x<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 32 / 70
Reprezentace PDDL<br />
Plánovací doména ”Opice”<br />
(define (domain MONKEY)<br />
(:requirements :strips :typing)<br />
(:types monkey box location fruit)<br />
(:predicates<br />
(isClear ?b - box) (onBox ?m - monkey ?b - box)<br />
(onFloor ?m - monkey) (atM ?m - monkey ?loc - location)<br />
(atB ?b - box ?loc - location) (atF ?f - fruit ?loc - location)<br />
(hasFruit ?m - monkey ?fruit))<br />
(:action GOTO<br />
:parameters (?m - monkey ?loc1 ?loc2 - location)<br />
:precondition (and (onFloor ?m) (atM ?m ?loc1))<br />
:effect (and (atM ?m ?loc2) (not (atM ?m ?loc1))))<br />
(:action PUSH<br />
:parameters (?m - monkey ?b - box ?loc1 ?loc2 - location)<br />
:precondition (and (onFloor ?m) (atM ?m ?loc1) (atB ?b ?loc1) (isClear ?b))<br />
:effect (and (atM ?m ?loc2) (atB ?b ?loc2)<br />
(not (atM ?m ?loc1))<br />
(not (atB ?b ?loc1))))<br />
(:action CLIMB<br />
:parameters (?m - monkey ?b - box ?loc1 - location)<br />
:precondition (and (onFloor ?m) (atM ?m ?loc1) (atB ?b ?loc1) (isClear ?b))<br />
:effect (and (onBox ?m ?b) (not (isClear ?b)) (not (onFloor ?m))) )<br />
(:action GRAB-FRUIT<br />
:parameters (?m - monkey ?b - box ?f - fruit ?loc1 - location)<br />
:precondition (and (onBox ?m ?b) (atB ?b ?loc1) (atF ?f ?loc1))<br />
:effect (and (hasFruit ?m ?f))))<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 33 / 70
Reprezentace PDDL<br />
Plánovací problém ”Opice”<br />
(define (problem MONKEY1)<br />
(:domain MONKEY)<br />
(:objects monkeyJudy - monkey<br />
bananas - fruit<br />
boxA - box<br />
locX locY locZ - location)<br />
(:init (and<br />
(onFloor monkeyJudy)<br />
(atM monkeyJudy locX)<br />
(atB boxA locY)<br />
(atF bananas locZ)<br />
(isClear boxA)<br />
)<br />
)<br />
)<br />
(:goal (and (hasFruit monkeyJudy bananas))<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 34 / 70
Reprezentace PDDL<br />
ˇReˇsení plánovacího problému ”Opice”<br />
Begin plan<br />
1 (goto monkeyjudy locx locy)<br />
2 (push monkeyjudy boxa locy locz)<br />
3 (climb monkeyjudy boxa locz)<br />
4 (grab-fruit monkeyjudy boxa bananas locz)<br />
End plan<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 35 / 70
Metody <strong>plánování</strong> Logika a prohledávání<br />
STRIPS reprezentace - pˇríklad<br />
pocatecni stav: start<br />
cil: writeValue(a, 3)<br />
akce:<br />
startPlan: PAR []<br />
PRE [start]<br />
ADD [declared(server, a), declared(server, b)]<br />
DEL [start]<br />
connectServer: PAR [A]<br />
PRE [declared(server, A)]<br />
ADD [bound(server,A)]<br />
DEL [declared(server, A)]<br />
writing: PAR [a, 3]<br />
PRE [bound(server,a)]<br />
ADD [writeValue(a, 3)]<br />
DEL []<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 37 / 70
V´ysledek pˇríkladu<br />
cíl: writeValue(a,3);<br />
v´ysledná sekvence:<br />
1 start<br />
2 connectServer(a)<br />
3 writing(a, 3)<br />
Metody <strong>plánování</strong> Logika a prohledávání<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 38 / 70
Metody <strong>plánování</strong> Logika a prohledávání<br />
Plánování - hledání logick´ych formulí do hloubky<br />
% Depth first search<br />
% ==================<br />
depthFirstSearch(AnsPath) :initialState(Init),<br />
depthFirst([Init], AnsPath).<br />
depthFirst([S|_], [S]) :finalState(S),<br />
!.<br />
depthFirst([S|Path], [S|AnsPath]) :extend([S|Path],<br />
S1),<br />
depthFirst([S1, S |Path], AnsPath).<br />
extend([S|Path], S1) :nextState(S,<br />
S1),<br />
not(memberState(S1, [S|Path])).<br />
memberState(S, Path) :member(S,Path).<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 39 / 70
Metody <strong>plánování</strong> Logika a prohledávání<br />
Plánování - specifikace úlohy v Prologu<br />
% Farmer, Wolf, Goat, Cabbage<br />
% ===========================<br />
initialState([n,n,n,n]).<br />
finalState([s,s,s,s]).<br />
nextState(S, S1) :- move(S, S1), safe(S1).<br />
move([F, W, G, C], [F1, W, G, C]) :- cross(F, F1).<br />
move([F, F, G, C], [F1, F1, G, C]) :- cross(F, F1).<br />
move([F, W, F, C], [F1, W, F1, C]) :- cross(F, F1).<br />
move([F, W, G, F], [F1, W, G, F1]) :- cross(F, F1).<br />
safe([F, W, G, C]) :- F=G, !; F=W, F=C.<br />
cross(n,s).<br />
cross(s,n).<br />
%------t1(AnsPath)<br />
:- depthFirstSearch(AnsPath).<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 40 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Prohledávání stavového prostoru [Wic11]<br />
hra Misionáˇri a kanibalové<br />
pˇrepravit 3 kanibaly a 3 misionáˇre pˇres ˇreku<br />
jakmile je někde více kanibal˚u neˇz misionáˇr˚u, jsou misionáˇri sněděni<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 42 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Plánování ve stavovém prostoru [Wic11]<br />
Myˇslenka:<br />
aplikace standardních prohledávacích algoritmu<br />
do ˇsíˇrky,<br />
do hloubky,<br />
A ∗ , atd.<br />
k ˇreˇsení plánovací úlohy<br />
prohledavan´y prostor je podmnoˇzina stavového prostoru<br />
uzly odpovídají stav˚um světa<br />
hrany korespondují pˇrechod˚um mezi stavy<br />
cesta v prohledávaném prostoru odpovídá plánu<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 43 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Plánování ve stavovém prostoru - pˇríklad [Wic11]<br />
uzly: zavˇrené atomy<br />
hrany: akce (uzavˇrené instance operátor˚u)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 44 / 70
Progresivní hledání [Wic11]<br />
1 Forward-search(O, s0, g)<br />
1 s ← s0<br />
2 π ← the empty plan<br />
3 loop<br />
Metody <strong>plánování</strong> Stavov´y prostor<br />
1 jestliˇze s |= g, potom vrat’ π<br />
2 E ← {a|a je uzavˇrená instance operátoru ∈ O<br />
a precond(a) je pravdivá v s}<br />
3 jestliˇze E == ∅, potom vrat’ FAILURE<br />
4 nedeterministicky vyber akci a ∈ E<br />
5 s ← γ(s, a)<br />
6 π ← π.a<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 45 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Pˇríklad prohledávání prostoru stav˚u 1 [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 46 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Pˇríklad prohledávání prostoru stav˚u 2 [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 47 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Pˇríklad prohledávání prostoru stav˚u 3 [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 48 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Pˇríklad prohledávání prostoru stav˚u 4 [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 49 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Pˇríklad prohledávání prostoru stav˚u 5 [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 50 / 70
Relevantní akce [Nau09]<br />
Metody <strong>plánování</strong> Stavov´y prostor<br />
Necht’ P = (Σ, si, g) je STRIPS plánovací úloha.<br />
Akce a je relevantní pro cíl g, jestliˇze<br />
a zp˚usobí, ˇze alespoň jeden z literál˚u g je pravdiv´y<br />
g ∩ effects(a) = ∅<br />
a nezp˚usobí, ˇze ani jeden z literál˚u g je nepravdiv´y<br />
g + ∩ effects − (a) = ∅ g − ∩ effects + (a) = ∅<br />
Regresní mnoˇzina cíle g pro relevatní akci a ∈ A je:<br />
γ −1 (g, a) = (g − effects(a)) ∪ precond(a)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 51 / 70
Zpětné hledání [Wic11]<br />
1 Backward-search(O, s0, g)<br />
1 π ← the empty plan<br />
2 loop<br />
Metody <strong>plánování</strong> Stavov´y prostor<br />
1 jestliˇze s0 |= g, potom vrat’ π<br />
2 A ← {a|a je uzavˇrená instance operátoru ∈ O<br />
a γ −1 (g, a) je definováno }<br />
3 jestliˇze A == ∅, potom vrat’ FAILURE<br />
4 nedeterministicky vyber akci a ∈ A<br />
5 π ← a.π<br />
6 g ← γ −1 (s, a)<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 52 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Sussmanova anomálie<br />
interakce podcíl˚u, jejichˇz ˇreˇsení se musí proloˇzit, aby je bylo moˇzné<br />
splnit současně,<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 53 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Sussmanova anomálie - pˇríklad s kostkami I [Nau09]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 54 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Sussmanova anomálie - pˇríklad s kostkami II [Nau09]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 55 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Sussmanova anomálie - pˇríklad s kostkami III [Nau09]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 56 / 70
Metody <strong>plánování</strong> Stavov´y prostor<br />
Sussmanova anomálie - pˇríklad s kostkami IV [Nau09]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 57 / 70
4 Pˇríloha<br />
PDDL Specifikace<br />
Pˇríloha<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 58 / 70
PDDL domény [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 60 / 70
PDDL typy [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 61 / 70
PDDL pˇríklad: DWR typy [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 62 / 70
PDDL predikáty: pˇríklad [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 63 / 70
PDDL akce [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 64 / 70
PDDL popis cíle [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 65 / 70
PDDL efekty [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 66 / 70
PDDL operátor: pˇríklad [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 67 / 70
PDDL problém [Wic11]<br />
Pˇríloha PDDL Specifikace<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 68 / 70
Pˇríloha PDDL Specifikace<br />
PDDL problém: DWR pˇríklad [Wic11]<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 69 / 70
Literatura I<br />
Dana Nau.<br />
CMSC 722, ai planning (fall 2009), lecture notes.<br />
http://www.cs.umd.edu/class/fall2009/cmsc722/, 2009.<br />
Pˇríloha PDDL Specifikace<br />
Michal Pechoucek.<br />
A4m33pah, lecture notes.<br />
http://cw.felk.cvut.cz/doku.php/courses/a4m33pah/prednasky, February 2010.<br />
Gerhard Wickler.<br />
A4m33pah, lecture notes.<br />
http://cw.felk.cvut.cz/doku.php/courses/a4m33pah/prednasky, February 2011.<br />
Radek Maˇrík (marikr@felk.cvut.cz) <strong>Klasické</strong> <strong>plánování</strong> 16. dubna 2013 70 / 70