CMD + K

Kapittel 17Begreper & formler · Hierarkisk planlegging og planlegging under usikkerhet
Referanseside · Kapittel 17

Begreper & referanser

Alle nøkkelbegrepene, formlene og referansene fra Hierarkisk planlegging og planlegging under usikkerhet, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards21 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Høynivåhandling

En abstrakt handling, som «klargjør hytta», som ikke kan utføres direkte, men som har én eller flere forfininger. Forkortes HLA (high-level action).

02Forfining

En rekke handlinger som en høynivåhandling kan erstattes med. Rekka kan inneholde både høynivåhandlinger og primitive handlinger (refinement).

03Implementasjon

En rekke av bare primitive handlinger som en høynivåhandling kan forfines til, eventuelt gjennom flere nivåer. Høynivåhandlingen når målet hvis minst én av implementasjonene gjør det (implementation).

04Primitiv handling

En handling agenten kan utføre direkte, som «hent ved». Den har forutsetning og effekt som i PDDL og ingen forfininger (primitive action).

05Hierarkisk søk

Søk som starter med en plan med én høynivåhandling og gjentatte ganger erstatter en høynivåhandling i planen med en av forfiningene, til planen er primitiv og når målet (hierarchical search, HTN planning).

06Sensorløs planlegging

Planlegging uten percepter: agenten vet bare at starttilstanden er én av flere mulige, og planen må nå målet fra alle (sensorless planning).

07Betinget effekt

En effekt som bare inntreffer når en betingelse holder, skrevet . Er betingelsen ukjent i oppfatningstilstanden, blir fluentene i ukjente (conditional effect).

08Betinget planlegging

Planlegging der planen forgrener seg på percepter med hvis–så–ellers, slik at agenten velger neste handling etter hva den observerer (contingent planning).

09Online planlegging

Planlegging som veves sammen med utførelsen: agenten planlegger, handler, observerer og planlegger på nytt når verden ikke er som ventet (online planning).

10Utførelsesovervåking

Å sjekke underveis om planen fortsatt virker, og utløse replanlegging når den ikke gjør det (execution monitoring).

11Handlingsovervåking

Overvåking der agenten før hver handling bare sjekker at forutsetningen for neste handling holder (action monitoring).

12Planovervåking

Overvåking der agenten før hver handling sjekker at tilstanden oppfyller målet regressert gjennom resten av planen, altså at hele resten av planen fortsatt virker (plan monitoring).

13Målovervåking

Overvåking der agenten sjekker om det har dukket opp et bedre mål å arbeide mot (goal monitoring).

14Replanlegging

Å lage en ny plan fra tilstanden agenten faktisk er i, når overvåkingen viser at den gamle ikke lenger virker. Ofte planlegges bare veien tilbake til et punkt i den gamle planen (replanning).

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

belief-progresjon

Oppfatningstilstanden etter en handling

Brukes for hver handling i en sensorløs plan. Fjern komplementene til effektene og legg til effektene. En betinget effekt gir når er kjent sann, ingenting når er kjent usann, og gjør fluentene i ukjente når er ukjent. Vanlig feil: å anta at en ukjent fluent er usann.

boppfatningstilstanden: literalene agenten vet holder
EFF(a)effektene til a
ℓ̄komplementet til literalen ℓ
sensorlos-losning

Kravet til en sensorløs løsning

En sensorløs plan med handlinger er en løsning når hver mållitteral er kjent sann i den siste oppfatningstilstanden. Da når planen målet fra alle starttilstandene. Vanlig feil: å teste planen fra bare én starttilstand.

GOALliteralene i målet
bₙoppfatningstilstanden etter siste handling
planovervaking

Kravet i planovervåking

Sjekkes før handling : tilstanden må oppfylle målet regressert gjennom resten av planen. Holder det, fortsetter agenten; ellers replanlegger den. Handlingsovervåking sjekker bare forutsetningen til .

stilstanden agenten observerer
[aᵢ, …, aₙ]resten av planen
antall-implementasjoner

Antall forfiningstrær

Antall måter å forfine en plan med primitive handlinger på når hver høynivåhandling har forfininger med steg, mot handlingsrekker i et primitivt søk. Eksponenten er antall indre noder i forfiningstreet; med nivåer av høynivåhandlinger er .

dantall primitive handlinger i planen
rforfininger per høynivåhandling
ksteg per forfining
bhandlinger per tilstand i primitivt søk

Kodesnutter

Kodesnutter fra kapittelet, vist literal.

Kode

Implementasjoner mot primitive planer

Python
forfininger = 2  # @param 1..4nivaaer = 3  # @param 1..4k = 2  # steg i hver forfiningb = 6  # handlinger per tilstand i et primitivt søk d = k ** nivaaer  # primitive handlinger i en ferdig planindre = (d - 1) // (k - 1)  # høynivåhandlinger som forfines (indre noder i treet)tall = lambda x: f"{x:,}".replace(",", " ")print(f"HLA-er som forfines: {indre}")print(f"Primitive handlinger per implementasjon: {d}")print(f"Antall implementasjoner: {tall(forfininger ** indre)}")print(f"Planer i primitivt søk med b = {b}: {tall(b ** d)}")

Prøv: sett nivaaer til 4 og se at linja Antall implementasjoner: blir 32 768, mens det primitive søket får over to billioner planer å velge mellom.

Kode

En sensorløs plan for lysene i flere rom

Python
from itertools import product antall_rom = 3  # @param 2..5alt_av = 1  # @param 0..1 rom = [f"R{i}" for i in range(1, antall_rom + 1)]plan = (["AltAv"] if alt_av else []) + [f"Vipp({r})" for r in rom] def utfor(lyser, a):  # lyser = mengden rom der lampa er på    if a == "AltAv":        return frozenset()    r = a[5:-1]  # Vipp(r) bytter lampa i r: betinget effekt    return lyser - {r} if r in lyser else lyser | {r} def kjente(b):  # literaler som er sanne i alle fysiske tilstander i b    paa = [f"Lys({r})" for r in rom if all(r in s for s in b)]    av = [f"¬Lys({r})" for r in rom if all(r not in s for s in b)]    return "{" + ", ".join(paa + av) + "}" # Oppfatningstilstanden som mengde av fysiske tilstander: alle 2^n i startenb = {frozenset(r for r, p in zip(rom, bits) if p) for bits in product([0, 1], repeat=antall_rom)}print(f"Fysiske tilstander i starten: {len(b)}")for a in plan:    b = {utfor(s, a) for s in b}    print(f"Etter {a}: {kjente(b)}, fysiske tilstander = {len(b)}")print(f"Planen virker i alle starttilstander: {'ja' if b == {frozenset(rom)} else 'nei'}")

Prøv: sett alt_av til 0 og se at hver Vipp etterlater en tom mengde kjente literaler, og at linja Planen virker i alle starttilstander: blir nei.

Kode

Planovervåking når kranen kan svikte

Python
import random p_feil = 0.30  # @param 0.00..0.60 0.05random.seed(4) H = {"Fyll": ({"Ved(Kran)", "¬Full"}, {"Full"}, set())}  # navn -> (PRECOND, ADD, DEL)for b in ["B1", "B2", "B3"]:    H[f"TilBed({b})"] = ({"Ved(Kran)"}, {f"Ved({b})"}, {"Ved(Kran)"})    H[f"TilKran({b})"] = ({f"Ved({b})"}, {"Ved(Kran)"}, {f"Ved({b})"})    H[f"Vann({b})"] = ({f"Ved({b})", "Full"}, {f"Vannet({b})"}, {"Full"})maal = {"Vannet(B1)", "Vannet(B2)", "Vannet(B3)"}res = lambda s, a: frozenset((s - H[a][2]) | H[a][1])ok = lambda s, a: all((l[1:] not in s) if l[0] == "¬" else (l in s) for l in H[a][0]) def planlegg(s):  # bredde-først progresjon: korteste plan fra s    forelder, i = {s: []}, 0  # forelder er også køen: nøklene i innsettingsrekkefølge    while not maal <= (s := list(forelder)[i]):        forelder |= {res(s, a): forelder[s] + [a] for a in H if ok(s, a) and res(s, a) not in forelder}        i += 1    return forelder[s] def utfor(s, plan):  # kjør resten av planen; en handling som ikke er anvendbar, stopper alt    for a in plan:        s = res(s, a) if ok(s, a) else frozenset()    return s s, plan, utfort, replan = frozenset({"Ved(Kran)"}), [], 0, 0while not maal <= s and utfort < 60:    if not maal <= utfor(s, plan):  # planovervåking: når resten av planen målet?        plan, replan = planlegg(s), replan + (utfort > 0)    a, plan, utfort = plan[0], plan[1:], utfort + 1    s = res(s, a) if a != "Fyll" or random.random() >= p_feil else s  # kranen kan svikteprint(f"Utførte handlinger: {utfort}")print(f"Replanlegginger: {replan}")print(f"Mål nådd: {'ja' if maal <= s else 'nei, stoppet etter 60 handlinger'}")

Prøv: sett p_feil til 0 og se at Replanlegginger: er 0 og Utførte handlinger: er 11, og øk den så til 0.5: hver mislykket fylling koster én handling og én replanlegging.

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Forklar høynivåhandling, forfining og implementasjon, og finn implementasjonene til en høynivåhandling i et hierarki
  2. 02Regn ut antall implementasjoner med , og sammenlign med for primitivt søk
  3. 03Spor oppfatningstilstanden gjennom en sensorløs plan, også med betingede effekter
  4. 04Sammenlign sensorløs, betinget og online planlegging, og velg riktig form for et gitt miljø
  5. 05Forklar handlings-, plan- og målovervåking, og avgjør når planovervåking utløser replanlegging