Activity for defining a fork with N alternative sub-trajectories.

branch(.trj, option, continue, ...)

Arguments

.trj

the trajectory object.

option

a callable object (a function) which must return an integer between 0 and N. A return value equal to 0 skips the branch and continues to the next activity. A returning value between 1 to N 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 of N trajectory objects) describing each sub-trajectory.

Value

Returns the trajectory object.

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