public abstract class AgentBasedModel<T extends GlobalState> extends java.lang.Object implements Model
Modifier and Type | Field and Description |
---|---|
AgentSystem<T> |
system |
Constructor and Description |
---|
AgentBasedModel() |
Modifier and Type | Method and Description |
---|---|
DoubleAccumulator |
createDoubleAccumulator(java.lang.String name)
createDoubleAccumulator(String, String) using the name for reporting
purposes. |
DoubleAccumulator |
createDoubleAccumulator(java.lang.String name,
java.lang.String displayName)
Create a
DoubleAccumulator . |
LongAccumulator |
createLongAccumulator(java.lang.String name)
createLongAccumulator(String, String) using the name for reporting
purposes. |
LongAccumulator |
createLongAccumulator(java.lang.String name,
java.lang.String displayName)
Create a
LongAccumulator . |
<A extends Agent<T>> |
generateGroup(java.lang.Class<A> agentClass,
long size)
generateGroup(Class, long, SerializableConsumer) without a data
injector so no initial function is run for agents |
<A extends Agent<T>> |
generateGroup(java.lang.Class<A> agentClass,
long size,
SerializableConsumer<A> dataInjector)
Create a
Group of agents. |
DoubleAccumulator |
getDoubleAccumulator(java.lang.String name) |
T |
getGlobals() |
LongAccumulator |
getLongAccumulator(java.lang.String name) |
<A extends Agent<T>> |
loadGroup(java.lang.Class<A> clazz,
Source source)
loadGroup(Class, Source, SerializableConsumer) without a data injector
so no initial function is run for agents |
<A extends Agent<T>> |
loadGroup(java.lang.Class<A> agentClass,
Source source,
SerializableConsumer<A> dataInjector)
|
void |
registerAgentType(java.lang.Class<? extends Vertex<T>> type) |
void |
registerLinkTypes(java.lang.Class... types) |
void |
registerLinkTypesContainer(java.lang.Class container) |
void |
registerMessageTypes(java.lang.Class... types) |
void |
registerMessageTypesContainer(java.lang.Class container) |
void |
run(Section... sections) |
<A extends Agent<T>> |
select(java.lang.Class<A> agentType) |
void |
setup()
An optional lifecycle point at which to take configured initial parameters and initialise
required internal state.
|
<A extends Agent<T>> |
stats(java.lang.Class<A> agentType) |
void |
step()
Required lifecycle method for implementing the calculation of a model.
|
public final AgentSystem<T extends GlobalState> system
public <A extends Agent<T>> Group<A> generateGroup(java.lang.Class<A> agentClass, long size)
generateGroup(Class, long, SerializableConsumer)
without a data
injector so no initial function is run for agentspublic <A extends Agent<T>> Group<A> generateGroup(java.lang.Class<A> agentClass, long size, SerializableConsumer<A> dataInjector)
Group
of agents.A
- Agent TypeagentClass
- Agent Class of agents to be created in this groupsize
- Number of agents to create in this groupdataInjector
- Function run when each agent is created which can be used to set
initialization values of agentGroup
instancepublic <A extends Agent<T>> Group<A> loadGroup(java.lang.Class<A> clazz, Source source)
loadGroup(Class, Source, SerializableConsumer)
without a data injector
so no initial function is run for agentspublic <A extends Agent<T>> Group<A> loadGroup(java.lang.Class<A> agentClass, Source source, SerializableConsumer<A> dataInjector)
public T getGlobals()
T
.public void registerMessageTypes(java.lang.Class... types)
public void registerMessageTypesContainer(java.lang.Class container)
public void registerLinkTypes(java.lang.Class... types)
public void registerLinkTypesContainer(java.lang.Class container)
public <A extends Agent<T>> AgentSelection<A> select(java.lang.Class<A> agentType)
public <A extends Agent<T>> AgentStatistics<A> stats(java.lang.Class<A> agentType)
public LongAccumulator createLongAccumulator(java.lang.String name, java.lang.String displayName)
LongAccumulator
.name
- Name used to access this accumulatordisplayName
- Name used for reporting the result of this accumulatorLongAccumulator
instancepublic DoubleAccumulator createDoubleAccumulator(java.lang.String name, java.lang.String displayName)
DoubleAccumulator
.name
- Name used to access this accumulatordisplayName
- Name used for reporting the result of this accumulatorLongAccumulator
instancepublic LongAccumulator createLongAccumulator(java.lang.String name)
createLongAccumulator(String, String)
using the name for reporting
purposes.public DoubleAccumulator createDoubleAccumulator(java.lang.String name)
createDoubleAccumulator(String, String)
using the name for reporting
purposes.public LongAccumulator getLongAccumulator(java.lang.String name)
public DoubleAccumulator getDoubleAccumulator(java.lang.String name)
public void setup()
Model
public void step()
Model
step will be called once or more times, with the external user or harness able to read outputs, change inputs, etc. in-between calls. Each step represents the moving forward in time, but the explicit notion of progress is left as specific to the implementing model.
public void run(Section... sections)