過去のバージョン情報
過去のGurobi Optimizerの各バージョンで実現された機能強化およびパフォーマンス改善の概要は、下記のとおりです。
過去のGurobi Optimizerの各バージョンで実現された機能強化およびパフォーマンス改善の概要は、下記のとおりです。
(以下の説明に含まれているLP(線形計画)、MIP(混合整数計画)、MIQP(混合整数二次計画)、MIQCP(混合整数二次制約)、QP(二次計画)およびQCP(二次制約)の詳しい情報は、「サポートしている解法」をご覧ください。)
Gurobi Optimizer V.10.0
V.10.0では、様々な新機能をサポートし、Gurobiがサポートする様々な問題タイプにおいて更なるパフォーマンス改善を実現しました。パフォーマンス検証は、Gurobi社の保持する、各業界の様々な最適化問題を含むベンチマークで行われています。
パフォーマンス改良
全体的な改良 | 難しい問題(求解に100秒以上を要する問題) | |
---|---|---|
LP(線形計画) | 8% | 20% |
MIP (混合整数計画) | 12% | 20% |
Convex MIQP (混合整数二次計画) | 47% | 2.1倍(*注1) |
Convex MIQCP (混合整数二次制約) | 14% | 33%(*注1) |
Non-convex MIQCP (混合整数非凸二次制約) | 59% | 3倍 |
*注1:当該問題クラスとして利用可能なベンチマークセットのサイズが、結果に十分な信頼性を得るに足る数を得られていないため、参考値となります。
Gurobi 10.0では、以下の新機能追加と機能改善が行われました。これらの新機能により、ユーザはこれまでより動的でかつ柔軟にGurobi を利用することが可能になります。
新機能と全体的な改善
【インストール関連】
.NETでのインストールをより簡易にするため、NuGet packageサポートしました。
【新機能】
①SoftMemLimit パラメータにより、指定のメモリ量を超過した場合に正常終了できるようになりました。
②ロジスティック関数 y = 1/(1+e^(-x)) をGeneralConstraintとして、記述できるようになりました。
③新たなLP解法として、network simplex法が追加されました。
④QUBOモデルに対して、新しいヒューリスティクスを導入しました。
⑤並列LPソルバーを、再編しました。
⑥ニューラルネット上のReLU活性化関数を表す制約を持つようなモデルについて、大幅な性能改善が行われました。
⑦行列APIの改善:全ての行列APIについて、多次元のインデックスをサポートしました。
【新たに追加されたパラメータ】
・NetworkAlg: network simplex法をコントロールするパラメータ
・OBBT:Optimization Based Bound Tightening をコントロールするパラメータ
・SoftMemLimit:メモリ使用量が設定値を超過した場合に正常終了するパラメータ
【計算サーバ機能についての改善】
クラスタマネージャが、新たに2つのダッシュボードを提供します。以下のダッシュボードは、ユーザは時系列に従って各指標を確認でき、クラスタの利用状況をより効率的に確認することができます。
(ジョブダッシュボードで確認できる項目)
ジョブのステータス、求解の状況、アプリケーション、利用ユーザ、実行時間
(ノードダッシュボードで確認できる項目)
CPU利用率、メモリ使用量、実行中/キュー上のジョブ
【GitHub上のオープンソースリポジトリ】
データサイエンスと数理最適化をより密接につなぐPythonプロジェクトを、GitHub上で公開しています。
Web License Service (WLS)についての改善
【The Web License Service (WLS) の適用プラットフォーム拡張】
・DockerとKubernetesに加えて、Google Cloud等のその他のコンテナでの稼働をサポートしました。
・通常のLinux、Mac、Windowsマシーン上での動作を、サポートしました。
【WLSマネージャ】
・WLSマネージャから利用プラットフォームやバージョン情報等の各種指標が、確認できます。
・WLSTokenRefreshパラメータにより、現在のトークンの有効期限が切れる前にトークンをリフレッシュするタイミングを制御できます。
Gurobi Optimizer V.9.5
Gurobi 9.5では、新たなエンタープライズ機能、製品機能強化、そして、Gurobiがサポートする様々な問題タイプにおいて更なるパフォーマンス改良を実現しました。
パフォーマンス改良
全体的な改良(求解に1秒以上を要する問題) | 難しいモデル(求解に100秒以上を要する問題) | |
---|---|---|
並列実行 | 14% | 54% |
主単体法 | 23% | 43% |
双対単体法 | 20% | 43% |
内点法 | 18% | 56% |
全体的な改良(求解に1秒以上を要する問題) | 難しいモデル(求解に100秒以上を要する問題) | |
---|---|---|
MIP (混合整数計画) | 15% | 27% |
Convex MIQP (混合整数二次計画) | 30% | 68% |
Convex MIQCP (混合整数二次制約) | 33% | 78% |
Non-convex MIQCP (混合整数非凸二次制約) | 3.0x(3倍) | 7.5x(7.5倍) |
エンタープライズ機能
Gurobi Optimizer 9.5において、以下のエンタープライズ利用向けの機能が追加されました。
【Dockerへのシームレスなデプロイ機能】
GurobiのWeb ライセンスサービス(WLS)を用いることで、GurobiをDockerコンテナ内で容易に起動できるようになりました。
【ユーザレベルでのマネジメント機能】
Gurobiの計算サーバとクラスタマネージャをLDAPリポジトリと統合することで、ユーザの管理と権限レベルの割り当てを一元的に行うことができます。
【APIキー管理性の向上】
クラスタマネージャでAPIキーに情報ラベルを付けることで、APIキーのトラッキングと管理を簡素化しました。
新たな機能と機能強化
非凸二次(non-convex QCP)モデルのための強力な新しいヒューリスティック、ノルム制約、決定論的な処理時間の指標、メモリ制限のパラメータ、IIS計算におけるユーザ制御の強化、コールバックとチューニングの改良等、製品全体で十数個の機能強化が行われています。
【非凸二次モデルのための新しいヒューリスティック】
非凸の二次モデルの実行可能な解を素早く見つけるための非線形バリアソルバーを、追加しました。
【NorRelヒューリステックにおける遅延制約の利用】
NorRelヒューリステックで、遅延制約がサポートされるようになりました。暫定解取得時のコールバック関数を用いて、遅延制約を使うことが可能になります。
【NorRelHeuristicを抜けるためのコールバックのサポート】
Proceedメソッドを呼び出すことにより、NorRelヒューリステックから分枝限定法に速やかに移行できるようになります。
【Webライセンスサービス (WLS)】
Web ライセンスサービスを用いることで、コンテナ環境(Docker、Kubernetes等)上でのGurobiの呼び出しを可能にします。事前に定義されたイメージがDocker Hubで提供されています。
【Work Metric】
決定論的に再現性のある停止指標としてWork Metricが指定できるようになりました。
【メモリ制限の指定】
新パラメータのMemLimitを指定することで、実行時のメモリ使用量が指定値を超えた場合に最適化を停止できるようになりました。
【新たなカットタイプ、Lift-and-Project Cuts】
新しくLift-and-Project Cutsカットが追加されました。このカットは、パラメータのLiftProjectCutsにより動作の制御が可能です。
【単体法のホットスタートに対する新しい設定】
直前の解から単体法を再開するための新しい設定が追加されました。新規パラメータのLPWarmStartで、利用が可能です。
【双対モデルの出力】
新しく追加された .DUAと.DLPファイルフォーマットを利用することで、扱っているLPモデルの双対形式を出力することが可能です。
【新しいGeneral Constraint(ノルム制約)】
新しくノルム制約をGeneral Constraintとして記述可能になりました。0-、1-、2-、無限大ノルムがサポートされています。
【Mac Universal2ポートのサポート】
AppleシリコンとIntel x64プロセッサの両方に対応しました。
【IIS実行中のコールバック】
IIS機能の実行中にコールバック関数が、呼び出し可能になりました。
【SOSエンコーディングの設定】
SOS制約が、内部的に複数の異なる方法で定式化可能になりました。異なる定式化を指定することで、パフォーマンス改良につながる可能性があります。
【チューニングツールの強化】
チューニングツール関して、終了時の制御および複数回の試行による実行時間の集計方法の制御等、様々な制御機能が追加されました。
【gurobipy の改良】
gurobipy のほとんどのクラスと関数でタイプヒントが、利用できるようになりました。さらに、MVar および MConstr オブジェクトのインデックスが numpy と一致するようになりました。
【追加された新規パラメータと属性】
MaxVio: 得られた解における(スケーリングされていない)制約違反量を与える属性です。 ConcurrentWinMethod: LP求解が並列実行されるときに、どのアルゴリズムによって解かれたかを表す属性です。 PoolIgnore: ソリューションプールにおいて2つの解が異なるかどうかの判定の際に無視すべき変数を指定する属性です。
【IIS に対する強制指定フラグ】
IISの求解アルゴリズムを、より詳細に制御できるようになりました。具体的に、特定の制約や変数の上下限をIISに強制的に組み込むことを指示できます(このときIISが最小となるとは限りません)。逆に、IISから特定の制約や変数の上下限を強制的に除外することも可能です。
計算サーバとクラスタマネージャ
【Webライセンスサービス (WLS)】
新しいWebライセンスサービスでは、Gurobi 計算サーバやクラスタマネージャをコンテナ環境(Docker、Kubernetes等)で動作させることができます。定義済みのイメージはDocker Hubで提供されています。
【LDAPリポジトリとの統合による集中的なユーザ管理】
LDAPに対応し、業界標準のディレクトリサービスを利用して、ユーザの認証・許可を行うことができます。
【Amazon Web Services DocumentDB 4.0 Database のサポート】
クラスタマネージャが、バックエンドデータベースとしてAWS DocumentDB 4.0をサポートするようになりました。これにより、クラスタマネージャをAWS環境に導入する際の選択肢が広がります。
【API Key制御】
クラスタマネージャが、API Keyの無効化/有効化、詳細情報の追加、APIキーのトレース等の機能をサポートし、セキュリティを向上させています。
【アカウント管理】
クラスタマネージャで、システムアカウント、パスワードポリシー、リードオンリーロールの使用、アカウントの無効化/有効化機能が提供され、ユーザ管理が向上しました。
【ユーザビリティの向上】
クラスタマネージャで、文脈依存型ヘルプ、設定管理、パーマリンク、ジョブメトリクス等の機能が追加され、ユーザビリティが向上しました。