Übung 4 A3a) Partial-Order Planning

Moderator: Einführung in die Künstliche Intelligenz

CJo
Neuling
Neuling
Beiträge: 8
Registriert: 6. Sep 2013 15:25

Übung 4 A3a) Partial-Order Planning

Beitrag von CJo » 17. Jul 2018 16:21

Hallo zusammen,

Bzgl Aufgabe 3a der Übung 4 habe ich nicht verstanden, warum vom vierten auf den fünften Schritt block a, b und on(a, b) in den open precond nicht so wie c, d und on(c, d) in den letzten Schritten behandelt wurden und auch in die causal links aufgenommen werden.
Wie lässt sich das Verschwinden von on(b, table) und on(d,table) aus den open precond in diesem Schritt erklären?
Bzgl. unstack(a, b) < unstack(c, d) hätte man nicht direkt putdown(a) < unstack(c, d) im sechsten Schritt machen können? Was setzt die Kondition unstack(a,b) < unstack(c,d) der Kondition putdown(a) < unstack(c, d) voraus?
Vielen Dank!
LG.

Tobias Joppen
Mausschubser
Mausschubser
Beiträge: 43
Registriert: 20. Feb 2017 15:08

Re: Übung 4 A3a) Partial-Order Planning

Beitrag von Tobias Joppen » 18. Jul 2018 10:24

Hallo,
Der gewählte Ablauf ist nur ein Beispiel und muss nicht genau so gemacht werden.
Die von dir angesprochene Aktion ist Start. Und im Startzustand gibt es eben block(a), block(b), on(b,table) und on(d, table) [siehe Aufgabenstellung]. Daher werden diese entfernt.

Zur zweiten Frage: Ich gehe hier einfach nach dem Algorithmus, und der erkennt einen Konflikt zwischen Start->handempty->unstack(a,b) und unstack(c,d)->holding(c)->putdown(c) - man kann eben nicht die Hand frei haben und etwas halten.
Rein nach Algorithmus lösen wir diesen Konflikt auf, indem wir unstack(a,b) vor unstack(c,d) ausführen.
Das ist auch die einfachste Möglichkeit den Konflikt aufzulösen. Tatsächlich löst putdown(a)<unstack(c,d) den Konflikt auch auf, aber das sieht der Algorithmus nicht sofort. Dazu müsste man eine kurze Suche starten und die Causal Links verfolgen um herauszufinden was mit handempty wirklich passiert. Das erhöht definitiv die Komplexität des Algorithmus, auch wenn man es als Mensch hier in diesem Beispiel vielleicht einfach erkennt.

Passt das so?

Liebe Grüße,
Tobias

Jannis
Mausschubser
Mausschubser
Beiträge: 63
Registriert: 15. Apr 2015 17:10

Re: Übung 4 A3a) Partial-Order Planning

Beitrag von Jannis » 18. Jul 2018 12:05

Tobias Joppen hat geschrieben:
18. Jul 2018 10:24
Die von dir angesprochene Aktion ist Start. Und im Startzustand gibt es eben block(a), block(b), on(b,table) und on(d, table) [siehe Aufgabenstellung]. Daher werden diese entfernt.
Aber es wird nur ein einziger causal link Start → handempty → unstack(a,b) hinzugefügt, obwohl wir doch eigentlich für alle preconditions einzelne causal links erstellen müssten. Insbesondere pickt sich der Algorithmus ja immer nur eine einzige precondition heraus, die er behandeln möchte. Es ist also doch gar nicht möglich, dass preconditions nicht in causal links vorkommen und einfach "verschluckt" werden. Später auf Seite 7-8 der Musterlösung wird doch auch für block(c), block(d), on(c,d) jeweils ein eigener causal link erstellt.

Meinem Verständnis nach würden in dem Schritt (bzw. sind es ja eigentlich mehrere Schritte)
  • Start → handempty → unstack(a,b)
  • Start → block(a) → unstack(a,b)
  • Start → block(b) → unstack(a,b)
  • Start → on(a, b) → unstack(a,b)
  • Start → on(b, table) → Finish
  • Start → on(d, table) → Finish
als causal links hinzukommen.

Tobias Joppen
Mausschubser
Mausschubser
Beiträge: 43
Registriert: 20. Feb 2017 15:08

Re: Übung 4 A3a) Partial-Order Planning

Beitrag von Tobias Joppen » 18. Jul 2018 13:13

Ja, das ist richtig. Das müssen wohl mehrere Schritte sein und die entsprechenden causal links müssen mit aufgenommen werden.

Antworten

Zurück zu „Einführung in die Künstliche Intelligenz“