In artificial intelligence, STRIPS (Stanford Research Institute Problem Solver) is an automated planner invented by Richard Fikes and Nils Nilsson in 1971. The same name was later used to refer to the formal language of the inputs to this planner. This language is the base for most of the languages for expressing automated planning problem instances in use today. This article only describes the language, not the planner.
A STRIPS instance is composed of:
Mathematically, a STRIPS instance is a quadruple , in which each component has the following meaning:
A plan for such a planning instance is a sequence of operators that can be executed from the initial state and that leads to a goal state.
Formally, a state is a set of conditions: a state is represented by the set of conditions that are true in it. Transitions between states are modeled by a transition function, which is a function mapping states into new states that result from the execution of actions. Since states are represented by sets of actions, the transition function relative to the STRIPS instance is a function
where is the set of all subsets of , and is therefore the set of all possible states. The transition function can be defined as follows, in the assumption that actions can always be executed but they do not have effects if their preconditions are not met (this is a simplifying assumption):
| = | if and | |
| = | otherwise |
The function can be extended to sequences of actions by the following recursive equations:
A plan for a STRIPS instance is a sequence of actions such that the state that results from executing the actions in order from the initial state satisfies the goal conditions. Formally, satisfies the following two conditions:
The above language is actually the propositional version of STRIPS; in practice, conditions are often about objects: for example, that the position of a robot can be modeled by a predicate
A monkey is in a lab. The monkey wants some bananas. There are three locations in the lab – locations A, B and C. The monkey is at location A. There is a box in location C. There are some bananas in location B, but they are hanging from the ceiling. The monkey needs the box to get to the bananas.
Initial state: At(A), Level(low), BoxAt(C), BananasAt(B) Goal state: Have(Bananas) Actions: _Move(X, Y)_ //move from X to Y Preconditions: At(X), Level(low) Postconditions: not At(X), At(Y) _ClimbUp(Location)_ //climb up on the box Preconditions: At(Location), BoxAt(Location), Level(low) Postconditions: Level(high), not Level(low) _ClimbDown(Location)_ //climb down from the box Preconditions: At(Location), BoxAt(Location), Level(high) Postconditions: Level(low), not Level(high) _MoveBox(X, Y)_ //move the box from X to Y Preconditions: At(X), BoxAt(X), Level(low) Postconditions: BoxAt(Y), not BoxAt(X) _TakeBananas(Location)_ //take the bananas Preconditions: At(Location), BananasAt(Location), Level(high) Postcondition: Have(bananas)
Deciding the existence of a plan for a propositional STRIPS instance is PSPACE-complete. Various restrictions can be enforced on the instances to make the problem NP-complete.