constrOptim関数で次の制約にtheta、ui、ciを設定する簡単な方法はありますか?
c1<x1<=c2
x1+1<x2<=c2+1
x2+1<x3<=c2+2
x3+1<x4<=c2+3
シンプレックスの使用を検討しましたが、3 つの制約しか必要ありません。
ありがとう
constrOptim関数で次の制約にtheta、ui、ciを設定する簡単な方法はありますか?
c1<x1<=c2
x1+1<x2<=c2+1
x2+1<x3<=c2+2
x3+1<x4<=c2+3
シンプレックスの使用を検討しましたが、3 つの制約しか必要ありません。
ありがとう
制約を目的の形式に書き換えるだけ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 )