過去のバージョン情報
過去のGurobi Optimizerの各バージョンで実現された機能強化およびパフォーマンス改善の概要は、下記のとおりです。
(以下の説明に含まれているLP(線形計画)、MIP(混合整数計画)、MIQP(混合整数二次計画)、MIQCP(混合整数二次制約)、QP(二次計画)およびQCP(二次制約)の詳しい情報は、「サポートしている解法」をご覧ください。)
Gurobi Optimizer V.11.0
Gurobi 11.0では、非線形計画問題の大域的最適解を正確に・素早く確定することができるようになりました。この問題は、化学工学、電力流、価格最適化のような問題領域において有用なものです。さらに、パラメータ チューニング ツールの機能強化を実施しました。これにより、開発チームはチューニング作業において、技術者や作業の枠を超えて計算機資源を共有できるようになりました。
速度向上
これまでのメジャー バージョンアップと同じく、Gurobiユーザは、業界をリードするソルバーの速度向上を体験するでしょう。Gurobi 10.0と比較して、11.0は次の速度向上を実現しました。
全体的な改良 | 難しい問題(求解に100秒以上を要する問題) | |
---|---|---|
MILP (混合整数計画) | 8.6% | 12.4% |
MIQP (混合整数二次計画) | 12.8% | 22.8% |
Convex MIQCP (混合整数二次制約) | 9.2% | 18.2% |
Non-convex MIQCP (混合整数非凸二次制約) | 133.4% (2.3倍) | 480.2% (5.8倍) |
新機能と全体的な改良
速度向上に加えて、Gurobi 11.0では充実した新機能を提供しています。これらの多くは、ユーザからの要望を具体化したものです。
【混合整数非線形計画(MINLP)問題】
複雑な非線形問題の大域的最適解を正確に・素早く確定することができます。
関連するパラメータ:FuncNonlinear
【動的分散チューニング】
Gurobiでよく使われるパラメータ チューニング ツールの大幅な機能強化を実施しました。これによって、技術者や作業を超えて開発チームは、計算機資源を共有したチューニング作業を実施できます。
関連するパラメータ:TuneDynamicJobs、TuneUseFilename
【LPの並列実行制御の改良】
LPの並列実行において決定論的LP解法を選ぶか、非決定論的LP解法を選ぶか、どの手法を使うかの選択を利用者は正確に行えるようになりました。
関連するパラメータ:Method,ConcurrentMethod
【SolutionTargetパラメータ】
新しいSolutionTargetパラメータの設定によって、LP問題の最適基底解を必要としない利用者が、より短時間で解を得ることができるようになりました。
【新しいカット手法】
求解時間の向上を達成しました。
関連するパラメータ:MixingCuts
【環境間でのモデルのコピー】
モデルを、複数の環境下で同時実行することが可能となりました(計算サーバーには非対応)。
【Threadsパラメータ】
最適化を一度停止した後に、Threadsパラメータを変更して実行できるようになりました。
Gurobiクラスタ マネージャと計算サーバ
【SAML統合】
これまでのLDAPのサポートに加えて、SAMLベースのアイデンティティ管理システムとGurobiをシームレスに統合しました。これにより、ユーザアクセスの集中的管理とシングル サインオン(SSO)機能を利用することができます。
【Cosmos DBのサポート】
GurobiはMicrosoft® Azure® Cosmos DB®をサポートしました。これにより、クラスタの展開をより柔軟に行うことができます。
なお、MongoDB®およびAmazon® DocumentDB®は、従来通りサポートしています。
【利用性の向上】
Gurobiクラスタ マネージャは、新しいルック&フィールで利用することができます。また、ユーザ名の大文字・小文字の区別、改良されたデータフォーマット、最新のHTTP security headerを提供しています。
【実行時間制限およびメモリ利用量制限の強化】
Gurobi計算サーバでは、新しいパラメータで、実行時間制限やメモリ利用量制限を強制的に行えます。
Gurobi 10.0から11.0への移行
ほとんどのプログラムはそのまま移行可能ですが、以下の変更にご注意ください。
【NonConvexパラメータ】
デフォルトの-1の設定で、非凸問題の判定を行えるようになりました。
【Python言語でのgurobipy】
インストーラにはgurobipyおよびsetup.pyは、含まれていません。ユーザがインストールしたPythonでGurobiを使うときは、pipまたはcondaを使ってインストールする必要があります。
【Javaパッケージ】
名前が、gurobiからcom.gurobi.gurobiに変更されました。これにより、Maven Centralでのリリースが可能になります。
サポートプラットフォーム(v11.0)
対応OS環境は、お客様からの要望に応じて、適時、追加・修正される可能性があります。対応OS環境に関してのご要望および過去のバージョンにおけるサポートプラットフォームに関しては、お問い合わせよりご連絡ください。
Windows 64-bit (win64)
OS | Windows 10、Windows 11、Windows Server 2016®、Windows Server 2019®、Windows Server 2022® |
コンパイラ | Visual Studio 2017® – 2022® |
備考 | C++に関しては、gurobi_c++md2017.libをご利用ください。 |
Linux x86-64 64-bit (linux64)
OS | Red Hat® Enterprise Linux® 8、9 |
コンパイラ | GCC 8.5以上 |
OS | SUSE® Enterprise Linux 15 |
コンパイラ | GCC 8.5以上 |
OS | Ubuntu® 20.04、 22.04、24.04 |
コンパイラ | GCC 8.5以上 |
OS | Amazon Linux 2 2023 |
コンパイラ | GCC 8.5以上 |
Mac OS 64-bit (mac64)
OS | macOS 12 (Monterey), macOS 13 (Ventura), macOS 14 (Sonoma) |
コンパイラ | Xcode 13、14 |
Linux arm64 64-bit (linux64)
OS | Red Hat® Enterprise Linux® 8、9 |
コンパイラ | GCC 8.5以上 |
OS | SUSE® Enterprise Linux 15 |
コンパイラ | GCC 8.5以上 |
OS | Ubuntu® 20.04、 22.04、24.04 |
コンパイラ | GCC 8.5以上 |
OS | Amazon Linux 2 2023 |
コンパイラ | GCC 8.5以上 |
AIX® 64-bit (power64)
OS | AIX® 7.2、7.3 |
コンパイラ | XL C/C++ 9 |
備考 | AIX上では、 Python、MATLAB 、 R インタフェースはサポートしていません。 |
* AIX上でのPythonのサポート制限により、AIX上では、Interactive Shell または Python ライブラリをサポートしていません。Gurobi 11 は AIX をサポートする最後の Version となります。
Python
バージョン | 3.8、3.9、3.10、3.11、3.12 |
MATLAB®
バージョン | 2019a through 2023b |
R
バージョン | 4.4 |
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キーのトレース等の機能をサポートし、セキュリティを向上させています。
【アカウント管理】
クラスタマネージャで、システムアカウント、パスワードポリシー、リードオンリーロールの使用、アカウントの無効化/有効化機能が提供され、ユーザ管理が向上しました。
【ユーザビリティの向上】
クラスタマネージャで、文脈依存型ヘルプ、設定管理、パーマリンク、ジョブメトリクス等の機能が追加され、ユーザビリティが向上しました。