Stability | experimental |
---|---|
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Safe Haskell | Safe-Inferred |
Tested with: GHC 7.6.3
This module introduces basic entities for the agent-based modeling.
- data Agent
- data AgentState
- newAgent :: Simulation Agent
- newState :: Agent -> Simulation AgentState
- newSubstate :: AgentState -> Simulation AgentState
- agentState :: Agent -> Event (Maybe AgentState)
- agentStateChanged :: Agent -> Signal (Maybe AgentState)
- agentStateChanged_ :: Agent -> Signal ()
- activateState :: AgentState -> Event ()
- stateAgent :: AgentState -> Agent
- stateParent :: AgentState -> Maybe AgentState
- addTimeout :: AgentState -> Double -> Event () -> Event ()
- addTimer :: AgentState -> Event Double -> Event () -> Event ()
- setStateActivation :: AgentState -> Event () -> Simulation ()
- setStateDeactivation :: AgentState -> Event () -> Simulation ()
- setStateTransition :: AgentState -> Event (Maybe AgentState) -> Simulation ()
Documentation
newAgent :: Simulation AgentSource
Create an agent.
newState :: Agent -> Simulation AgentStateSource
Create a new state.
newSubstate :: AgentState -> Simulation AgentStateSource
Create a child 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.