3

いくつかの制約の下で複雑な線形多変数関数を最小化する必要があります。

xを長さLの複素数の配列とします。

a[0]、a[1]、...、a[L-1]は複素係数であり、

Fは複素関数F(x)= x[0]*a[0] + x[1]*a[1] + ... + x[L-1]*a[L-1]であり、最小限に抑えます。

b[0]、b[1]、...、b[L-1]は複素係数であり、制約があります

1 = complexConjuate(x[0])*x[0] + complexConjuate(x[1])*x[1] + ... + complexConjuate(x[L-1])*x[L-1]を持つ満たされること。

私はすでにhttp://math.nist.gov/javanumerics/を詳しく調べ、多くのドキュメントを調べました。しかし、複雑な関数の最小化を行うライブラリが見つかりませんでした。

4

2 に答える 2

1

f滑らかな超曲面 上の微分可能な実数値関数を最小化しますS。そのような最小値が存在する場合 (編集後の状況では、超曲面がコンパクトであるため存在することが保証されます)、それはtoの制限f|Sの臨界点で発生します。fS

f多様体に制限された周囲空間で定義された微分可能な関数の臨界点はM勾配が多様体fの接空間に直交する点T(M)です。一般的なケースについては、ラグランジュ乗数を読んでください。

g(x) = 0多様体が超曲面 (実余次元 1 を持つ) であり、特に検出が容易な滑らかな関数 をもつ方程式によって (局所的に) 定義される場合g、 の臨界点は、がと共線でf|Sある点です。xSgrad(f)|xgrad(g)|x

ここで、問題は実際には (実数に関するような) 実数の問題であり、複雑な (複素数に関するような) 問題ではありません。

不要な虚数部分を取り除くと、

  • 超曲面S、便利なことに単位球であり、(x|x) = 1どこでグローバルに定義され(a|b)、スカラー積を示し、でa_1*b_1 + ... + a_k*b_kの勾配はちょうどgx2*x
  • 実線形関数L(x) = (c|x) = c_1*x_1 + ... + c_k*x_k、 の勾配Lは にc依存しませんx

Lしたがって、球上には の 2 つの臨界点があり(c = 0その場合Lは が一定でない限り)、線が原点をc通り球と交差する点c/|c|-c/|c|です。

明らかにL(c/|c|) = 1/|c|*(c|c) = |c|L(-c/|c|) = -1/|c|*(c|c) = -|c|であるため、最小値は で発生し-c/|c|、その値は です-|c|

于 2012-04-17T13:53:57.187 に答える
0

各複素変数は、それぞれ の実部と虚部を表す2 つの実数x変数と見なすことができます。x

私の推奨事項は、各変数または係数の実数部と虚数部を独立したコンポーネントとして使用して、目的関数と制約を再定式化することです。

コメントによると、目的関数の実部のみを最適化するつもりであるため、最適化の対象となる単一の目的関数になる可能性があります。

制約は 2 つに分割できます。「実数」の制約は 1 に等しく、「虚数」の制約は 0 に等しくなければなりません。

このように最適化問題を再定式化した後、再定式化された問題に適用可能な任意の最適化アルゴリズムを適用できるはずです。たとえば、Apache Commons Mathライブラリにはまともな一連のオプティマイザーがあり、SuanShuライブラリにもいくつかの最適化アルゴリズムが含まれています。

于 2012-06-18T11:33:09.067 に答える