Activity for defining a fork with N
alternative sub-trajectories.
Arguments
- .trj
the trajectory object.
- option
a callable object (a function) which must return an integer between
0
andN
. A return value equal to0
skips the branch and continues to the next activity. A returning value between1
toN
makes the arrival to follow the corresponding sub-trajectory.- continue
a vector of
N
booleans that indicate whether the arrival must continue to the main trajectory after each sub-trajectory or not (if only one value is provided, it will be recycled to match the number of sub-trajectories).- ...
N
trajectory objects (or a list ofN
trajectory objects) describing each sub-trajectory.- tag
activity tag name to perform named rollbacks (see
rollback
) or just to better identify your activities.
Examples
env <- simmer()
traj <- trajectory() %>%
set_global("path", 1, mod="+", init=-1) %>%
log_(function() paste("Path", get_global(env, "path"), "selected")) %>%
branch(
function() get_global(env, "path"), continue=c(TRUE, FALSE),
trajectory() %>%
log_("following path 1"),
trajectory() %>%
log_("following path 2")) %>%
log_("continuing after the branch (path 0)")
env %>%
add_generator("dummy", traj, at(0:2)) %>%
run() %>% invisible
#> 0: dummy0: Path 0 selected
#> 0: dummy0: continuing after the branch (path 0)
#> 1: dummy1: Path 1 selected
#> 1: dummy1: following path 1
#> 1: dummy1: continuing after the branch (path 0)
#> 2: dummy2: Path 2 selected
#> 2: dummy2: following path 2