aivika-0.7: A multi-paradigm simulation library

Stabilityexperimental
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Safe HaskellSafe-Inferred

Simulation.Aivika.Agent

Description

Tested with: GHC 7.6.3

This module introduces basic entities for the agent-based modeling.

Synopsis

Documentation

data Agent Source

Represents an agent.

Instances

data AgentState Source

Represents the agent state.

Instances

newAgent :: Simulation AgentSource

Create an agent.

newState :: Agent -> Simulation AgentStateSource

Create a new state.

agentState :: Agent -> Event (Maybe AgentState)Source

Return the selected downmost active state.

agentStateChanged :: Agent -> Signal (Maybe AgentState)Source

Return a signal that notifies about every change of the state.

agentStateChanged_ :: Agent -> Signal ()Source

Return a signal that notifies about every change of the state.

activateState :: AgentState -> Event ()Source

Select the next downmost active state. The activation is repeated while there is the transition state defined by setStateTransition.

stateAgent :: AgentState -> AgentSource

Return the corresponded agent.

stateParent :: AgentState -> Maybe AgentStateSource

Return the parent state or Nothing.

addTimeout :: AgentState -> Double -> Event () -> Event ()Source

Add to the state a timeout handler that will be actuated in the specified time period, while the state remains active.

addTimer :: AgentState -> Event Double -> Event () -> Event ()Source

Add to the state a timer handler that will be actuated in the specified time period and then repeated again many times, while the state remains active.

setStateActivation :: AgentState -> Event () -> Simulation ()Source

Set the activation computation for the specified state.

setStateDeactivation :: AgentState -> Event () -> Simulation ()Source

Set the deactivation computation for the specified state.

setStateTransition :: AgentState -> Event (Maybe AgentState) -> Simulation ()Source

Set the transition state which will be next and which is used only when activating the state directly with help of activateState. If the state was activated intermediately, when activating directly another state, then this computation is not used.