14.07.2013 Views

Klasické plánování

Klasické plánování

Klasické plánování

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!