メインコンテンツへスキップ

最適化ソルバIPOPTの主要オプション解説

·1468 文字·3 分
目次

はじめに
#

非線形問題を解くことができる最適化ソルバIPOPTの主要オプションについて解説します。

収束判定
#

  • tol: 収束したと判定するための許容誤差です。例えばtol = 0.01と設定して、x = 0という等式制約があった場合、xの値が-0.01~+0.01の範囲に入れば収束したと判定されます。デフォルト値は1E-8です。
  • max_iter: 最大反復回数です。解の更新がこの回数を超えても収束していない場合、Maximum_Iterations_Exceededとなります。デフォルト値は3000です。
  • max_wall_time: 最大実行時間(秒)です。この時間を超えても収束していない場合、Maximum_WallTime_Exceededとなります。デフォルト値は1E20です。

ログの出力
#

  • print_level: コンソールに出力されるログの詳細度です。0~12の間の整数で指定し、値が大きいほど詳細になります。デフォルト値は5です。
  • output_file: ログをファイル出力する場合にファイル名を指定します(指定しなければログファイルは出力されません)。詳細度合いはprint_levelと同じになりますが、file_print_levelオプションで上書きできます。
  • file_print_level: ログをファイル出力する場合、その詳細度合いを指定します。0~12の間の整数で指定し、値が大きいほど詳細になります。デフォルト値は5です。
  • print_user_options: ログにユーザが指定したオプションのリストを出力します。"yes"または"no"で指定します。デフォルト値は"no"です。
  • print_frequency_iter: 何イタレーション毎に途中の結果を出力するか指定します。デフォルト値は1(各イタレーションで出力される)です。

非線形問題のスケーリング
#

非線形問題において、変数や制約式によってスケール(桁数)が異なっていると収束しづらいため、スケーリングして改善を図ります。

  • nlp_scaling_method: 非線形問題のスケーリングを変更する方法です。
    • none: スケーリングしない。
    • gradient-based: 初期値で計算した勾配の最大値がnlp_scaling_max_gradientとなるようにスケーリングする(デフォルト)。
  • nlp_scaling_max_gradient: スケーリングの最大値です。nlp_scaling_methodオプションがgradient-basedのときのみ有効です。

線形ソルバ
#

  • linear_solver: IPOPTがラインサーチに使用する線形ソルバを指定します。ma27(デフォルト), ma57, ma77, ma86, ma97, pardiso, pardisomkl, spral, wsmp, mumpsから指定できます(線形ソルバによっては別途用意する必要があります)。

ヘッセ行列の近似
#

ヘッセ行列とは、簡単に言えば評価関数を2階微分した行列のことです。ニュートン法を用いて最適化問題を解く場合、ヘッセ行列が必要となります。一方、ヘッセ行列を近似して計算する準ニュートン法と呼ばれる手法もあります。ニュートン法と準ニュートン法のどちらもIPOPTに実装されています。

  • hessian_approximation: ヘッセ行列を近似するか指定します。
    • exact: 最適化問題側から与えられた正確なヘッセ行列を使用します(デフォルト)。
    • limited-memory: ヘッセ行列を近似します。
  • limited_memory_max_history: ヘッセ行列の近似において、直近の何イタレーションの情報を使用するか指定します。デフォルト値は6です。

その他
#

  • option_file_name: IPOPTのオプションファイル名を指定します。デフォルト値は"ipopt.opt"です。
  • mu_strategy: バリアパラメータ(mu)を更新する方法です。
    • "monotone": 単調に増加させます(デフォルト)。
    • "adaptive": 適応的な方法で増加させます。

参考
#

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

Direct Single Shooting法による最適制御
·1793 文字·4 分
最適制御問題を解く手法の1つである、Direct Single Shooting法のアルゴリズムをまとめた。
非線形モデル予測制御とPANOC
·1729 文字·4 分
非線形システムを対象としたモデル予測制御の最適化問題を解くPANOCというアルゴリスムについてまとめた。
滑らかではない凸最適化とForward-backward envelope
·1486 文字·3 分
Forward-backward envelope (FBE) に関する論文を読んだので、備忘録として残す。
非線形最適化ソルバIPOPTのアウトプットの読み方
·2049 文字·5 分
主双対内点法を用いた非線形最適化ソルバIPOPTのアウトプットの読み方を解説する。
準ニュートン法による最適化とPythonによる実装
·2104 文字·5 分
準ニュートン法による最適化アルゴリズムへの理解を深めるため、Pythonで実装した。
ナップサック問題と分枝限定法
·3230 文字·7 分
分枝限定法は、組合せ最適化問題の解を効率的に求める手法である。組合せ最適化問題の1つであるナップサック問題を対象に、分枝限定法のアルゴリズムを示す。