Design Patterns
This page lays out some common design patterns for setting up your Phantom environment.
Simple Environment Pattern
This pattern is common for simple experiments. In this pattern all agents act at every
step. Subclassing an environment from the PhantomEnv
class is sufficient for this.
Finite State Machine Pattern
For more complex experiments with multiple steps and multiple agent groups potentially
with a subset of agents taking actions each turn Phantom provides the
FiniteStateMachineEnv
class. This formalises the environment as a free state
machine by extending the PhantomEnv
class and providing a clean interface for
managing the logic of each state and the transitions between states.
Alternate Turn Pattern (Stackelberg Game)
A simple but commonly used pattern is that of a free state machine with two states that
pass from one another. This is formally known as a Stackleberg game or a
Stackelberg competition. This
can easily be implemented using the FiniteStateMachineEnv
class.