Gurobiの文脈において、パラメータチューニングとは、ソルバーのパフォーマンスを向上させるためにアルゴリズムに関するパラメータの設定を探索することを指し、通常は特定のモデルインスタンスのセットに対して行われます。
Gurobiの求解アルゴリズムは、モデルを最適化するために連携して動作する多種のアルゴリズムコンポーネントで構成されています。この求解プロセスの多くの側面は、パラメータを設定することで変更できます。LP緩和の解法や戦略、前処理、主なヒューリスティック手法、切除平面生成などを選択できます。また、NoRel HeuristicのようにデフォルトではオフになっているGurobiの一部機能を有効にするためにもパラメータが使用されます。
なぜパラメータをチューニングするのか?
パラメータチューニングは、Gurobiのパフォーマンスを十分に引き出すために必須ではないことを理解しておくことが重要です。デフォルトのパラメータ設定は、Gurobiが保有する数千の顧客モデルコレクションによる広範な実験を通じて選定されています。これらは幅広いモデルタイプで良好に機能します。いくつかのアルゴリズム上の選択はモデル構造に基づいて自動的に行われたり、求解プロセス中に更新されたりします。
しかし、特定のモデルにおいては、デフォルト以外のパラメータ設定がこれらのデフォルトよりも優れた結果を出すことがあります。同じモデルタイプ(例えば同じ数理モデルだが入力データによる定数が異なる)のインスタンスを多数解くようなユーザーは、自分のモデルにチューニングしたパラメータを特定して使用することで、Gurobiのパフォーマンスをさらに向上させることができるかもしれません。
どのようにパラメータをチューニングするのか?
多くのアルゴリズムに関するパラメータが存在するため、設定の組合せは天文学的な数になります。デフォルトパラメータがほとんどのモデルで既に良好なパフォーマンスを発揮するため、改善されるパラメータを探すのは困難な場合があります。この探索は、Gurobiの自動パラメータチューニングツールを利用するか、手動で行うことができます。
パラメータチューニングツール
Gurobiには、パラメータ設定の改善を自動化するパラメータチューニングツールが同梱されています。最初から求解時間が過剰でない場合に特に効果を発揮し、多くの設定の組合せを迅速に評価できます。以下の資料でこのツールの使い方が説明されています:
手動チューニング
ユーザーはパラメータを手動で調整し実験することでもチューニングできます。Gurobiのログファイルは、求解アルゴリズムの挙動に関する洞察を得るのに役立ち、改善の見込みのあるパラメータ設定を理解するのに有用です。例えば、GurobiがMIPで良い解を見つけるのに時間がかかる場合、MIPFocusを1に設定すると、良い解を迅速に見つけることに重点を置く高レベルなMIP解法戦略に変更されます。別のモデルでは、MIPFocusを2に設定し、限界値の改善に重点を置くのが有効な場合もあります。
手動でモデルをチューニングしたい場合は、リファレンスマニュアルのParameter Guidelinesセクションを参照し、利用可能なパラメータやそれらが求解プロセスに与える影響について理解を深めてください。
注意すべき点
このセクションではパラメータチューニングの際に考慮すべき重要なポイントをまとめます。
ロバストな結果を得るために
パフォーマンスのばらつき (Performance Variability) の影響を減らし、チューニング結果のいわゆる「過学習」を防ぐために、パラメータチューニングの実験は複数のランダムシードや複数の代表的なモデルインスタンスを用いて実施すべきです。また、同時に多くの非デフォルトパラメータを使用しすぎると、それらが部分的に競合して悪影響を及ぼしたり、ソルバーが新しいモデルに適応できなくなる場合があります。
再チューニングすべきとき
ある特定のモデルタイプ向けにチューニングしたパラメータは、他のモデルでGurobiのデフォルト設定より優れた結果を出すことは期待できません。モデルの定式化を変更した場合や、入力データの値の範囲やサイズが大きく変わった場合は、デフォルトから変更したパラメータを再チューニングする(または少なくともGurobiのデフォルトパラメータと比較して検証する)必要があります。Gurobiの新しいマイナーまたはメジャーバージョンにアップデートした場合も同様です。
数値的な問題 (Numerical Issues)
モデルの定式化やデータに起因するNumerical Issuesは、パフォーマンスを低下させる可能性があります。NumericFocusなどのパラメータ設定でこれらの問題を緩和できる場合もありますが、モデルの再定式化やスケーリングによって数値的な問題に対処することが最善の解決策となる場合があります。Numerical Issuesとその対処方法について詳しくは、Guidelines for Numerical Issuesをご参照ください。
モデルの再定式化
パラメータチューニングはGurobiのモデルパフォーマンスを向上させる一つの方法ですが、実現できることには限界があります。モデルの求解に時間がかかりすぎる場合、改善の最大のカギはモデルの再定式化だということもあります。決定変数の選択、制約の表現、決定の粒度を変更することが有効な場合もあります。モデルの再定式化は簡単ではありませんが、モデルのパフォーマンスを改善する方法の例はウェビナーシリーズ「弱い定式化から強い定式化への変換」(パート1、パート2)で紹介しています。
お客様向けのチューニングサポート
商用Gurobiユーザーは、当社のエキスパートチームによるチューニングサポートを受けることができます。このサービスはメンテナンスおよびサポート契約の一部であり、追加料金はかかりません。チューニングサポートを受けるには、ヘルプセンターでサポートリクエストを送信してください。チューニングサポートをリクエストする際は、対象となるモデルを複数(ファイルアップローダー経由で)ご提供いただき、パフォーマンス目標についてお知らせいただくとより効果的です。