# transfinite: Boxed Region Transformation In adagio: Discrete and Global Optimization Routines

 transfinite R Documentation

## Boxed Region Transformation

### Description

Transformation of a box/bound constrained region to an unconstrained one.

### Usage

```transfinite(lower, upper, n = length(lower))
```

### Arguments

 `lower, upper` lower and upper box/bound constraints. `n` length of upper, lower if both are scalars, to which they get repeated.

### Details

Transforms a constraint region in n-dimensional space bijectively to the unconstrained R^n space, applying a `atanh` resp. `exp` transformation to each single variable that is bound constraint.

It provides two functions, `h: B = []x...x[] --> R^n` and its inverse `hinv`. These functions can, for example, be used to add box/bound constraints to a constrained optimization problem that is to be solved with a (nonlinear) solver not allowing constraints.

### Value

Returns to functions as components `h` and `hinv` of a list.

### Note

Based on an idea of Ravi Varadhan, intrinsically used in his implementation of Nelder-Mead in the ‘dfoptim’ package.

For positivity constraints, `x>=0`, this approach is considered to be numerically more stable than `x-->exp(x)` or `x-->x^2`.

### Examples

```lower <- c(-Inf, 0,   0)
upper <- c( Inf, 0.5, 1)
Tf <- transfinite(lower, upper)
h <- Tf\$h; hinv <- Tf\$hinv

## Not run:
##  Solve Rosenbrock with one variable restricted
rosen <- function(x) {
n <- length(x)
x1 <- x[2:n]; x2 <- x[1:(n-1)]
sum(100*(x1-x2^2)^2 + (1-x2)^2)
}
f  <- function(x) rosen(hinv(x))    # f must be defined on all of R^n
x0 <- c(0.1, 0.1, 0.1)              # starting point not on the boundary!