combinatorial_round: Combinatorial round

View source: R/efficient_round.R

combinatorial_roundR Documentation

Combinatorial round

Description

Given an approximate design and a number of points, computes all the possible combinations of roundings of each point to the nearest integer, keeps the ones that amount to the requested number of points, and returns the one with the best value for the criterion function.

The search is exhaustive and requires 2^k evaluations where k is the number of support points. For designs with more than max_support support points the function requests confirmation (interactive sessions) or stops with an informative error (non-interactive sessions), unless ask = FALSE.

Usage

combinatorial_round(
  design,
  n,
  criterion = NULL,
  model = NULL,
  parameters = NULL,
  par_values = NULL,
  weight_fun = function(x) 1,
  par_int = NULL,
  reg_int = NULL,
  matB = NULL,
  max_support = 15L,
  ask = TRUE
)

Arguments

design

either a dataframe with the design to round, or an object of class "optdes". If a dataframe, the criterion, model and parameters must be specified. It must have a Weight column and one or more design-variable columns (Point for single-factor, x1, x2, ... for multi-factor).

n

integer with the desired number of points of the resulting design.

criterion

character variable with the chosen optimality criterion. Can be one of the following:

  • 'D-Optimality'

  • 'Ds-Optimality'

  • 'A-Optimality'

  • 'I-Optimality'

  • 'L-Optimality'

model

formula describing the model. Must use x (single-factor) or x1, x2, ... (multi-factor) as design variables.

parameters

character vector with the parameters of the models, as written in the formula.

par_values

numeric vector with the parameters nominal values, in the same order as given in parameters.

weight_fun

optional one variable function that represents the square of the structure of variance, in case of heteroscedastic variance of the response.

par_int

optional numeric vector with the index of the parameters of interest for Ds-optimality.

reg_int

optional numeric vector with the ranges of integration, for I-optimality.

matB

optional matrix of dimensions k x k, for L-optimality.

max_support

integer. Number of support points above which the function triggers the confirmation mechanism. Default is 15 (2^{15} \approx 32\,000 combinations).

ask

logical. If TRUE (default) and the design exceeds max_support: in an interactive session the user is prompted; in a non-interactive session an error is raised. Set ask = FALSE to skip confirmation in scripts or pipelines (a message is still emitted).

Value

A data.frame with the rounded design to n number of points, or NULL invisibly if the user declines the confirmation prompt.

Examples

aprox_design <- opt_des("D-Optimality", y ~ a * exp(-b / x), c("a", "b"), c(1, 1500), c(212, 422))
combinatorial_round(aprox_design, 27)

optedr documentation built on June 23, 2026, 5:07 p.m.