OSOAs_regular: Function to create an OSOA in s^2 or s^3 levels and s^k runs...

View source: R/OSOAs_regular.R

OSOAs_regularR Documentation

Function to create an OSOA in s^2 or s^3 levels and s^k runs from a basic number of levels s and a power k

Description

The OSOA in s^k runs accommodates at most m=(s^(k-1)-1)/(s-1) columns in s^2 levels or m'=2*floor(m/2) columns in s^3 levels.

Usage

OSOAs_regular(
  s,
  k,
  el = 3,
  m = NULL,
  noptim.rounds = 1,
  noptim.repeats = 1,
  optimize = TRUE,
  dmethod = "manhattan",
  p = 50
)

Arguments

s

the prime or prime power to use (do not use for s=2, because other method is better); the resulting array will have pairwise orthogonal columns in s^t levels

k

integer >=3; determines the run size: the resulting array will have s^k runs

el

2 or 3; the exponent of the number of levels, el=3 yields a strength 2* or 3 OSOA in s^3 levels, el=2 a strength 2+ or 3- OSOA in s^2 levels

m

the desired number of columns of the resulting array; for el=3, odd values of m will be reduced by one, so specify the next largest even m, if you need an odd number of columns (the function will do so, if possible); if m=NULL, the maximum possible value is used. This is at most (s^(k-1)-1)/(s-1), or one less if this is odd and el=3.

noptim.rounds

the number of optimization rounds for each independent restart

noptim.repeats

the number of independent restarts of optimizations with noptim.rounds rounds each

optimize

logical: should space filling be optimized by level permutations?

dmethod

distance method for phi_p, "manhattan" (default) or "euclidean"

p

p for phi_p (the larger, the closer to maximin distance)

Details

The function implements the algorithms proposed by Zhou and Tang 2018 (s^2 levels) or Li, Liu and Yang 2021 (s^3 levels), enhanced with the modification for matrix A by Groemping (2023a). Level permutations are optimized using an adaptation of the algorithm by Weng (2014).

If m is specified, the function uses the last m columns of a saturated OA produced by function createSaturated(s, k-1).
If m is small enough that a resolution IV / strength 3 OA for s levels in s^(k-1) runs exists, function OSOAs should be used with such an OA (which can be obtained from package FrF2 for s=2 or from package DoE.base for s>2). For s=2, function OSOAs_hadamard may also be a better choice than OSOAs_regular for up to 192 runs.

Value

matrix of class SOA with the attributes that are listed below. All attributes can be accessed using function attributes, or individual attributes can be accessed using function attr. These are the attributes:

type

the type of array (SOA or OSOA)

strength

character string that gives the strength

phi_p

the phi_p value (smaller=better)

optimized

logical indicating whether optimization was applied

permpick

matrix that lists the id numbers of the permutations used

perms2pickfrom

optional element, when optimization was conducted: the overall permutation list to which the numbers in permlist refer

call

the call that created the object

Author(s)

Ulrike Groemping

References

For full detail, see SOAs-package. Groemping (2023a)
Li, Liu and Yang (2021)
Weng (2014)
Zhou and Tang (2019)

Examples

## 13 columns in 9 levels each
OSOAs_regular(3, 4, el=2, optimize=FALSE) ## 13 columns, phi_p about 0.117
# optimizing level permutations typically improves phi_p a lot
# OSOAs_regular(3, 4, el=2) ## 13 columns, phi_p typically below 0.055

SOAs documentation built on Aug. 11, 2023, 1:09 a.m.