minControlsCap {optmatch} R Documentation

## Set thinning and thickening caps for full matching

### Description

Functions to find the largest value of min.controls, or the smallest value of max.controls, for which a full matching problem is feasible. These are determined by constraints embedded in the matching problem's distance matrix.

### Usage

```minControlsCap(distance, max.controls = NULL, subclass.indices = NULL)
maxControlsCap(distance, min.controls = NULL, subclass.indices = NULL)
```

### Arguments

 `distance` Either a matrix of nonegative, numeric discrepancies, or a list of such matrices. (See `fullmatch` for details.) `max.controls` Optionally, set limits on the maximum number of controls per matched set. (Only makes sense for `minControlsCap`.) `min.controls` Optionally, set limits on the minimum number of controls per matched set. (Only makes sense for `maxControlsCap`.) `subclass.indices` This argument no longer supported (nor necessary).

### Details

The function works by repeated application of full matching, so on large problems it can be time-consuming.

### Value

For `minControlsCap`, `strictest.feasible.min.controls` and `given.max.controls`. For `maxControlsCap`, `given.min.controls` and `strictest.feasible.max.controls`.

 `strictest.feasible.min.controls` The largest values of the `fullmatch` argument `min.controls` that yield a full match; `given.max.controls` The `max.controls` argument given to `minControlsCap` or, if none was given, a vector of `Inf`s. `given.min.controls` The `min.controls` argument given to `maxControlsCap` or, if none was given, a vector of `0`s; `strictest.feasible.max.controls` The smallest values of the `fullmatch` argument `max.controls` that yield a full match.

### Note

Essentially this is just a line search. I've done several things to speed it up, but not everything that might be done. At present, not very thoroughly tested either. Comments appreciated (but not likely to generate immediate action on my part...).

Ben B. Hansen

### References

Hansen, B.B. and S. Olsen Klopfer (2005), ‘Optimal full matching and related designs via network flows’. Technical Report 416, Statistics Department, University of Michigan; to appear, JCGS.

`fullmatch`

### Examples

```##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--    or do  help(data=index)  for the standard data sets.
plantdist <- matrix(nrow=7, ncol=19,byrow=TRUE,data=c(
28, 0, 3,22,14,30,17,28,26,28,20,22,23,26,21,18,34,40,28,
24, 3, 0,22,10,27,14,26,24,24,16,19,20,23,18,16,31,37,25,
10,18,14,18, 4,12, 6,11, 9,10,14,12, 6,14,22,10,16,22,28,
7,28,24, 8,14, 2,10, 6,12, 0,24,22, 4,24,32,20,18,16,38,
17,20,16,32,18,26,20,18,12,24, 0, 2,20, 6, 8, 4,14,20,14,
20,31,28,35,20,29,22,20,14,26,12, 9,22, 5,15,12, 9,11,12,
14,32,29,30,18,24,17,16,10,22,12,10,17, 6,16,14, 4, 8,17),
dimnames=list(c("A","B","C","D","E","F","G"),
c("H","I","J","K","L","M","N","O","P","Q","R",
"S","T","U","V","W","X","Y","Z")))

(tmn <- minControlsCap(plantdist)\$strictest)
maxControlsCap(plantdist, min=tmn)
splitdist <- list(one=plantdist[1:3, 1:9], two=plantdist[4:7, 10:19])
(tmn <- minControlsCap(splitdist)\$strictest)
maxControlsCap(splitdist, min=tmn)
```

[Package optmatch version 0.2-3 Index]