STRIPS

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

STRIPS (Stanford Research Institute Problem Solver) ist ein von Richard Fikes und Nils Nilsson im Jahr 1971 entwickelter automatischer Planer. Der Name STRIPS wurde später verwendet, um sich auf die formale Sprache zu beziehen, die als Eingabe für den Planer diente und heute die Grundlage zum Beschreiben der meisten Problemdomänen bietet. Dieser Artikel bezieht sich nur auf die Sprache, nicht auf den Planer.

Definition[Bearbeiten | Quelltext bearbeiten]

Ein STRIPS-Modell besteht aus:

  • einem Anfangszustand;
  • einem Zielzustand, also der Situation, die der Planer erreichen will;
  • eine Menge von Aktionen. Für jede Aktion muss Folgendes gegeben sein:
    • Vorbedingungen (was muss gegeben sein, bevor die Aktion ausgeführt werden kann);
    • Nachbedingungen (was ist erreicht, nachdem die Aktion ausgeführt wurde).

Mathematisch gesehen, ist ein STRIPS-Modell ein 4-Tupel , in dem jede Komponente folgende Bedeutung hat:

  1. ist eine Menge von Bedingungen;
  2. ist eine Menge von Operationen; jeder Operator ist dabei selbst ein 4-Tupel , wobei jedes Element eine Menge von Bedingungen ist. Die vier Mengen beschreiben in gegebener Reihenfolge, welche Bedingungen müssen wahr sein, damit die Aktion ausgeführt werden kann, welche Bedingungen müssen falsch sein, welche Bedingungen werden durch das Ausführen der Aktion wahr, welche werden falsch;
  3. der Startzustand, beschrieben durch eine Menge von Bedingungen, die zu Beginn wahr sind (alle anderen sind demnach falsch);
  4. der Zielzustand; gegeben als Paar , das Beschreibt, welche Bedingungen wahr und welche falsch sein müssen.

Ein Plan in einem solchen Planungsmodell ist eine Sequenz von Aktionen, die vom Startzustand aus erfolgen und zu dem Zielzustand führen.

Formal gesehen, ist ein Zustand eine Menge von Bedingungen – ein Zustand wird dabei von den Bedingungen beschrieben, die wahr sind.

Übergänge zwischen den Zuständen werden durch eine Übergangsfunktion beschrieben, die einen Zustand und eine Aktion auf einen anderen Zustand abbildet:

, indem Menge aller Teilmengen von ist, und somit alle möglichen Zustände bei einer gegebenen Menge P von Bedingungen.

Die Übergangsfunktion kann wie folgt definiert werden, wobei davon ausgegangen wird, dass Aktionen immer ausgeführt werden können, jedoch keinen Effekt haben, wenn ihre Vorbedingungen nicht erfüllt sind:

=         falls und
  = sonst

Die Übergangsfunktion kann auf Folgen von Aktionen mittels Rekursion angewandt werden:

Ein Plan für ein STRIPS-Modell ist eine Folge von Aktionen, sodass der Zustand, der aus der Folge von Aktionen resultiert, angefangen beim Startzustand, letztendlich zum Zielzustand führt. Formal ist ein Plan für , falls die folgenden beiden Bedingungen erfüllt:

Beispiel für ein STRIPS-Problem[Bearbeiten | Quelltext bearbeiten]

Ein Affe ist an der Position A in einem Labor. Eine Box steht an der Position C. Der Affe möchte die Bananen haben, die von der Decke an der Position B hängen. Er muss jedoch die Box bewegen und auf sie klettern, um sie zu erreichen.

Anfangszustand: At(A), Level(low), BoxAt(C), BananasAt(B)

Zielzustand: Have(Bananas)

Aktionen:
               // move from X to Y
               _Move(X, Y)_
               Preconditions: At(X), Level(low)
               Postconditions: not At(X), At(Y)
               
               // climb up on the box
               _ClimbUp(Location)_
               Preconditions: At(Location), BoxAt(Location), Level(low)
               Postconditions: Level(high), not Level(low)
               
               // climb down from the box
               _ClimbDown(Location)_
               Preconditions: At(Location), BoxAt(Location), Level(high)
               Postconditions: Level(low), not Level(high)
               
               // move monkey and box from X to Y
               _MoveBox(X, Y)_
               Preconditions: At(X), BoxAt(X), Level(low)
               Postconditions: BoxAt(Y), not BoxAt(X), At(Y), not At(X)
               
               // take the bananas
               _TakeBananas(Location)_
               Preconditions: At(Location), BananasAt(Location), Level(high)
               Postconditions: Have(bananas)

Quellen[Bearbeiten | Quelltext bearbeiten]

  • C. Bäckström and B. Nebel (1995). Complexity results for SAS+ planning. Computational Intelligence, 11:625-656.
  • T. Bylander (1991). Complexity results for planning. In Proceedings of the Twelfth International Joint Conference on Artificial Intelligence (IJCAI'91), pages 274-279.
  • R. Fikes and N. Nilsson (1971). STRIPS: a new approach to the application of theorem proving to problem solving. Artificial Intelligence, 2:189-208.
  • Stuart Russell, Peter Norvig: Künstliche Intelligenz: Ein moderner Ansatz, August 2004, Pearson Studium, ISBN 3-8273-7089-2 (deutsche Übersetzung der 2. Auflage)