JavaScriptを有効にしてください

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

 ·   3 min read

※記事内に商品プロモーションを含むことがあります。

はじめに

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

オプションの一覧は以下の公式サイトで公開されていますが、量が多いため、重要と思うものを抜き出しました。
SCIP Doxygen Documentation: List of all SCIP parameters

オプションを適用する場合、scip.setというテキスト形式のファイルに設定を記述し、カレントディレクトリに置きます。
以下に例を示します。

# scip.set
numerics/feastol = 1e-06
display/width = 143
branching/preferbinary = FALSE
lp/initalgorithm = s
nlpi/ipopt/linear_solver = "ma27"

#から始まる行はコメントとして無視されます。
オプションの値を=で示します。
指定する変数の型は上から順にreal, int, bool, char, stringとなります。stringの場合はダブルクォーテーションで囲みます。

また、SCIPのバージョンは9.1.1です。

収束判定

  • numerics/feastol (real): 収束したと判定するための許容誤差。デフォルト値は1e-06.
  • limits/gap (real): 計算を終了する双対ギャップ(相対値)。デフォルト値は0.
  • limits/absgap (real): 計算を終了する双対ギャップ(絶対値)。デフォルト値は0.

ログ出力

  • display/verblevel (int): コンソールに出力されるログの詳細度。0~5の間の整数で指定。デフォルト値は4.
  • display/width (int): 1行あたりのログの最大文字数。0~2147483647の間の整数で指定。デフォルト値は143.

分枝限定法

  • branching/preferbinary (bool): TRUEの場合、バイナリ変数の分枝を優先する。デフォルト値はFALSE.
  • nodeselection/childsel (char): 子ノードの選び方。h: ルートノードの線形問題値の差分によるハイブリッド推定(デフォルト)。p: 疑似コスト。i: 推定、など
  • limits/nodes (longint): 処理する最大ノード数。デフォルト値は-1(制限なし).

計算リソース

  • limits/time (real): 最大実行時間(秒)。デフォルト値は1e+20.
  • limits/memory (real): 最大メモリ使用量 (MB)。デフォルト値は8796093022207.
  • parallel/mode (int): 並列計算モード。0: 非決定論的。1: 決定論的(デフォルト。再計算しても同じ結果が保証される)
  • parallel/minnthreads (int): 並列計算の最小スレッド数。デフォルト値は1.
  • parallel/maxnthreads (int): 並列計算の最大スレッド数。デフォルト値は8.

非線形ソルバ

  • nlp/solver (string): 非線形ソルバを指定する。未指定の場合、デフォルトの優先順で使用する

IPOPTの設定

SCIPは非線形問題を解くためにIPOPTなどを含んでいます。IPOPTの設定もscip.setで可能です。

  • nlpi/ipopt/optfile (string): IPOPTのオプションファイル。デフォルト値は"".
  • nlpi/ipopt/linear_solver (string): IPOPTの線形ソルバ("ma27", "ma57", "mumps"など)。デフォルト値は"".
  • nlpi/ipopt/nlp_scaling_method (string): IPOPTのスケール変換("none", "gradient-based", "equilibration-based"など)。
  • nlpi/ipopt/mu_strategy (string): IPOPTのバリアパラメータ更新ルール。"monotone", "adaptive"
  • nlpi/ipopt/hessian_approximation (string): IPOPTのヘッセ行列の近似。"exact", "limited-memory"

参考

シェアする

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

サイト内検索