This function looks at all combinations of specified design parameters
for central-composite designs, calculates other quantities such as
the `alpha`

values for rotatability and orthogonal blocking, imposes
specified restrictions, and outputs the best combinations in a specified order.
This serves as an aid in identifying good designs. The design itself can
then be generated using `ccd`

, or in pieces using `cube`

, `star`

, etc.

```
ccd.pick(k, n.c = 2^k, n0.c = 1:10, blks.c = 1, n0.s = 1:10, bbr.c = 1,
wbr.s = 1, bbr.s = 1, best = 10, sortby = c("agreement", "N"),
restrict)
```

k

Number of factors in the design

n.c

Number(s) of factorial points in each cube block

n0.c

Numbers(s) of center points in each cube block

blks.c

Number(s) of cube blocks that together comprise one rep of the cube portion

n0.s

Numbers(s) of center points in each star (axis-point) block

bbr.c

Number(s) of copies of each cube block

wbr.s

Number(s) of replications of each star poit within a block

bbr.s

Number(s) of copies of each star block

best

How many designs to list. Use `best=NULL`

to list them all

sortby

String(s) containing numeric expressions that are each evaluated and used as sorting key(s).
Specify `sortby=NULL`

if no sorting is desired.

restrict

Optional string(s) containing Boolean expressions that are each evaluated. Only combinations where all
expressions are `TRUE`

are retained.

A `data.frame`

containing `best`

or fewer rows, and variables
`n.c`

, `n0.c`

, `blks.c`

, `n.s`

, `n0.s`

, `bbr.c`

,
`wbr.s`

, `bbr.s`

, `N`

, `alpha.rot`

, and `alpha.orth`

,
as described above.

A grid is created with all combinations of `n.c`

, `n0.c`

, …, `bbr.s`

.
Then for each row of the grid, several additional variables
are computed:

`n.s`

The total number of axis points in each star block

`N`

The total number of observations in the design

`alpha.rot`

The position of axis points that make the design rotatable. Rotatability is achieved when design moment [iiii] = 3[iijj] for i and j unequal.

`alpha.orth`

The position of axis points that make the blocks mutually orthogonal. This is achieved when design moments [ii] within each block are proprtional to the number of observations within the block.

`agreement`

The absolute value of the log of the ratio of

`alpha.rot`

and`alpha.orth`

. This measures agreement between the two`alpha`

s.

If `restrict`

is provided, only the cases where the expressions are all `TRUE`

are kept.
(Regardless of `restrict`

, rows are eliminated where there are
insufficient degrees of freedom to estimate all needed effects for a
second-order model.)
The rows are
sorted according to the expressions in `sortby`

; the default is to sort
by `agreement`

and `N`

, which is suitable for finding designs
that are both rotatable and orthogonally blocked.

Lenth RV (2009) ``Response-Surface Methods in R, Using rsm'',
*Journal of Statistical Software*, 32(7), 1--17.
https://www.jstatsoft.org/v32/i07/.

Myers, RH, Montgomery, DC, and Anderson-Cook, CM (2009)
*Response Surface Methodology* (3rd ed.), Wiley.

# NOT RUN { library(rsm) ### List CCDs in 3 factors with between 10 and 14 runs per block ccd.pick(3, n0.c=2:6, n0.s=2:8) # (Generate the design that is listed first:) # ccd(3, n0=c(6,4)) ### Find designs in 5 factors containing 1, 2, or 4 cube blocks ### of 8 or 16 runs, 1 or 2 reps of each axis point, ### and no more than 70 runs altogether ccd.pick(5, n.c=c(8,16), blks.c=c(1,2,4), wbr.s=1:2, restrict="N<=70") # }