Iñaki Ucar, Bart Smeets


Please find below a short explanation of the most important terminologies used in the docs.

From terminology to model

In the simulation model below we create a trajectory which we will call my trajectory. This trajectory consists of three consecutive activities; a seize, timeout and release event. In the seize and release events a associated resource type is specified. In this case the resource type is called operator.


# create a trajectory "my_trajectory"
# this trajectory consists of 3 activities, a seize, timeout and release activity.
  trajectory("my_trajectory") %>%
  # seize one unit of the resource called "operator"
  seize("operator", 1) %>%
  # spend some (stochastic) time holding that resource
  timeout(function() rpois(1,50)) %>%
  # release the previously seized unit of "operator"
  release("operator", 1)

Once the trajectory has been created, the simulation object (a simmer instance) is set up. One of the first steps is to actually attach a resource instance called operator. Next, a generator instance is attached. This generator, called my_generator, has an associated trajectory (my_trajectory stored in t0) and an associated dist function. Once run() is called the simulation model will start running. The generator my_generator will create an arrival at an interarrival time delivered by the function passed to dist.

env<-simmer() %>%
  # a resource called "operator"" is created with a capacity of 1 and an infinite queue size
  add_resource("operator", 1, Inf) %>%
  # this generator will create arrivals at each interval rpois(1,40) during
  # the simulation lifetime (while "dist" returns positive time values)
  # the arrivals will follow the trajectory specified in t0
                trajectory = t0,
                dist = function() rpois(1, 40)) %>%

For more information, see the other vignettes or the function specific help documentation (e.g. ?simmer).