Skip to contents

OptimizerBatchIrace class that implements iterated racing. Calls irace::irace() from package irace.

Source

Lopez-Ibanez M, Dubois-Lacoste J, Caceres LP, Birattari M, Stuetzle T (2016). “The irace package: Iterated racing for automatic algorithm configuration.” Operations Research Perspectives, 3, 43–58. doi:10.1016/j.orp.2016.09.002 .

Parameters

instances

list()
A list of instances where the configurations executed on.

targetRunnerParallel

function()
A function that executes the objective function with a specific parameter configuration and instance. A default function is provided, see section "Target Runner and Instances".

For the meaning of all other parameters, see irace::defaultScenario(). Note that we have removed all control parameters which refer to the termination of the algorithm. Use TerminatorEvals instead. Other terminators do not work with OptimizerBatchIrace.

In contrast to irace::defaultScenario(), we set digits = 15. This represents double parameters with a higher precision and avoids rounding errors.

Target Runner and Instances

The irace package uses a targetRunner script or R function to evaluate a configuration on a particular instance. Usually it is not necessary to specify a targetRunner function when using OptimizerBatchIrace. A default function is used that forwards several configurations and instances to the user defined objective function. As usually, the user defined function has a xs, xss or xdt parameter depending on the used Objective class. For irace, the function needs an additional instances parameter.

fun = function(xs, instances) {
 # function to evaluate configuration in `xs` on instance `instances`
}

Archive

The Archive holds the following additional columns:

  • "race" (integer(1))
    Race iteration.

  • "step" (integer(1))
    Step number of race.

  • "instance" (integer(1))
    Identifies instances across races and steps.

  • "configuration" (integer(1))
    Identifies configurations across races and steps.

Result

The optimization result (instance$result) is the best performing elite of the final race. The reported performance is the average performance estimated on all used instances.

Dictionary

This Optimizer can be instantiated via the dictionary mlr_optimizers or with the associated sugar function opt():

mlr_optimizers$get("irace")
opt("irace")

Progress Bars

$optimize() supports progress bars via the package progressr combined with a Terminator. Simply wrap the function in progressr::with_progress() to enable them. We recommend to use package progress as backend; enable with progressr::handlers("progress").

Super classes

bbotk::Optimizer -> bbotk::OptimizerBatch -> OptimizerBatchIrace

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.

Usage


Method clone()

The objects of this class are cloneable with this method.

Usage

OptimizerBatchIrace$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# runtime of the example is too long
# \donttest{

library(data.table)

search_space = domain = ps(
  x1 = p_dbl(-5, 10),
  x2 = p_dbl(0, 15)
)

codomain = ps(y = p_dbl(tags = "minimize"))

# branin function with noise
# the noise generates different instances of the branin function
# the noise values are passed via the `instances` parameter
fun = function(xdt, instances) {
  ys = branin(xdt[["x1"]], xdt[["x2"]], noise = as.numeric(instances))
  data.table(y = ys)
}

# define objective with instances as a constant
objective = ObjectiveRFunDt$new(
 fun = fun,
 domain = domain,
 codomain = codomain,
 constants = ps(instances = p_uty()))

instance = OptimInstanceBatchSingleCrit$new(
  objective = objective,
  search_space = search_space,
  terminator = trm("evals", n_evals = 96))

# create instances of branin function
instances = rnorm(10, mean = 0, sd = 0.1)

# load optimizer irace and set branin instances
optimizer = opt("irace", instances = instances)

# modifies the instance by reference
optimizer$optimize(instance)
#> # 2024-12-18 10:05:04 UTC: Initialization
#> # Elitist race
#> # Elitist new instances: 1
#> # Elitist limit: 2
#> # nbIterations: 3
#> # minNbSurvival: 3
#> # nbParameters: 2
#> # seed: 2011091433
#> # confidence level: 0.95
#> # budget: 96
#> # mu: 5
#> # deterministic: FALSE
#> 
#> # 2024-12-18 10:05:05 UTC: Iteration 1 of 3
#> # experimentsUsedSoFar: 0
#> # remainingBudget: 96
#> # currentBudget: 32
#> # nbConfigurations: 5
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          1|          5|          2|     16.54517279|          5|00:00:00|   NA|  NA|    NA|
#> |x|          2|          5|          2|     16.54517279|         10|00:00:00|+1.00|1.00|0.0000|
#> |x|          3|          5|          2|     16.54517279|         15|00:00:00|+1.00|1.00|0.0000|
#> |x|          4|          5|          2|     16.54517279|         20|00:00:00|+1.00|1.00|0.0000|
#> |-|          5|          1|          2|     16.54517279|         25|00:00:00|   NA|  NA|    NA|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best-so-far configuration:           2    mean value:      16.54517279
#> Description of the best-so-far configuration:
#>   .ID.               x1               x2 .PARENT.
#> 2    2 7.21608519554138 2.15154692530632       NA
#> 
#> # 2024-12-18 10:05:05 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                 x1               x2
#> 2 7.21608519554138 2.15154692530632
#> # 2024-12-18 10:05:06 UTC: Iteration 2 of 3
#> # experimentsUsedSoFar: 25
#> # remainingBudget: 71
#> # currentBudget: 35
#> # nbConfigurations: 5
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          6|          5|          6|     4.104613811|          5|00:00:00|   NA|  NA|    NA|
#> |x|          5|          5|          6|     4.104613811|          9|00:00:00|+1.00|1.00|0.0000|
#> |x|          1|          5|          6|     4.104613811|         13|00:00:00|+1.00|1.00|0.0000|
#> |x|          2|          5|          6|     4.104613811|         17|00:00:00|+1.00|1.00|0.0000|
#> |-|          3|          2|          6|     4.104613811|         21|00:00:00|+1.00|1.00|0.0000|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best configuration for the instances in this race: 6
#> Best-so-far configuration:           2    mean value:      16.54517279
#> Description of the best-so-far configuration:
#>   .ID.               x1               x2 .PARENT.
#> 2    2 7.21608519554138 2.15154692530632       NA
#> 
#> # 2024-12-18 10:05:06 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                 x1                x2
#> 2 7.21608519554138 2.151546925306320
#> 6 9.12606399995485 0.423063351400879
#> # 2024-12-18 10:05:06 UTC: Iteration 3 of 3
#> # experimentsUsedSoFar: 46
#> # remainingBudget: 50
#> # currentBudget: 50
#> # nbConfigurations: 7
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          7|          7|         11|    0.7360248612|          7|00:00:00|   NA|  NA|    NA|
#> |x|          2|          7|         11|    0.7360248612|         12|00:00:00|+1.00|1.00|0.0000|
#> |x|          6|          7|         11|    0.7360248612|         17|00:00:00|+1.00|1.00|0.0000|
#> |x|          1|          7|         11|    0.7360248612|         22|00:00:00|+1.00|1.00|0.0000|
#> |-|          5|          3|         11|    0.7360248612|         27|00:00:00|+1.00|1.00|0.0000|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best configuration for the instances in this race: 11
#> Best-so-far configuration:           2    mean value:      16.54517279
#> Description of the best-so-far configuration:
#>   .ID.               x1               x2 .PARENT.
#> 2    2 7.21608519554138 2.15154692530632       NA
#> 
#> # 2024-12-18 10:05:07 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                  x1                x2
#> 2  7.21608519554138 2.151546925306320
#> 6  9.12606399995485 0.423063351400879
#> 11 9.26569520132867 1.878363370490038
#> # 2024-12-18 10:05:07 UTC: Iteration 4 of 4
#> # experimentsUsedSoFar: 73
#> # remainingBudget: 23
#> # currentBudget: 23
#> # nbConfigurations: 4
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          8|          4|         11|    0.7360248612|          4|00:00:00|   NA|  NA|    NA|
#> |x|          7|          4|         11|    0.7360248612|          5|00:00:00|+1.00|1.00|0.0000|
#> |x|          6|          4|         11|    0.7360248612|          6|00:00:00|+1.00|1.00|0.0000|
#> |x|          4|          4|         11|    0.7360248612|          9|00:00:00|+1.00|1.00|0.0000|
#> |-|          5|          3|         11|    0.7360248612|         10|00:00:00|+1.00|1.00|0.0000|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best configuration for the instances in this race: 11
#> Best-so-far configuration:           6    mean value:      4.104613811
#> Description of the best-so-far configuration:
#>   .ID.               x1                x2 .PARENT.
#> 6    6 9.12606399995485 0.423063351400879        2
#> 
#> # 2024-12-18 10:05:07 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                  x1                x2
#> 6  9.12606399995485 0.423063351400879
#> 2  7.21608519554138 2.151546925306320
#> 11 9.26569520132867 1.878363370490038
#> # 2024-12-18 10:05:08 UTC: Iteration 5 of 5
#> # experimentsUsedSoFar: 83
#> # remainingBudget: 13
#> # currentBudget: 13
#> # nbConfigurations: 4
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          7|          4|         11|    0.7360248612|          1|00:00:00|   NA|  NA|    NA|
#> |x|          3|          4|         11|    0.7360248612|          3|00:00:00|+1.00|1.00|0.0000|
#> |x|          5|          4|         11|    0.7360248612|          4|00:00:00|+1.00|1.00|0.0000|
#> |x|          6|          4|         11|    0.7360248612|          5|00:00:00|+1.00|1.00|0.0000|
#> |-|          2|          3|         11|    0.7360248612|          6|00:00:00|+1.00|1.00|0.0000|
#> |.|          4|          3|         11|    0.7360248612|          6|00:00:00|+1.00|1.00|0.0000|
#> |.|          8|          3|         11|    0.7360248612|          6|00:00:00|+1.00|1.00|0.0000|
#> |.|          1|          3|         11|    0.7360248612|          6|00:00:00|+1.00|1.00|0.0000|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best-so-far configuration:          11    mean value:     0.7360248612
#> Description of the best-so-far configuration:
#>    .ID.               x1               x2 .PARENT.
#> 11   11 9.26569520132867 1.87836337049004        6
#> 
#> # 2024-12-18 10:05:08 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                  x1                x2
#> 11 9.26569520132867 1.878363370490038
#> 6  9.12606399995485 0.423063351400879
#> 2  7.21608519554138 2.151546925306320
#> # 2024-12-18 10:05:08 UTC: Stopped because there is not enough budget left to race more than the minimum (3).
#> # You may either increase the budget or set 'minNbSurvival' to a lower value.
#> # Iteration: 6
#> # nbIterations: 6
#> # experimentsUsedSoFar: 89
#> # timeUsed: 0
#> # remainingBudget: 7
#> # currentBudget: 7
#> # number of elites: 3
#> # nbConfigurations: 3
#> # Total CPU user time: 4.22, CPU sys time: 0.036, Wall-clock time: 4.256
#> # 2024-12-18 10:05:09 UTC: Starting post-selection:
#> # Configurations selected: 11, 6, 2, 1.
#> # Pending instances: 0, 0, 0, 3.
#> # Seed: 2011091433
#> # Configurations: 4
#> # Available experiments: 7
#> # minSurvival: 1
#> # Markers:
#>      x No test is performed.
#>      c Configurations are discarded only due to capping.
#>      - The test is performed and some configurations are discarded.
#>      = The test is performed but no configuration is discarded.
#>      ! The test is performed and configurations could be discarded but elite configurations are preserved.
#>      . All alive configurations are elite and nothing is discarded.
#> 
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> | |   Instance|      Alive|       Best|       Mean best| Exp so far|  W time|  rho|KenW|  Qvar|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> |x|          7|          4|         11|    0.7360248612|          1|00:00:00|   NA|  NA|    NA|
#> |.|          2|          4|         11|    0.7360248612|          1|00:00:00|+1.00|1.00|0.0000|
#> |.|          4|          4|         11|    0.7360248612|          1|00:00:00|+1.00|1.00|0.0000|
#> |x|          6|          4|         11|    0.7360248612|          2|00:00:00|+1.00|1.00|0.0000|
#> |!|          8|          4|         11|    0.7360248612|          3|00:00:00|+1.00|1.00|0.0000|
#> |.|          5|          4|         11|    0.7360248612|          3|00:00:00|+1.00|1.00|0.0000|
#> |.|          1|          4|         11|    0.7360248612|          3|00:00:00|+1.00|1.00|0.0000|
#> |.|          3|          4|         11|    0.7360248612|          3|00:00:00|+1.00|1.00|0.0000|
#> |-|          9|          1|         11|    0.7360248612|          7|00:00:00|   NA|  NA|    NA|
#> +-+-----------+-----------+-----------+----------------+-----------+--------+-----+----+------+
#> Best-so-far configuration:          11    mean value:     0.7360248612
#> Description of the best-so-far configuration:
#>    .ID.               x1               x2 .PARENT.
#> 11   11 9.26569520132867 1.87836337049004        6
#> 
#> # 2024-12-18 10:05:09 UTC: Elite configurations (first number is the configuration ID; listed from best to worst according to the sum of ranks):
#>                  x1               x2
#> 11 9.26569520132867 1.87836337049004
#> # Total CPU user time: 4.563, CPU sys time: 0.036, Wall-clock time: 4.599
#>          x1       x2 configuration  x_domain         y
#>       <num>    <num>         <int>    <list>     <num>
#> 1: 9.265695 1.878363            11 <list[2]> 0.7360249

# best scoring configuration
instance$result
#>          x1       x2 configuration  x_domain         y
#>       <num>    <num>         <int>    <list>     <num>
#> 1: 9.265695 1.878363            11 <list[2]> 0.7360249

# all evaluations
as.data.table(instance$archive)
#>             x1         x2           y  race  step instance configuration
#>          <num>      <num>       <num> <int> <int>    <int>         <int>
#>  1: -0.2839148  9.6515465  29.3891389     1     1        2             1
#>  2:  7.2160852  2.1515469  16.5451728     1     1        2             2
#>  3: -4.0339147  5.9015469  78.2914784     1     1        2             3
#>  4:  3.4660852 13.4015465 130.0850078     1     1        2             4
#>  5:  5.3410852  4.0265469  23.7231778     1     1        2             5
#>  6: -0.2839148  9.6515465  29.3891389     1     1       10             1
#>  7:  7.2160852  2.1515469  16.5451728     1     1       10             2
#>  8: -4.0339147  5.9015469  78.2914784     1     1       10             3
#>  9:  3.4660852 13.4015465 130.0850078     1     1       10             4
#> 10:  5.3410852  4.0265469  23.7231778     1     1       10             5
#> 11: -0.2839148  9.6515465  29.3891389     1     1        4             1
#> 12:  7.2160852  2.1515469  16.5451728     1     1        4             2
#> 13: -4.0339147  5.9015469  78.2914784     1     1        4             3
#> 14:  3.4660852 13.4015465 130.0850078     1     1        4             4
#> 15:  5.3410852  4.0265469  23.7231778     1     1        4             5
#> 16: -0.2839148  9.6515465  29.3891389     1     1        9             1
#> 17:  7.2160852  2.1515469  16.5451728     1     1        9             2
#> 18: -4.0339147  5.9015469  78.2914784     1     1        9             3
#> 19:  3.4660852 13.4015465 130.0850078     1     1        9             4
#> 20:  5.3410852  4.0265469  23.7231778     1     1        9             5
#> 21: -0.2839148  9.6515465  29.3891389     1     1        8             1
#> 22:  7.2160852  2.1515469  16.5451728     1     1        8             2
#> 23: -4.0339147  5.9015469  78.2914784     1     1        8             3
#> 24:  3.4660852 13.4015465 130.0850078     1     1        8             4
#> 25:  5.3410852  4.0265469  23.7231778     1     1        8             5
#> 26:  7.2160852  2.1515469  16.5451728     2     1        3             2
#> 27:  9.1260640  0.4230634   4.1046138     2     1        3             6
#> 28:  9.9814309  1.0175448   5.7167544     2     1        3             7
#> 29:  5.0076254  3.9627674  20.0471055     2     1        3             8
#> 30:  7.2773650  2.7089999  17.3365236     2     1        3             9
#> 31:  9.1260640  0.4230634   4.1046138     2     1        8             6
#> 32:  9.9814309  1.0175448   5.7167544     2     1        8             7
#> 33:  5.0076254  3.9627674  20.0471055     2     1        8             8
#> 34:  7.2773650  2.7089999  17.3365236     2     1        8             9
#> 35:  9.1260640  0.4230634   4.1046138     2     1        2             6
#> 36:  9.9814309  1.0175448   5.7167544     2     1        2             7
#> 37:  5.0076254  3.9627674  20.0471055     2     1        2             8
#> 38:  7.2773650  2.7089999  17.3365236     2     1        2             9
#> 39:  9.1260640  0.4230634   4.1046138     2     1       10             6
#> 40:  9.9814309  1.0175448   5.7167544     2     1       10             7
#> 41:  5.0076254  3.9627674  20.0471055     2     1       10             8
#> 42:  7.2773650  2.7089999  17.3365236     2     1       10             9
#> 43:  9.1260640  0.4230634   4.1046138     2     1        4             6
#> 44:  9.9814309  1.0175448   5.7167544     2     1        4             7
#> 45:  5.0076254  3.9627674  20.0471055     2     1        4             8
#> 46:  7.2773650  2.7089999  17.3365236     2     1        4             9
#> 47:  7.2160852  2.1515469  16.5451728     3     1        6             2
#> 48:  9.1260640  0.4230634   4.1046138     3     1        6             6
#> 49:  8.6697676  1.2913234   3.3920805     3     1        6            10
#> 50:  9.2656952  1.8783634   0.7360249     3     1        6            11
#> 51:  8.7304678  0.8102927   3.9234273     3     1        6            12
#> 52:  8.1051079  0.7415683   8.3283539     3     1        6            13
#> 53:  6.3181451  0.3029009  20.2336398     3     1        6            14
#> 54:  8.6697676  1.2913234   3.3920805     3     1       10            10
#> 55:  9.2656952  1.8783634   0.7360249     3     1       10            11
#> 56:  8.7304678  0.8102927   3.9234273     3     1       10            12
#> 57:  8.1051079  0.7415683   8.3283539     3     1       10            13
#> 58:  6.3181451  0.3029009  20.2336398     3     1       10            14
#> 59:  8.6697676  1.2913234   3.3920805     3     1        3            10
#> 60:  9.2656952  1.8783634   0.7360249     3     1        3            11
#> 61:  8.7304678  0.8102927   3.9234273     3     1        3            12
#> 62:  8.1051079  0.7415683   8.3283539     3     1        3            13
#> 63:  6.3181451  0.3029009  20.2336398     3     1        3            14
#> 64:  8.6697676  1.2913234   3.3920805     3     1        2            10
#> 65:  9.2656952  1.8783634   0.7360249     3     1        2            11
#> 66:  8.7304678  0.8102927   3.9234273     3     1        2            12
#> 67:  8.1051079  0.7415683   8.3283539     3     1        2            13
#> 68:  6.3181451  0.3029009  20.2336398     3     1        2            14
#> 69:  8.6697676  1.2913234   3.3920805     3     1        8            10
#> 70:  9.2656952  1.8783634   0.7360249     3     1        8            11
#> 71:  8.7304678  0.8102927   3.9234273     3     1        8            12
#> 72:  8.1051079  0.7415683   8.3283539     3     1        8            13
#> 73:  6.3181451  0.3029009  20.2336398     3     1        8            14
#> 74:  7.2160852  2.1515469  16.5451728     4     1        7             2
#> 75:  9.1260640  0.4230634   4.1046138     4     1        7             6
#> 76:  9.2656952  1.8783634   0.7360249     4     1        7            11
#> 77:  6.8101530  0.5622976  18.6479655     4     1        7            15
#> 78:  6.8101530  0.5622976  18.6479655     4     1        6            15
#> 79:  6.8101530  0.5622976  18.6479655     4     1        3            15
#> 80:  9.1260640  0.4230634   4.1046138     4     1        9             6
#> 81:  9.2656952  1.8783634   0.7360249     4     1        9            11
#> 82:  6.8101530  0.5622976  18.6479655     4     1        9            15
#> 83:  6.8101530  0.5622976  18.6479655     4     1        8            15
#> 84:  6.2504068  3.4957169  25.3407491     5     1        6            16
#> 85:  9.2656952  1.8783634   0.7360249     5     1        4            11
#> 86:  6.2504068  3.4957169  25.3407491     5     1        4            16
#> 87:  6.2504068  3.4957169  25.3407491     5     1        8            16
#> 88:  6.2504068  3.4957169  25.3407491     5     1        3            16
#> 89:  6.2504068  3.4957169  25.3407491     5     1       10            16
#> 90: -0.2839148  9.6515465  29.3891389     6     1        6             1
#> 91: -0.2839148  9.6515465  29.3891389     6     1        3             1
#> 92: -0.2839148  9.6515465  29.3891389     6     1        7             1
#> 93: -0.2839148  9.6515465  29.3891389     6     1        5             1
#> 94:  7.2160852  2.1515469  16.5451728     6     1        5             2
#> 95:  9.1260640  0.4230634   4.1046138     6     1        5             6
#> 96:  9.2656952  1.8783634   0.7360249     6     1        5            11
#>             x1         x2           y  race  step instance configuration
#>               timestamp batch_nr
#>                  <POSc>    <int>
#>  1: 2024-12-18 10:05:05        1
#>  2: 2024-12-18 10:05:05        1
#>  3: 2024-12-18 10:05:05        1
#>  4: 2024-12-18 10:05:05        1
#>  5: 2024-12-18 10:05:05        1
#>  6: 2024-12-18 10:05:05        2
#>  7: 2024-12-18 10:05:05        2
#>  8: 2024-12-18 10:05:05        2
#>  9: 2024-12-18 10:05:05        2
#> 10: 2024-12-18 10:05:05        2
#> 11: 2024-12-18 10:05:05        3
#> 12: 2024-12-18 10:05:05        3
#> 13: 2024-12-18 10:05:05        3
#> 14: 2024-12-18 10:05:05        3
#> 15: 2024-12-18 10:05:05        3
#> 16: 2024-12-18 10:05:05        4
#> 17: 2024-12-18 10:05:05        4
#> 18: 2024-12-18 10:05:05        4
#> 19: 2024-12-18 10:05:05        4
#> 20: 2024-12-18 10:05:05        4
#> 21: 2024-12-18 10:05:05        5
#> 22: 2024-12-18 10:05:05        5
#> 23: 2024-12-18 10:05:05        5
#> 24: 2024-12-18 10:05:05        5
#> 25: 2024-12-18 10:05:05        5
#> 26: 2024-12-18 10:05:06        6
#> 27: 2024-12-18 10:05:06        6
#> 28: 2024-12-18 10:05:06        6
#> 29: 2024-12-18 10:05:06        6
#> 30: 2024-12-18 10:05:06        6
#> 31: 2024-12-18 10:05:06        7
#> 32: 2024-12-18 10:05:06        7
#> 33: 2024-12-18 10:05:06        7
#> 34: 2024-12-18 10:05:06        7
#> 35: 2024-12-18 10:05:06        8
#> 36: 2024-12-18 10:05:06        8
#> 37: 2024-12-18 10:05:06        8
#> 38: 2024-12-18 10:05:06        8
#> 39: 2024-12-18 10:05:06        9
#> 40: 2024-12-18 10:05:06        9
#> 41: 2024-12-18 10:05:06        9
#> 42: 2024-12-18 10:05:06        9
#> 43: 2024-12-18 10:05:06       10
#> 44: 2024-12-18 10:05:06       10
#> 45: 2024-12-18 10:05:06       10
#> 46: 2024-12-18 10:05:06       10
#> 47: 2024-12-18 10:05:06       11
#> 48: 2024-12-18 10:05:06       11
#> 49: 2024-12-18 10:05:06       11
#> 50: 2024-12-18 10:05:06       11
#> 51: 2024-12-18 10:05:06       11
#> 52: 2024-12-18 10:05:06       11
#> 53: 2024-12-18 10:05:06       11
#> 54: 2024-12-18 10:05:06       12
#> 55: 2024-12-18 10:05:06       12
#> 56: 2024-12-18 10:05:06       12
#> 57: 2024-12-18 10:05:06       12
#> 58: 2024-12-18 10:05:06       12
#> 59: 2024-12-18 10:05:06       13
#> 60: 2024-12-18 10:05:06       13
#> 61: 2024-12-18 10:05:06       13
#> 62: 2024-12-18 10:05:06       13
#> 63: 2024-12-18 10:05:06       13
#> 64: 2024-12-18 10:05:06       14
#> 65: 2024-12-18 10:05:06       14
#> 66: 2024-12-18 10:05:06       14
#> 67: 2024-12-18 10:05:06       14
#> 68: 2024-12-18 10:05:06       14
#> 69: 2024-12-18 10:05:07       15
#> 70: 2024-12-18 10:05:07       15
#> 71: 2024-12-18 10:05:07       15
#> 72: 2024-12-18 10:05:07       15
#> 73: 2024-12-18 10:05:07       15
#> 74: 2024-12-18 10:05:07       16
#> 75: 2024-12-18 10:05:07       16
#> 76: 2024-12-18 10:05:07       16
#> 77: 2024-12-18 10:05:07       16
#> 78: 2024-12-18 10:05:07       17
#> 79: 2024-12-18 10:05:07       18
#> 80: 2024-12-18 10:05:07       19
#> 81: 2024-12-18 10:05:07       19
#> 82: 2024-12-18 10:05:07       19
#> 83: 2024-12-18 10:05:07       20
#> 84: 2024-12-18 10:05:08       21
#> 85: 2024-12-18 10:05:08       22
#> 86: 2024-12-18 10:05:08       22
#> 87: 2024-12-18 10:05:08       23
#> 88: 2024-12-18 10:05:08       24
#> 89: 2024-12-18 10:05:08       25
#> 90: 2024-12-18 10:05:09       26
#> 91: 2024-12-18 10:05:09       27
#> 92: 2024-12-18 10:05:09       28
#> 93: 2024-12-18 10:05:09       29
#> 94: 2024-12-18 10:05:09       29
#> 95: 2024-12-18 10:05:09       29
#> 96: 2024-12-18 10:05:09       29
#>               timestamp batch_nr
# }