public abstract class BaseGraph<S extends simudyne.core.graph.BaseGlobalState,LAcc extends LongAccumulator,DAcc extends DoubleAccumulator> extends java.lang.Object implements Graph<S>
| Modifier and Type | Field and Description |
|---|---|
protected Configuration |
config |
protected ModelContext |
context |
java.util.concurrent.ConcurrentHashMap<java.lang.String,DAcc> |
doubleAccumulators |
protected simudyne.core.FeatureFlags |
featureFlags |
protected simudyne.core.graph.GraphConfiguration |
graphConfig |
protected boolean |
isSetup |
protected java.util.Set<java.lang.Class<? extends Link>> |
linkClasses |
protected static org.slf4j.Logger |
logger |
java.util.concurrent.ConcurrentHashMap<java.lang.String,LAcc> |
longAccumulators |
protected java.util.Set<java.lang.Class<? extends Vertex<S>>> |
vertexClasses |
| Modifier | Constructor and Description |
|---|---|
protected |
BaseGraph(ModelContext context,
simudyne.core.graph.GraphConfiguration graphConfig,
S globalState) |
| Modifier and Type | Method and Description |
|---|---|
<T extends Vertex<S>> |
addVertices(java.lang.Class<T> vertexType,
long vertexCount)
Add a number of agents to the system.
|
<T extends Vertex<S>> |
addVertices(java.lang.Class<T> vertexType,
long vertexCount,
SerializableBiConsumer<InitContext,T> dataInjector)
Add a number of agents to the system.
|
protected abstract <T extends Vertex<S>> |
addVerticesImpl(java.lang.Class<T> vertexType,
long vertexCount,
SerializableBiConsumer<InitContext,T> dataInjector) |
void |
beginStep()
reset all the accumulator that haven't been flagged as persistent
|
DoubleAccumulator |
createDoubleAccumulator(java.lang.String name,
java.lang.String displayName)
Create a new
DoubleAccumulator on the AgentSystem. |
DoubleAccumulator |
createDoubleAccumulator(java.lang.String name,
java.lang.String displayName,
double initialValue)
Create a new
DoubleAccumulator on the AgentSystem. |
protected abstract DoubleAccumulator |
createDoubleAccumulatorImpl(java.lang.String name,
java.lang.String displayName) |
protected abstract DoubleAccumulator |
createDoubleAccumulatorImpl(java.lang.String name,
java.lang.String displayName,
double initialValue) |
LongAccumulator |
createLongAccumulator(java.lang.String name,
java.lang.String displayName)
Create a new
LongAccumulator on the AgentSystem. |
LongAccumulator |
createLongAccumulator(java.lang.String name,
java.lang.String displayName,
long initialValue)
Create a new
LongAccumulator on the AgentSystem. |
protected abstract LongAccumulator |
createLongAccumulatorImpl(java.lang.String name,
java.lang.String displayName) |
protected abstract LongAccumulator |
createLongAccumulatorImpl(java.lang.String name,
java.lang.String displayName,
long initialValue) |
simudyne.core.graph.GraphConfiguration |
getConfig() |
DoubleAccumulator |
getDoubleAccumulator(java.lang.String name)
Get a previously created
DoubleAccumulator |
protected abstract DoubleAccumulator |
getDoubleAccumulatorImpl(java.lang.String name) |
java.util.Map<java.lang.String,DoubleAccumulator> |
getDoubleAccumulators()
Get all previously created
DoubleAccumulator as a read only map. |
S |
getGlobals()
Get the value of the global state that can be read globally by agents.
|
LongAccumulator |
getLongAccumulator(java.lang.String name)
Get a previously created
LongAccumulator |
protected abstract LongAccumulator |
getLongAccumulatorImpl(java.lang.String name) |
java.util.Map<java.lang.String,LongAccumulator> |
getLongAccumulators()
Get all previously created
LongAccumulator as a read only map. |
boolean |
isSetup() |
void |
registerLinkTypes(java.lang.Class<? extends Link>... types)
Register link types with the system for serialisation.
|
void |
registerMessageTypes(java.lang.Class<? extends Message>... types)
Register message types with the system for serialisation.
|
void |
registerSchemas(ModelContext context) |
void |
registerVertexTypes(java.lang.Class<? extends Vertex<S>>... types)
Register agent types with the system for serialisation.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcreate, getNextVertexID, hasProcessedMessages, selectVertices, setup, stepgetSchema, getValues, receiveJSONprotected static final org.slf4j.Logger logger
protected final java.util.Set<java.lang.Class<? extends Vertex<S extends simudyne.core.graph.BaseGlobalState>>> vertexClasses
protected final java.util.Set<java.lang.Class<? extends Link>> linkClasses
public final java.util.concurrent.ConcurrentHashMap<java.lang.String,LAcc extends LongAccumulator> longAccumulators
public final java.util.concurrent.ConcurrentHashMap<java.lang.String,DAcc extends DoubleAccumulator> doubleAccumulators
protected final simudyne.core.FeatureFlags featureFlags
protected final Configuration config
protected final simudyne.core.graph.GraphConfiguration graphConfig
protected final ModelContext context
protected boolean isSetup
protected BaseGraph(ModelContext context, simudyne.core.graph.GraphConfiguration graphConfig, S globalState)
public final void registerLinkTypes(java.lang.Class<? extends Link>... types)
GraphregisterLinkTypes in interface Graph<S extends simudyne.core.graph.BaseGlobalState>public final void registerMessageTypes(java.lang.Class<? extends Message>... types)
GraphregisterMessageTypes in interface Graph<S extends simudyne.core.graph.BaseGlobalState>public final void registerVertexTypes(java.lang.Class<? extends Vertex<S>>... types)
GraphregisterVertexTypes in interface Graph<S extends simudyne.core.graph.BaseGlobalState>types - Agent classes to register. Must implement Agent.public final S getGlobals()
GraphgetGlobals in interface Graph<S extends simudyne.core.graph.BaseGlobalState>public boolean isSetup()
public simudyne.core.graph.GraphConfiguration getConfig()
public final <T extends Vertex<S>> void addVertices(java.lang.Class<T> vertexType, long vertexCount, SerializableBiConsumer<InitContext,T> dataInjector)
GraphaddVertices in interface Graph<S extends simudyne.core.graph.BaseGlobalState>protected abstract <T extends Vertex<S>> void addVerticesImpl(java.lang.Class<T> vertexType, long vertexCount, SerializableBiConsumer<InitContext,T> dataInjector)
public final <T extends Vertex<S>> void addVertices(java.lang.Class<T> vertexType, long vertexCount)
GraphaddVertices in interface Graph<S extends simudyne.core.graph.BaseGlobalState>public final LongAccumulator createLongAccumulator(java.lang.String name, java.lang.String displayName)
GraphLongAccumulator on the AgentSystem.createLongAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator namedisplayName - The name shown by the consoleprotected abstract LongAccumulator createLongAccumulatorImpl(java.lang.String name, java.lang.String displayName)
public final LongAccumulator createLongAccumulator(java.lang.String name, java.lang.String displayName, long initialValue)
GraphLongAccumulator on the AgentSystem.createLongAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator namedisplayName - The name shown by the consoleinitialValue - For populating with a default value at initial time stepprotected abstract LongAccumulator createLongAccumulatorImpl(java.lang.String name, java.lang.String displayName, long initialValue)
public final LongAccumulator getLongAccumulator(java.lang.String name)
GraphLongAccumulatorgetLongAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator nameprotected abstract LongAccumulator getLongAccumulatorImpl(java.lang.String name)
public final java.util.Map<java.lang.String,LongAccumulator> getLongAccumulators()
GraphLongAccumulator as a read only map. Attempting to add
accumulators to this map will not work, and the accumulators will not be available on the
AgentSystem.getLongAccumulators in interface Graph<S extends simudyne.core.graph.BaseGlobalState>JSONValue objectpublic final DoubleAccumulator createDoubleAccumulator(java.lang.String name, java.lang.String displayName)
GraphDoubleAccumulator on the AgentSystem.createDoubleAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator namedisplayName - The name shown by the consoleprotected abstract DoubleAccumulator createDoubleAccumulatorImpl(java.lang.String name, java.lang.String displayName)
public final DoubleAccumulator createDoubleAccumulator(java.lang.String name, java.lang.String displayName, double initialValue)
GraphDoubleAccumulator on the AgentSystem.createDoubleAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator namedisplayName - The name shown by the consoleinitialValue - For populating with a default value at initial time stepprotected abstract DoubleAccumulator createDoubleAccumulatorImpl(java.lang.String name, java.lang.String displayName, double initialValue)
public final DoubleAccumulator getDoubleAccumulator(java.lang.String name)
GraphDoubleAccumulatorgetDoubleAccumulator in interface Graph<S extends simudyne.core.graph.BaseGlobalState>name - The accumulator nameprotected abstract DoubleAccumulator getDoubleAccumulatorImpl(java.lang.String name)
public final java.util.Map<java.lang.String,DoubleAccumulator> getDoubleAccumulators()
GraphDoubleAccumulator as a read only map. Attempting to add
accumulators to this map will not work, and the accumulators will not be available on the
AgentSystem.getDoubleAccumulators in interface Graph<S extends simudyne.core.graph.BaseGlobalState>JSONValue objectpublic void beginStep()
Graphpublic final void registerSchemas(ModelContext context)
registerSchemas in interface Value