wegeplanung mit domainunabhängigen planern realisieren

46
Felix Mühlbauer, 4.7.2001 Wegeplanung mit Domainunabhängigen Planern realisieren Projektseminar 2001: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ Felix Mühlbauer

Upload: bill

Post on 13-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Wegeplanung mit Domainunabhängigen Planern realisieren. Projektseminar 2001: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ Felix Mühlbauer. Übersicht. Domainunabhängige Planer PDDL (Planning Domain Definition Language) traindomain.pddl (unsere Eisenbahndomain) Implementierung. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Wegeplanung mitDomainunabhängigen

Planern realisieren

Projektseminar 2001: ChuChu

„Sprachgesteuerte Geräte (Modelleisenbahn)“

Felix Mühlbauer

Page 2: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 2

Übersicht

• Domainunabhängige Planer

• PDDL (Planning Domain Definition Language)

• traindomain.pddl (unsere Eisenbahndomain)

• Implementierung

Page 3: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 3

Domainunabhängige Planer

• domainunabhängige Planung ist sehr jung

• planning competition AIPS-98(Artificial Intelligence Planning Systems) http://www.cs.cmu.edu/~aips98

• AIPS Komitee definiert PDDL Standard

• Bsp: IPP, FF, talplaner, …

Page 4: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 4

PDDL

PDDL Vorfahren:• Pednault‘s ADL (Aussagen)

• UMCP (Aktionen)

• UCPOP

• SIPE-2

• Prodigy-4.0

• Unpop

Page 5: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 5

PDDL domains

domain Beispiel:

(define (domain ChuChu)

(:requirements :strips :typing :conditional-effects

:existential-preconditions)

(:types track engine)

(:predicates (at ?eng - engine ?t - track)

(connects ?t1 - track ?t2 - track)

...

<actions>

...

)

Page 6: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 6

PDDL domains

domain Beispiel:

(define (domain ChuChu)

(:requirements :strips :typing :conditional-effects

:existential-preconditions))

(:types track engine)

(:predicates (at ?eng - engine ?t - track)

(connects ?t1 - track ?t2 - track)

...

<actions>

...

)

Page 7: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 7

PDDL domains

domain Beispiel:

(define (domain ChuChu)

(:requirements :strips :typing :conditional-effects

:existential-preconditions)

(:types track engine)

(:predicates (at ?eng - engine ?t - track)

(connects ?t1 - track ?t2 - track)

...

<actions>

...

)

Page 8: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 8

PDDL domains

domain Beispiel:

(define (domain ChuChu)

(:requirements :strips :typing :conditional-effects

:existential-preconditions)

(:types track engine)

(:predicates (at ?eng - engine ?t - track)

(connects ?t1 - track ?t2 - track))

...

<actions>

...

)

Page 9: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 9

PDDL domains

domain Beispiel:

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(or (connects ?from ?to)

(connects ?to ?from))

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

)

Page 10: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 10

PDDL domains

domain Beispiel:

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(or (connects ?from ?to)

(connects ?to ?from))

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

)

Page 11: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 11

PDDL domains

domain Beispiel:

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(or (connects ?from ?to)

(connects ?to ?from))

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

)

Page 12: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 12

PDDL domains

domain Beispiel:

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(or (connects ?from ?to)

(connects ?to ?from))

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

)

Page 13: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 13

PDDL facts

facts Beispiel:

(define (problem fact1)

(:domain chuchu)

(:objects t1 t2 t3 t4 - track

eng1 - engine))

(:init

(connects t1 t2)

(connects t2 t3)

(connects t3 t4)

(connects t4 t1)

(at eng1 t1))

(:goal

(at eng1 t3))

)

Page 14: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 14

PDDL facts

facts Beispiel:

(define (problem fact1)

(:domain chuchu)

(:objects t1 t2 t3 t4 - track

eng1 - engine))

(:init

(connects t1 t2)

(connects t2 t3)

(connects t3 t4)

(connects t4 t1)

(at eng1 t1))

(:goal

(at eng1 t3))

)

Page 15: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 15

PDDL facts

facts Beispiel:

(define (problem fact1)

(:domain chuchu)

(:objects t1 t2 t3 t4 - track

eng1 - engine))

(:init

(connects t1 t2)

(connects t2 t3)

(connects t3 t4)

(connects t4 t1)

(at eng1 t1))

(:goal

(at eng1 t3))

)

Page 16: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 16

PDDL facts

facts Beispiel:

(define (problem fact1)

(:domain chuchu)

(:objects t1 t2 t3 t4 - track

eng1 - engine))

(:init

(connects t1 t2)

(connects t2 t3)

(connects t3 t4)

(connects t4 t1)

(at eng1 t1))

(:goal

(at eng1 t3))

)

Page 17: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 17

FF Ausgabe

FF (Fast-Forward von Jörg Hoffmann) Bildschirmausgabe:

ff: parsing domain file

domain 'CHUCHU' defined ... done.

ff: parsing problem file

problem 'FACT1' defined ... done.

ff: found legal plan as follows

step

0: MOVE ENG1 T1 T2

1: MOVE ENG1 T2 T3

time spent:

0.06 seconds instantiating 0 easy, 840 hard action templates

0.00 seconds reachability analysis, yielding 84 facts and 36 actions

0.00 seconds creating final representation with 32 relevant facts

0.00 seconds building connectivity graph

0.00 seconds searching, evaluating 3 states, to a max depth of 1

0.06 second s total time

Page 18: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 18

traindomain.pddl

Aufgabenstellung:

Wegeplanung mit domainunabhängigen Planern realisieren

Page 19: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 19

traindomain.pddl

ein Gleisplanbeispiel

Page 20: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 20

traindomain.pddl

Problem:

In welche Richtung fährt die Lok ?

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(or (connects ?from ?to)

(connects ?to ?from))

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

)

Page 21: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 21

traindomain.pddl

domain Erweiterung:

(:predicates

(at ?eng - engine ?t - track)

(connects ?t1 - track ?t2 - track)

(connects-rev ?t1 - track ?t2 - track)

(switch ?from - track ?to1 - track ?to2 - track)

(switch-rev ?from - track ?to1 - track ?to2 - track)

(moves-rev ?eng - engine)

(can-turn ?eng - engine)

(is-turner ?t1 - track ?t2 - track)

(noturn ?t – track)

(turnok ?eng – engine)

)

Page 22: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 22

traindomain.pddl

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(not (exists (?e - engine)

(and (not (= ?e ?eng))

(at ?e ?to))))

(or (and (can-turn ?eng)

(or (connects ?from ?to)

(connects-rev ?from ?to)))

(and (not (can-turn ?eng))

(or (and (moves-rev ?eng)

(connects-rev ?from ?to))

(and (not (moves-rev ?eng))

(connects ?from ?to))))))

Page 23: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 23

traindomain.pddl

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(not (exists (?e - engine)

(and (not (= ?e ?eng))

(at ?e ?to))))

(or (and (can-turn ?eng)

(or (connects ?from ?to)

(connects-rev ?from ?to)))

(and (not (can-turn ?eng))

(or (and (moves-rev ?eng)

(connects-rev ?from ?to))

(and (not (moves-rev ?eng))

(connects ?from ?to))))))

Page 24: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 24

traindomain.pddl

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(not (exists (?e - engine)

(and (not (= ?e ?eng))

(at ?e ?to))))

(or (and (can-turn ?eng)

(or (connects ?from ?to)

(connects-rev ?from ?to)))

(and (not (can-turn ?eng))

(or (and (moves-rev ?eng)

(connects-rev ?from ?to))

(and (not (moves-rev ?eng))

(connects ?from ?to))))))

Page 25: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 25

traindomain.pddl

(:action move

:parameters (?eng - engine ?from - track ?to - track)

:precondition

(and (at ?eng ?from)

(not (= ?from ?to))

(not (exists (?e - engine)

(and (not (= ?e ?eng))

(at ?e ?to))))

(or (and (can-turn ?eng)

(or (connects ?from ?to)

(connects-rev ?from ?to)))

(and (not (can-turn ?eng))

(or (and (moves-rev ?eng)

(connects-rev ?from ?to))

(and (not (moves-rev ?eng))

(connects ?from ?to))))))

Page 26: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 26

traindomain.pddl

(:action move

...

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(moves-rev ?eng))

(not (moves-rev ?eng)))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(not (moves-rev ?eng)))

(moves-rev ?eng)))

)

Page 27: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 27

traindomain.pddl

(:action move

...

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(moves-rev ?eng))

(not (moves-rev ?eng)))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(not (moves-rev ?eng)))

(moves-rev ?eng)))

)

Page 28: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 28

traindomain.pddl

(:action move

...

:effect

(and (at ?eng ?to)

(not (at ?eng ?from))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(moves-rev ?eng))

(not (moves-rev ?eng)))

(when (and (or (is-turner ?from ?to)

(is-turner ?to ?from))

(not (moves-rev ?eng)))

(moves-rev ?eng)))

)

Page 29: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 29

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 30: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 30

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 31: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 31

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 32: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 32

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 33: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 33

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 34: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 34

traindomain.pddl

(:action toggle-switch :parameters (?from - track ?to1 - track ?to2 - track) :precondition (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1) (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) :effect (and (when (or (switch ?from ?to1 ?to2) (switch ?from ?to2 ?to1)) (and (connects ?from ?to1) (connects-rev ?to1 ?from) (not (connects ?from ?to2)) (not (connects-rev ?to2 ?from)))) (when (or (switch-rev ?from ?to1 ?to2) (switch-rev ?from ?to2 ?to1)) (and (connects-rev ?from ?to1) (connects ?to1 ?from) (not (connects-rev ?from ?to2)) (not (connects ?to2 ?from)))))))

Page 35: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 35

traindomain.pddl

Problem beim vorhandenem Wegplaner:

Im Rangiermodus darf die Weiche nicht schalten, wenn sich noch Wagons darauf befinden.

Die Lok muss nach der Weiche noch weiterfahren bevor sie wieder über die Weiche zurückfährt.

Page 36: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 36

traindomain.pddl

(:action move :parameters (?eng - engine ?from - track ?to - track) :precondition (and (at ?eng ?from) (not (= ?from ?to)) (not (exists (?e - engine) (and (not (= ?e ?eng)) (at ?e ?to)))) (or (and (can-turn ?eng) (or (not (noturn ?from)) (and (noturn ?from) (turnok ?eng))) (or (connects ?from ?to) (connects-rev ?from ?to))) (and (not (can-turn ?eng)) (or (and (moves-rev ?eng) (connects-rev ?from ?to)) (and (not (moves-rev ?eng)) (connects ?from ?to))))))

Page 37: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 37

traindomain.pddl

(:action move :parameters (?eng - engine ?from - track ?to - track) :precondition (and (at ?eng ?from) (not (= ?from ?to)) (not (exists (?e - engine) (and (not (= ?e ?eng)) (at ?e ?to)))) (or (and (can-turn ?eng) (or (not (noturn ?from)) (and (noturn ?from) (turnok ?eng))) (or (connects ?from ?to) (connects-rev ?from ?to))) (and (not (can-turn ?eng)) (or (and (moves-rev ?eng) (connects-rev ?from ?to)) (and (not (moves-rev ?eng)) (connects ?from ?to))))))

Page 38: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 38

traindomain.pddl

(:action move :parameters (?eng - engine ?from - track ?to - track) :precondition (and (at ?eng ?from) (not (= ?from ?to)) (not (exists (?e - engine) (and (not (= ?e ?eng)) (at ?e ?to)))) (or (and (can-turn ?eng) (or (not (noturn ?from)) (and (noturn ?from) (turnok ?eng))) (or (connects ?from ?to) (connects-rev ?from ?to))) (and (not (can-turn ?eng)) (or (and (moves-rev ?eng) (connects-rev ?from ?to)) (and (not (moves-rev ?eng)) (connects ?from ?to))))))

Page 39: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 39

traindomain.pddl

(:action move ... :effect (and (at ?eng ?to) (not (at ?eng ?from)) (when (and (or (is-turner ?from ?to) (is-turner ?to ?from)) (moves-rev ?eng)) (not (moves-rev ?eng))) (when (and (or (is-turner ?from ?to) (is-turner ?to ?from)) (not (moves-rev ?eng))) (moves-rev ?eng)) (when (noturn ?from) (turnok ?eng)) (when (not (noturn ?from)) (not (turnok ?eng))))) ))

Page 40: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 40

traindomain.pddl

(:action move ... :effect (and (at ?eng ?to) (not (at ?eng ?from)) (when (and (or (is-turner ?from ?to) (is-turner ?to ?from)) (moves-rev ?eng)) (not (moves-rev ?eng))) (when (and (or (is-turner ?from ?to) (is-turner ?to ?from)) (not (moves-rev ?eng))) (moves-rev ?eng)) (when (noturn ?from) (turnok ?eng)) (when (not (noturn ?from)) (not (turnok ?eng))))) ))

Page 41: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 41

traindomain.pddl

(define (problem fact2) (:domain chuchu) (:objects t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 - track tu1 tu2 tu3 tu4 - track e1 e2 - engine) (:init;;tracks n switches (connects t2 t3) (connects-rev t3 t2) (switch t10 t1 t11) (noturn t10) (switch-rev t2 t1 t11) (noturn t2) (switch t3 t4 tu1) (noturn t3) (switch t4 t5 tu2) (noturn t4) (connects t5 t6) (connects-rev t6 t5) (connects t6 t7) (connects-rev t7 t6) (switch-rev t8 t7 tu3) (noturn t8) (switch-rev t9 t8 tu4) (noturn t9) (connects t9 t10) (connects-rev t10 t9);; turners (connects tu1 tu2) (connects tu2 tu1) (is-turner tu1 tu2) (connects-rev tu3 tu4) (connects-rev tu4 tu3) (is-turner tu3 tu4);; engines (at e1 t1) ) (:goal (at e1 t11)))

Page 42: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 42

traindomain.pddl

Ausgabe von FF:

step 0: TOGGLE-SWITCH T3 TU1 T4

1: TOGGLE-SWITCH T2 T1 T11

2: MOVE E1 T1 T2

3: TOGGLE-SWITCH T2 T11 T1

4: MOVE E1 T2 T3

5: MOVE E1 T3 TU1

6: MOVE E1 TU1 TU2

7: TOGGLE-SWITCH T4 TU2 T5

8: TOGGLE-SWITCH T3 T4 TU1

9: MOVE E1 TU2 T4

10: MOVE E1 T4 T3

11: MOVE E1 T3 T2

12: MOVE E1 T2 T11

Page 43: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 43

traindomain.pddl

Zusammenfassung traindomain.pddl:

• Aktionen für Lok bewegen und Weiche schalten

• Kollisionsvermeidung

• Rangiermodus

• Lok wendet nicht auf oder direkt nach einer Weiche

Page 44: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 44

Implementierung

• der Gleisplan liegt als Graph von class gleisBauteil Objekten vor.

• ein PDDL facts file wird generiert und FF aufgerufen.

• die Ausgabe wird geparst (nur MOVE actions) und ein Vektor von class gleisBauteil erzeugt.

• Im Vektor sind nun die von der Lok abzufahrenden Gleisbauteile gespeichert.

• die übergeordnete Schicht übernimmt die Steuerung der Lok (auch Weichen schalten).

Page 45: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 45

• Domainunabhängige Planer

• PDDL (Planning Domain Definition Language) Syntax anhand von Beispielen

• traindomain.pddl – unsere Eisenbahndomain; mit funktionalen Erweiterungen im Vergleich zum bestehenden Algorithmus

• Implementierung

• mit Planern könnten sämtliche Aktionen (nicht nur Wegplanung) gesteuert werden.

Zusammenfassung

Page 46: Wegeplanung mit Domainunabhängigen  Planern realisieren

Felix Mühlbauer, 4.7.2001

Projektseminar: ChuChu „Sprachgesteuerte Geräte (Modelleisenbahn)“ 46

ChuChu

Vielen Dank

für Ihre Aufmerksamkeit

Ende