R 'Quadprog' パッケージに次の形式のボックス制約を組み込む機能があるかどうか疑問に思っていました: -L*1 <= v <= L*1
ここで、1 は 1 のベクトルで、L は定数です。最適化する変数は v です。基本的に、v のすべての個々の要素は、–lambda と lambda の間に制限される必要があります。
そうでない場合、この問題を回避するための他のパッケージはありますか?
助けてくれて本当にありがとうございます
R 'Quadprog' パッケージに次の形式のボックス制約を組み込む機能があるかどうか疑問に思っていました: -L*1 <= v <= L*1
ここで、1 は 1 のベクトルで、L は定数です。最適化する変数は v です。基本的に、v のすべての個々の要素は、–lambda と lambda の間に制限される必要があります。
そうでない場合、この問題を回避するための他のパッケージはありますか?
助けてくれて本当にありがとうございます
はい、できます。
関数を考えると:
solve.QP(Dmat=Dmat,dvec=dvec,Amat=Amat,bvec=bvec,meq=0)
Amat
と をbvec
意味しAmat * v >= bvec
ます。
したがって、次のように設定します。
Amat <- cbind(diag(length(v)), -diag(length(v)))
bvec <- c(rep(-L, length(v)), rep(-L, length(v)))
は、の個々の要素ごとにv > -L
および-v > -L
(つまり と同じ) を意味します。v < L
v
注meq
は「等式の数」を意味し、あなたの場合はすべてが不等式であるため、に配置する必要があります0
。
等式制約を配置する必要がある場合は、 と の「左」側に配置し、Amat
にbvec
等式の数を配置しmeq
ます。