1

私はR3.0で実行しています。次のような二次関数があります。

2*x[1]*x[1] -5 * x[1] + 8 * x[2] * x[2] - 7*x[3]*x[2] -5 * x[3] * x[3]..

関数にはさまざまな二次項があり、次のようないくつかの線形制約があります。

1 <= x[1] <= 7
-2 <= x[2] <= 9
0 <= x[3] <= 32

さらに、

 x[1]+ x[2]+ x[3] = 100

この種の最適化問題を解決するには、R のどのパッケージを調べる必要がありますか? これは多くの不等式を含む大きな方程式であり、R 3.0 を実行しています。

   x[1]+ x[2]+ x[3] = 100

オプティマイズで完了しますか?

quadprog で constrOptim または solve.QP にパラメーターを渡す方法がわかりません。

4

2 に答える 2

2

quadprod::solve.QPorの両方が、線形制約を使用してlimSolve::lseiを解決します。QPそれらは、目的の策定方法が異なります。

  1. min(-d^T b + 1/2 b^TD b) の場合solve.QP
  2. min(||Ax-b||^2) の場合lsei

目的関数を記述した方法を見るとsolve.QP、最良の選択のように思えますが、問題を行列形式で書き直す必要があることに注意してください。

編集:これらのソルバーの要件である目的関数が凸でない(別の言い方をすると、D上記の行列は正定値ではない)ことに気づきませんでした。そうです、 のような非線形ソルバーに依存する必要がありoptimますが、追加の線形制約を可能にするより一般的なものconstrOptimは、それらの 1 つと思われます。

于 2013-06-21T04:54:49.050 に答える
-1

最小化[{2*x1^2 - 5*x1 + 8*x2^2 - 7*x3*x2 - 5*x3^2, 1 <= x1 <= 7 && -2 <= x2 <= 9 && 0 < = x3 <= 32}, {x1, x2, x3}] 最適値:-51929/8 最適ベクトル:(x1 -> 5/4, x2 -> 9, x3 -> 32) すると、凸二次計画問題はシンプレックス法を改良した。

于 2013-06-21T09:43:45.570 に答える