clone {simmer}R Documentation

Clone/Synchronize Arrivals

Description

Activities for defining a parallel fork and removing the copies. clone replicates an arrival n times (the original one + n-1 copies). synchronize removes all but one clone for each set of clones.

Usage

clone(.trj, n, ...)

synchronize(.trj, wait = TRUE, mon_all = FALSE)

Arguments

.trj

the trajectory object.

n

number of clones, accepts either a numeric or a callable object (a function) which must return a numeric.

...

a number of optional parallel sub-trajectories (or a list of sub-trajectories). Each clone will follow a different sub-trajectory if available.

wait

if FALSE, all clones but the first to arrive are removed. if TRUE (default), all clones but the last to arrive are removed.

mon_all

if TRUE, get_mon_arrivals will show one line per clone.

Value

Returns the trajectory object.

Examples

## clone and wait for the others
traj <- trajectory() %>%
  clone(
    n = 3,
    trajectory() %>%
      log_("clone 0 (original)") %>%
      timeout(1),
    trajectory() %>%
      log_("clone 1") %>%
      timeout(2),
    trajectory() %>%
      log_("clone 2") %>%
      timeout(3)) %>%
  log_("sync reached") %>%
  synchronize(wait = TRUE) %>%
  log_("leaving")

simmer() %>%
  add_generator("arrival", traj, at(0)) %>%
  run() %>% invisible

## more clones that trajectories available
traj <- trajectory() %>%
  clone(
    n = 5,
    trajectory() %>%
      log_("clone 0 (original)") %>%
      timeout(1)) %>%
  log_("sync reached") %>%
  synchronize(wait = TRUE) %>%
  log_("leaving")

simmer() %>%
  add_generator("arrival", traj, at(0)) %>%
  run() %>% invisible

## clone and continue without waiting
traj <- trajectory() %>%
  clone(
    n = 3,
    trajectory() %>%
      log_("clone 0 (original)") %>%
      timeout(1),
    trajectory() %>%
      log_("clone 1") %>%
      timeout(2),
    trajectory() %>%
      log_("clone 2") %>%
      timeout(3)) %>%
  log_("sync reached") %>%
  synchronize(wait = FALSE) %>%
  log_("leaving")

simmer() %>%
  add_generator("arrival", traj, at(0)) %>%
  run() %>% invisible


[Package simmer version 4.4.1 Index]