。私のアプローチは、内点法を使用し、精度パラメーターを導入し、上記の本の第11章で説明されているように対数バリア関数を介して制約を目標に組み込み、結果として生じる制約のない問題を最小限に抑えることです
したがって、私は偏導関数を取ります:
これは行列であり、
分B 、dF∂F
∂F
これはベクトルです。そして、最初の(実行可能な)ポイントから始めて、負の部分導関数に従って実際のソリューションを繰り返し更新します:
B ^ {k + 1} = B ^ k-s_B \ frac {\ partial f(B ^ k、d ^ k)} {\ partial B} \\ d ^ {k + 1} = d ^ k-s_d \ frac {\ partial f(B ^ k 、D ^ K)} {\部分D}
S_B> 0とS_D> 0(B 、K、D 、K)BのK + 1 = BのK - S B ∂ F (BのK、DのK) SB>0、S、D>0
定義された停止基準が満たされるまで、ステップサイズパラメータは何ですか?\これが問題を解決する正しい方法であるかどうかわかりませんか?それは私には非常にぎこちなく、あまりエレガントではないようです。私は最適化手法の専門家ではありません。また、すべての構成要素(偏微分、内点法、制約なしの最小化など)を正しい方法でまとめたかどうかはわかりません。専門家がこの問題をどのように解決するのでしょうか。上記の本では、このタスクは凸問題の例として示されていましたが、私が見る限り、タスクを解くために非常に明確なアルゴリズムが与えられていました。ボイド氏のページにはタスクを解決するためのMatlabスクリプトがどこかにあると思いますが、「ブラックボックス」アルゴリズムを使用する前に、まず基本的なテクニックを理解したいと思います。「に他のアプローチがあるようです 凸型プログラミングにおける内点多項式アルゴリズム。Yurii NesterovおよびArkadii Nemirovskii、応用数学のSIAM研究。vol.13、1994」と「ポリトープの最大内接楕円体の近似の複雑さについて、Leonid G. Khachiyan and Michael J. Todd、Mathematical Programming 61(1993)、137-159」しかし、私はそれらを理解していません。彼らは私のために技術的に書かれています。
ところで、最初の問題の二重問題はどのように見えるのですか?そしてそれはどのように導き出されますか?
前もって感謝します
1
これらすべてのことをあなたのためにしてくれるソルバーがあります。代わりに自分でやりたい理由はありますか?ある時点で内点法について学び、最適化ラボで働いていて、MATLABで(宿題の割り当てのために)いくつかのメソッドをコーディングしたことがある人物として、私はまだブラックボックスソルバーを使用します。
—
Geoff Oxberry、2012年
既製のルーチンを使用する前に、少なくともメソッドの基本バージョンを理解/実装するという原則に固執します。この原則には、次の2つの利点があると思います。1)学習効果が非常に高く、メソッドに対する理解が深まる。2)ほとんどのアプリケーションでは、数学的アルゴリズムの基本バージョンで十分です(少なくとも、私が直面しているアプリケーションには)。そのため、コードを小さくシンプルに保つことができ、ライセンスのことを心配する必要はありません(コードでお金を稼ぎたい場合に備えて)。
—
Denis K.