Overview
Agent Interactions
Interactions from params.classes.bond_types.acts_allowed are implemented in standalone files that implement the interface from interactions.BaseInteraction. This allows for the logic related to an interaction type to be consolidated into one place and make incorporating a new interaction type as simple as possible.
To add a new interaction:
- Add the param to
param.classes.bond_types.acts_allowed - Add a file to
interactions/which creates a class that is a sub-class ofBaseInteraction- Implement the methods of
BaseInteractionwhich are needed for this interaction - Not all methods are needed for all interactions (see below for details on the methods)
- Implement the methods of
- Re-export the feature from
interactions/__init__.py - Add tests in
tests/interactions/ - Add it to the docs in
docs/api/interactions/and to the nav inmkdocs.yml
The TITAN class uses sub-classes of BaseInteraction to initialize the object/call methods as appropriate.
BaseInteraction
Source code in titan/interactions/base_interaction.py
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
name: str = ''
class-attribute
instance-attribute
Name of interaction in the params file.
interact(model, rel)
classmethod
Given a model and a relation, have the agents in the relationship interact for a time step.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
TITAN
|
The running model |
required |
rel |
Relationship
|
The relationship where interaction is happening |
required |
Source code in titan/interactions/base_interaction.py
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |