Contains the minimum components of a SpaDES
simulation.
Various slot accessor methods (i.e., get and set functions) are provided
(see 'Accessor Methods' below).
Based on code from chapter 7.8.3 of Matloff (2011): "Discrete event simulation".
Here, we implement a discrete event simulation in a more modular fashion so
it's easier to add simulation components (i.e., "simulation modules").
We use S4 classes and methods, and use data.table()
instead of
data.frame()
to implement the event queue (because it is much
more efficient).
modules
List of character names specifying which modules to load.
params
Named list of potentially other lists specifying simulation parameters.
events
The list of scheduled events (i.e., event queue), which can
be converted to a sorted data.table
with events(sim)
.
See 'Event Lists' for more information.
current
The current event, as a data.table
.
See 'Event Lists' for more information..
completed
An environment consisting of completed events, with
each object named a character representation of the order
of events. This was converted from a previous version which
was a list. This was changed because the list became
slow as number of events increased.
See 'Event Lists' for more information. It is kept
as an environment of individual events for speed. The completed
method converts it to a sorted data.table
.
depends
A .simDeps
list of .moduleDeps()
objects
containing module object dependency information.
simtimes
List of numerical values describing the simulation start and end times; as well as the current simulation time.
inputs
a data.frame
or data.table
of files and
metadata
outputs
a data.frame
or data.table
of files and
metadata
paths
Named list of paths. See ?.paths
. Partial matching is performed.
.xData
Environment referencing the objects used in the simulation.
Several "shortcuts" to accessing objects referenced by this
environment are provided, and can be used on the
simList
object directly instead of specifying the
.xData
slot: $
, [[
, ls
,
ls.str
, objs
. See examples.
.envir
Deprecated. Please do not use any more.
The simList
class extends the environment
, by adding
several slots that provide information about the metadata for a discrete
event simulation. The environment slot, if accessed directly is .xData
and this is where input and output objects from modules are placed.
The simList_()
class is similar, but it extends the list
class. All other slots are the same.
Thus, simList
is identical to simList_
, except that the former
uses an environment for objects and the latter uses a list.
The class simList_
is only used internally when saving/loading, because
saving/loading a list behaves more reliably than saving/loading an environment.
Several slot (and sub-slot) accessor methods are provided for use, and categorized into separate help pages:
simList-accessors-envir() | Simulation environment. |
simList-accessors-events() | Scheduled and completed events. |
simList-accessors-inout() | Passing data in to / out of simulations. |
simList-accessors-modules() | Modules loaded and used; module dependencies. |
simList-accessors-objects() | Accessing objects used in the simulation. |
simList-accessors-params() | Global and module-specific parameters. |
simList-accessors-paths() | File paths for modules, inputs, and outputs. |
simList-accessors-times() | Simulation times. |
The main event list is a sorted data.table
(keyed) on eventTime
, and eventPriority.
The completed event list is an ordered list in the exact order that the events were executed.
Each event is represented by a data.table()
row consisting of:
eventTime | The time the event is to occur. |
moduleName | The module from which the event is taken. |
eventType | A character string for the programmer-defined event type. |
eventPriority | The priority given to the event. |
Matloff, N. (2011). The Art of R Programming (ch. 7.8.3). San Francisco, CA: No Starch Press, Inc.. Retrieved from https://nostarch.com/artofr.htm