1

R 'Quadprog' パッケージに次の形式のボックス制約を組み込む機能があるかどうか疑問に思っていました: -L*1 <= v <= L*1

ここで、1 は 1 のベクトルで、L は定数です。最適化する変数は v です。基本的に、v のすべての個々の要素は、–lambda と lambda の間に制限される必要があります。

そうでない場合、この問題を回避するための他のパッケージはありますか?

助けてくれて本当にありがとうございます

4

1 に答える 1

1

はい、できます。

関数を考えると:

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 < Lv

meqは「等式の数」を意味し、あなたの場合はすべてが不等式であるため、に配置する必要があります0

等式制約を配置する必要がある場合は、 と の「左」側に配置し、Amatbvec等式の数を配置しmeqます。

于 2016-02-12T17:42:39.590 に答える