Package lnsc.page

PAGE: Percepts, Actions, Goals, Environment

See:
          Description

Interface Summary
Action Defines an action as generally understand in RL and other AI problems.
ActionGenerator Generates list of possible actions.
ActionRepresentation Action representation converter, use to convert an Action into a real-vector.
Agent Defines an agent as generally understand in RL and other AI problems.
Environment Defines a state space and its controler.
State Defines a state as generally understand in RL and other AI problems.
StateGenerator Generates next (or observable) states.
StateRepresentation State representation converter, use to convert a state into a real-vector.
 

Class Summary
AbstractAction Optional basis for class implementing Action interface.
AbstractActionGenerator Optional basis for class implementing ActionGenerator interface.
AbstractActionRepresentation Optional basis for class implementing ActionRepresentation interface.
AbstractAgent Optional basis for class implementing Agent interface.
AbstractObservableAgent Optional basis for class implementing Agent interface.
AbstractObservableEnvironment Optional basis for class implementing Environment interface.
AbstractState Optional basis for class implementing State interface.
AbstractStateGenerator Optional basis for class implementing StateGenerator interface.
AbstractStateRepresentation Optional basis for class implementing StateRepresentation interface.
AbstractStateWithGen Optional basis for class implementing State interface.
DefaultActionsEnumerator Creates an actions enumator based on an array of actions.
SingleAgentEnvironment Run a single agent environement for a given number of step or until success.
 

Package lnsc.page Description

PAGE: Percepts, Actions, Goals, Environment

This package contains the definition of the basic interfaces for an agent/environement simulator. It is based on page definition from Russell & Norvig (1995).

Description:

Classes with the Environment interface are considered as environements or artificial worlds and classes with the Agent interface are considered artificial animated objects (intelligent or not). Agents are usually placed into an environement class and it is that class that allows the agent to take actions into the world and that provides the agent with the current state.

The environement must provide the agent with a class implementing the State interface as well as classes implementing the ActionGenerator interface and the Action respectively. An environment usually also have a class with the StateGenerator interface to generate the next states once an agent as choosen an action.

Since some agents are doing search internally (specially in deterministic environment), an agent can also have its own sets of classes implementing State, Action, StateGenerator, and ActionGenerator to do its internal search. The state generator is first use to transform the environment state into its internal state, and it can then use its own set of classes to perform a search in its head. Those classes depend on the amount of knowledge an agent might have of the environment as opposed to the environment classes who have full knowledge of it. The environment itself may have two sets of states and actions, one for its internal model of the world, and one with only the information accessible to the agent. StateRepresentation and ActionRepresentation interfaces are for agents and/or algorithms who require real-vector state or action representation.

The package also has some generic environement simulator that work on any state/action/generator environment with certain properties as well as some generic search and learning algorithms that work on any state/action/generator/representation agent.

Changes in 1.1

The State and ActionGenerator interface has been extended to better support long list of actions and depth search by having a new method for returning an Enumerator of action instead of an array of actions. Defaults implementation in abstract base classes creates default enumerator reading the array of previous methods.

The State interface has been extended to better support partially observable states (in code as !isObservable) and allow environment to automatically convert them into states that can be observed by the agent. By default, older packages states requiring this librairy (version 1) will be considered observable and the default implementation provided by AbstractState will provide the missing interface (return the state itself). The format is such that if multiple agent can observe a state at the same time, a list of state is returned. In the same spirit, AbstractStateWithGen now requires an extra StateGenerator for partially observable state. {link lnsc.page.SingleAgentEnvironment} has been updated to automatically handle such states space.

State and Agent interfaces now have a toDataSet method. Default null implementation is provided in abstract classes. There are now new Observable agents and environments, who can use that DataSet description to notify obervers of the current agents and environment state. SingleAgentEnvironment does it.

Older code should work without problem if it derives abstract base classes.

One changed that has do be accounted in older code is the renaming of getStates for getNextStates in State interface for semantical reason. Also some of the StateGenerator and ActionGenerator property have been duplicated into State and these addition may required some code updates.

Changes in 1.2

The StateRepresentation interface has been extended to better support representation that have internal state that affect their output of the current state. This allows support for representation that deal with time such as representaiton based on recurrent network, or on delay lines, etc.

Basic (@link Object#toString()} method where added.

Changes in 1.3

The Agent, StateRepresentation, and ActionRepresentation interface has been extended to force support of Serialization. For AbstractObservableAgent, obervers are not part of the serialization process (they are lost in the serialization process). Also note that non-stateless information is also assumed lost, i.e. that de-serialization will implied a call to newEpisode in agents, and to reset in state representation.

The code of this library and the conceptual structure of this library are the intellectual property of Francois Rivest. This package was developed for research purpose and any commercial use, and non-educational use is strictly prohibited unless explicit written consent is given by the author Francois Rivest. Copyright 2003-2008.