earthlink
earthlink

Reputation: 323

Setting constraints in constrOptim

Is there an easy method to set theta, ui, ci for the following constraints in the constrOptim function?

c1<x1<=c2
x1+1<x2<=c2+1
x2+1<x3<=c2+2
x3+1<x4<=c2+3

I considered using simplex but it takes only 3 constraints.

Thanks

Upvotes: 10

Views: 4763

Answers (1)

Vincent Zoonekynd
Vincent Zoonekynd

Reputation: 32351

Just rewrite the constraints in the desired form, ui %*% theta >= ci.

# Initial formulation of the constraints
c1   <= x1
        x1 <= c2
x1+1 <= x2
        x2 <= c2+1
x2+1 <= x3
        x3 <= c2+2
x3+1 <= x4
        x4 <= c2+3

# Rewrite them
  x1                >= c1
- x1                >= -c2
- x1 + x2           >= 1
     - x2           >= -c2 - 1
     - x2 + x3      >= 1
          - x3      >= -c2 - 2
          - x3 + x4 >= 1
               - x4 >= -c2 - 3

# In matrix form
ui <- matrix(c(
    1,  0,  0,  0,
   -1,  0,  0,  0,
   -1,  1,  0,  0,
    0, -1,  0,  0,
    0, -1,  1,  0,
    0,  0, -1,  0,
    0,  0, -1,  1,
    0,  0,  0, -1 
  ),
  ncol  = 4,
  byrow = TRUE
)
ci <- c( c1, -c2, 1, -c2-1, 1, -c2-2, 1, -c2-3 )

Upvotes: 19

Related Questions