Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting constraints in constrOptim

Tags:

r

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

like image 855
earthlink Avatar asked May 02 '13 18:05

earthlink


1 Answers

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 )
like image 82
Vincent Zoonekynd Avatar answered Nov 15 '22 19:11

Vincent Zoonekynd