Logan Brown


This is an extended implementation of the Stanford Research Institute Problem Solver (STRIPS), an automated planning algorithm. STRIPS can be used to solve a wide variety of problems ranging from navigating a room to solving a slide puzzle. This implementation was completed as part of my Haddington Dynamics summer internship project in 2021. For a complete description, documentation, and examples check out my github at the link above.
​
Overview:
This is a general description of the way the STRIPS processes information and how to think in terms of STRIPS.
If you are writing a program to solve a problem, the first step is to convert the problem to a form that is understandable to a computer. Let's first look at how STRIPS describes problems. STRIPS describes problems in terms of states and actions. A state is a collection of all of the information relevant to a problem at a given step, and the actions are all of the things that can be done to modify said state.
​As an example, think of a slide puzzle. A slide puzzle is a puzzle consisting of a grid of labeled squares with one empty space. You can slide the pieces neighboring the space into the space. The goal is to slide pieces around on a randomly arranged board to get all of the pieces in order. In this case, the state is the arrangement of pieces on the board, and the actions are the ways that you can slide pieces around on the board.

​As an example, think of a slide puzzle. A slide puzzle is a puzzle consisting of a grid of labeled squares with one empty space. You can slide the pieces neighboring the space into the space. The goal is to slide pieces around on a randomly arranged board to get all of the pieces in order. In this case, the state is the arrangement of pieces on the board, and the actions are the ways that you can slide pieces around on the board.
​
The job of STRIPS is to take an initial state, a goal state, and a list of actions, and determine an efficient sequence of actions that will transform the initial state to the goal state. For example, you could provide STRIPS with an unsolved slide puzzle as an initial state, a solved puzzle as a goal state, and the ways that you can move the pieces as actions, and STRIPS would return all of the moves that need to be made to solve the puzzle.