Skip to contents

This is the main function to run through your model (i.e., the environment with all the agents in it). This function is just a loop that calls tick again and again until a stop signal is sent or until the max_iterations limit has been reached.

CAUTION: This may take a while!

A freshly init'ed environment starts with the first iteration, of course. However, you can also continue iterating a model. The model remembers the tick it stopped and proceeds there the next time (see examples).

For more information on how an individual tick is structured, see the documentation there.

Usage

iterate(.tidyabm, max_iterations = 50, verbose = TRUE, visualize = FALSE, ...)

# S3 method for tidyabm_env
iterate(.tidyabm, max_iterations = 50, verbose = TRUE, visualize = FALSE, ...)

Arguments

.tidyabm

the tidyabm_env object

max_iterations

number of iterations after which iterations stop (if it was not stopped earlier by other means of convergence, e.g. through environment rules).

verbose

if TRUE (the default), a status message is printed at the end

visualize

if TRUE, each tick ends with a visualization if this has been implemented for the respective environment; default is FALSE

...

further arguments to pass on to visualize

Value

a tidyabm_env object

See also

Examples

create_grid_environment(seed = 4583, size = 4) %>%
  add_agents(create_agent(), 2) %>%
  init() %>%
  iterate()
#> [1] "Tick 1 finished in 0.002 secs"
#> [1] "Tick 2 finished in 0.003 secs"
#> [1] "Tick 3 finished in 0.008 secs"
#> [1] "Tick 4 finished in 0.002 secs"
#> [1] "Tick 5 finished in 0.002 secs"
#> [1] "Tick 6 finished in 0.002 secs"
#> [1] "Tick 7 finished in 0.002 secs"
#> [1] "Tick 8 finished in 0.002 secs"
#> [1] "Tick 9 finished in 0.002 secs"
#> [1] "Tick 10 finished in 0.002 secs"
#> [1] "Tick 11 finished in 0.002 secs"
#> [1] "Tick 12 finished in 0.003 secs"
#> [1] "Tick 13 finished in 0.002 secs"
#> [1] "Tick 14 finished in 0.002 secs"
#> [1] "Tick 15 finished in 0.003 secs"
#> [1] "Tick 16 finished in 0.002 secs"
#> [1] "Tick 17 finished in 0.002 secs"
#> [1] "Tick 18 finished in 0.002 secs"
#> [1] "Tick 19 finished in 0.002 secs"
#> [1] "Tick 20 finished in 0.002 secs"
#> [1] "Tick 21 finished in 0.003 secs"
#> [1] "Tick 22 finished in 0.002 secs"
#> [1] "Tick 23 finished in 0.003 secs"
#> [1] "Tick 24 finished in 0.002 secs"
#> [1] "Tick 25 finished in 0.002 secs"
#> [1] "Tick 26 finished in 0.003 secs"
#> [1] "Tick 27 finished in 0.002 secs"
#> [1] "Tick 28 finished in 0.002 secs"
#> [1] "Tick 29 finished in 0.002 secs"
#> [1] "Tick 30 finished in 0.003 secs"
#> [1] "Tick 31 finished in 0.002 secs"
#> [1] "Tick 32 finished in 0.002 secs"
#> [1] "Tick 33 finished in 0.002 secs"
#> [1] "Tick 34 finished in 0.003 secs"
#> [1] "Tick 35 finished in 0.003 secs"
#> [1] "Tick 36 finished in 0.003 secs"
#> [1] "Tick 37 finished in 0.003 secs"
#> [1] "Tick 38 finished in 0.003 secs"
#> [1] "Tick 39 finished in 0.002 secs"
#> [1] "Tick 40 finished in 0.003 secs"
#> [1] "Tick 41 finished in 0.002 secs"
#> [1] "Tick 42 finished in 0.002 secs"
#> [1] "Tick 43 finished in 0.003 secs"
#> [1] "Tick 44 finished in 0.002 secs"
#> [1] "Tick 45 finished in 0.002 secs"
#> [1] "Tick 46 finished in 0.002 secs"
#> [1] "Tick 47 finished in 0.003 secs"
#> [1] "Tick 48 finished in 0.002 secs"
#> [1] "Tick 49 finished in 0.003 secs"
#> [1] "Tick 50 finished in 0.003 secs"
#> # A tibble: 50 × 4
#>    .tick .runtime         .n_agents_after_tick .finished_after_tick
#>  * <dbl> <drtn>                          <int> <lgl>               
#>  1     1 0.002224445 secs                    2 FALSE               
#>  2     2 0.002566338 secs                    2 FALSE               
#>  3     3 0.008291483 secs                    2 FALSE               
#>  4     4 0.002390146 secs                    2 FALSE               
#>  5     5 0.002488852 secs                    2 FALSE               
#>  6     6 0.002334118 secs                    2 FALSE               
#>  7     7 0.002428770 secs                    2 FALSE               
#>  8     8 0.002478123 secs                    2 FALSE               
#>  9     9 0.002375841 secs                    2 FALSE               
#> 10    10 0.002380371 secs                    2 FALSE               
#> # ℹ 40 more rows
#> # ABM grid environment
#> * 4x4, 2 agents
#> * 0 environment characteristic(s), 
#> * 0 environment variable(s), 
#> * 0 environment rule(s), 
#> * simulating (50 tick(s) passed)

m <- create_grid_environment(seed = 321456, size = 4) %>%
  add_agents(create_agent(), 2) %>%
  init() %>%
  iterate(max_iterations = 10)
#> [1] "Tick 1 finished in 0.002 secs"
#> [1] "Tick 2 finished in 0.003 secs"
#> [1] "Tick 3 finished in 0.003 secs"
#> [1] "Tick 4 finished in 0.002 secs"
#> [1] "Tick 5 finished in 0.002 secs"
#> [1] "Tick 6 finished in 0.002 secs"
#> [1] "Tick 7 finished in 0.003 secs"
#> [1] "Tick 8 finished in 0.008 secs"
#> [1] "Tick 9 finished in 0.002 secs"
#> [1] "Tick 10 finished in 0.003 secs"

# continue with the 11th iteration and iterate all the way through to #15
m %>%
  iterate(max_iterations = 5)
#> [1] "Tick 11 finished in 0.003 secs"
#> [1] "Tick 12 finished in 0.002 secs"
#> [1] "Tick 13 finished in 0.003 secs"
#> [1] "Tick 14 finished in 0.002 secs"
#> [1] "Tick 15 finished in 0.002 secs"
#> # A tibble: 15 × 4
#>    .tick .runtime         .n_agents_after_tick .finished_after_tick
#>  * <dbl> <drtn>                          <int> <lgl>               
#>  1     1 0.002143860 secs                    2 FALSE               
#>  2     2 0.002553225 secs                    2 FALSE               
#>  3     3 0.002578497 secs                    2 FALSE               
#>  4     4 0.002495527 secs                    2 FALSE               
#>  5     5 0.002408981 secs                    2 FALSE               
#>  6     6 0.002384901 secs                    2 FALSE               
#>  7     7 0.002518415 secs                    2 FALSE               
#>  8     8 0.007918835 secs                    2 FALSE               
#>  9     9 0.002456665 secs                    2 FALSE               
#> 10    10 0.002707720 secs                    2 FALSE               
#> 11    11 0.002579451 secs                    2 FALSE               
#> 12    12 0.002440691 secs                    2 FALSE               
#> 13    13 0.002516508 secs                    2 FALSE               
#> 14    14 0.002404690 secs                    2 FALSE               
#> 15    15 0.002442122 secs                    2 FALSE               
#> # ABM grid environment
#> * 4x4, 2 agents
#> * 0 environment characteristic(s), 
#> * 0 environment variable(s), 
#> * 0 environment rule(s), 
#> * simulating (15 tick(s) passed)