2015年2月2日月曜日

主双対内点法でまだ解析されていないこと

SDPA や SeDuMi は主双対内点法を実装しているが、これらのソフトウェアを実行していると実際の性能と理論的枠組みには大きなズレがあることもわかる。特に重要な点として、

1.主双対内点法は最適解の近くだと2次収束するが、実際のソフトウェアでは数値誤差の影響もあり、1次収束までの動作しか得られない。わかりやすくいうと、C言語の double で実装した場合、主双対内点法では 10^{-8} 程度の数値誤差が出てしまうが、2次収束を開始するのは 10^{-8} よりも小さいところである。(乱数で問題を生成すると問題の性質がよくなり、もう少し早いところから2次収束する傾向が見られやすい。)

2.ところが1次収束する他のアルゴリズムと比較すると、最初の数反復での収束の速さは速く、その後の1次収束するときの係数も小さい。

などがある。
特に2のところは不思議で、理論的な収束としては1反復で duality gap が $$ 1-\sqrt{n} $$ ぐらいの比でしか小さくならないはずであるが、実際に動かしてみるとは 0.1 ~ 0.5 ぐらい出ているのでは?と思える。



0 件のコメント:

コメントを投稿