Strict Standards: Non-static method DB::connect() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 32

Strict Standards: Non-static method DB::parseDSN() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB.php on line 520

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB.php on line 557

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 34

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 92

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB/common.php on line 1009

Strict Standards: Non-static method DB::isManip() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB/common.php on line 2200

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 97

Strict Standards: Non-static method DB::connect() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 32

Strict Standards: Non-static method DB::parseDSN() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB.php on line 520

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /usr/share/pear/DB.php on line 557

Strict Standards: Non-static method DB::isError() should not be called statically, assuming $this from incompatible context in /group/project/aicat/web/lib/database.php on line 34Catalogue of Artificial Intelligence Techniques

State-Driven Agents

A state-driven agent is an agent that performs an action based on its current state. States can change depending on its percept of the environment. Its state updates regularly by an algorithm that takes into account its sensory readings or knowledge about the world it is in and then comparing it to a state transition table.
The state changes are implemented as a deterministic finite-state machine (FSM), so that when a condition is satisfied it knows exactly which state to change to.

There are advantages to using state-driven agents:
1)Quick to code: There are many documented ways of programming a representation of a FSM and so you can accurately predict how long it will take to code.
2)Simple to debug: If whilst in a state the agent starts to act strangely you can already narrow it down to the code inside that one state that has the bug.
3)Fast: The deterministic FSM is very fast, generally utilising a lookup table. Much of the slowdown comes from the tests you do on the sensory data to choose the correct next state.
4)Simple to understand: Following a FSM is very easy; it can even be understood by non-programmers or programmers with no experience in your system.
5)Expandable: By just adding another state in the table and the rules to get to it you can get a large change in the agent’s behaviour.

Some limitations of this technique are:
1)Limited intelligence: The intelligence comes from the programmer predicting the correct response to stimuli, so it can only be as clever as the programmer that made the agent. If this technique is the sole of used then this also prevents it from ‘learning’ as it goes along. If it is in a state and sees a certain set of stimuli it will always do the same thing. It will not take into account past experiences.

For these reasons, state-driven agents are often used in programs where only the impression of intelligence is needed, for example the opponent in games, or as part of a larger solution incorporating other techniques such as neural nets.