10

constrOptim関数で次の制約にtheta、ui、ciを設定する簡単な方法はありますか?

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

シンプレックスの使用を検討しましたが、3 つの制約しか必要ありません。

ありがとう

4

1 に答える 1

19

制約を目的の形式に書き換えるだけ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 )
于 2013-05-02T19:25:40.950 に答える