Gurobi Optimizer:ソルバー

最新バージョン情報

更なるパフォーマンスの向上と新しい製品機能
Gurobi Optimizer V.9.1

リリース日:2020年11月

かつてないより広範囲なビジネスの問題に対処する高品質なソリューションを構築するため、金融サービス、石油・ガス、化学等の産業を含む多くの産業のお客様に、数理最適化を使えるための能力を提供。

パフォーマンスの改良

Gurobi Optimizer バージョン9.1では、ソルバーの速度と性能の限界に挑戦し、何千もの実問題のモデルで構成されているGurobi社のテスト用ライブラリーを使用しテストを実施し、以下の通り、注目すべきパフォーマンス改良を実現しました。

LP(線形計画)

主単体法全体で17%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、 37%以上の速度向上を実現
双対単体法全体で29%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、 66%以上の速度向上を実現
内点法全体で15%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、 34%以上の速度向上を実現
MILP(混合整数計画)全体で5%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、9%以上の速度向上を実現
MIQP(混合整数二次計画)全体で5%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、20%以上の速度向上を実現
MIQCP(混合整数二次制約)全体で13%の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、57%以上の速度向上を実現
Non-convex MIQCP
(混合整数非凸二次制約)
全体で4倍の速度向上を達成し、求解に100秒を超えるより難しいモデルでは、9倍以上の速度向上を実現

機能拡張

【IIS(Irreducible Inconsistent Subsystem)の検出機能を大幅に改善】
IISの検出機能はモデル内に不整合があり、それが実行不可能な場合やその原因を絞り込む必要がある場合に非常に役立ちます。GurobiのIISは、バージョン9.1では2.6倍以上に高速化され、求解に100秒を超えるより難しいモデルでは5.7倍以上の速度向上を実現しています。これにより、モデル上の問題点を迅速に特定し、実問題の解決に戻ることができます。 また、IISのサイズを早期に見積もることができるようになったため、モデル内の問題の範囲を素早く把握することができます。

【MIPの実行可能解発見機能の改善】
高品質の実行可能解を、早期に見つける能力を大幅に強化しました。

【NoRelヒューリスティック】
NoRel(No Relaxation ヒューリスティック)により、求解に非常に時間がかかるMILP(混合線形計画問題)のLP(線形問題)緩和問題に対して、高精度の解を見つけ出すことが可能になりました。

【Integrality Focus機能】
MIPモデルでは、論理的な条件を扱うためにバイナリ変数を使用することがよくあります。 例えば、「実際にパイプを構築しないと、そのパイプに液体を送ることはできない」というような制約を実現するためにバイナリ変数を使用します。 しかし、MIPソルバーは浮動小数点演算の範囲で動作するため、論理的な制約が意図したよりも少し緩くなってしまうことがあります。 よく知られているtrickle flow(適下流)問題はこの一形態であり、ある特定の状況においてMIPソルバーは、パイプを制御するためのバイナリ変数がゼロよりもわずかに大きいだけにもかかわらず、パイプにかなりの量のフローを流すことができてしまいます。
Gurobiの新しいIntegrality Focus 機能は、数値誤差の問題から生じる可能性のある問題をほぼすべて除去します。

【PythonのMatrix APIの強化】
主な変更点は、新しい Matrix constraintクラスです。これにより、スカラーオブジェクトをとり扱うことなくMatrix APIのみで実現することが容易になりました。

【pipInstallサポート】
「pip install gurobipy」と記述するのみで、手元のPython環境内からGurobiを実行できるようになりました。

【PythonAPI上でのGIL(Global Interpreter Lock)の解放】
optimize()メソッドが呼び出されると、gurobipyはGILを解放するようになりました。 最適化が実行されている間、ユーザプログラムが別PythonスレッドでPythonコードを実行できるようになります。

【自動パラメータチューニング機能の強化】
チューニング機能のための、いくつかの新しい制御パラメータを追加しました。

【計算サーバ、GurobiクラウドでのAPIレコード/リプレイ機能のサポート】
APIのレコード/リプレイ機能が計算サーバ、Gurobiクラウド上でもサポートされるようになりました。

【ユーザ指定のカット機能】
Lazy linear constraint属性を-1に設定することで、線形制約をユーザカットとして宣言することができます。制約は、モデルの残りの部分に関して冗長でなければなりません。MIP求解プロセス中に得られるLP解を切除しパフォーマンスを向上させるために、このようなユーザカットを緩和問題に追加することができます。

サポートプラットフォーム(v9.1)

対応OS環境は、お客様からの要望に応じて、適時、追加・修正される可能性があります。対応OS環境に関してのご要望および過去のバージョンにおけるサポートプラットフォームに関しては、お問合せよりご連絡ください。

Windows 64-bit (win64)

OSWindows 10、Windows Server 2012 R2®、Windows Server 2016®、Windows Server 2019®
コンパイラVisual Studio 2015®
備考C++に関しては、gurobi_c++md2015.libをご利用ください。
OSWindows 10、Windows Server 2012 R2®、Windows Server 2016®、Windows Server 2019®
コンパイラVisual Studio 2017®
備考C++に関しては、gurobi_c++md2017.libをご利用ください。
OSWindows 10、Windows Server 2012 R2®、Windows Server 2016®、Windows Server 2019®
コンパイラVisual Studio 2019®
備考C++に関しては、gurobi_c++md2019.libをご利用ください。

Linux 64-bit (linux64)

OSRed Hat® Enterprise Linux® 6.7-6.10、7.3-7.7、8.0-8.3(と左記に対応する CentOS)
コンパイラGCC 4.4、 4.8
OSSUSE® Enterprise Linux 12、 15
コンパイラGCC 4.3、 4.4、 4.8
OSUbuntu® 16.04、 18.04、 20.04
コンパイラGCC 4.6、 4.8
備考C++に関しては、libgurobi_g++5.2.aをご利用ください。

Mac OS 64-bit (mac64)

OSMac OS X® macOS 10.13 (High Sierra)、macOS 10.14 (Mojave)、macOS 10.15 (Catalina)
コンパイラXcode 7、8

AIX® 64-bit (power64)

OSAIX® 7.1、7.2
コンパイラXL C/C++ 9
備考AIX上では、 Python、MATLAB 、 R インタフェースはサポートしていません。
* AIX上でのPythonのサポート制限により、AIX上では、Interactive Shell または Python ライブラリをサポートしていません。

MATLAB®

バージョン2013a through 2020b

R

バージョン4.0
JDK8、11、15
.NET core2.1、3.1

過去のバージョン情報

Gurobi Optimizerの過去のバージョン情報は、こちらをご確認ください。

弊社の経験豊富なエンジニアが、数理最適化製品をお客様に
より深くご理解いただくため、適時技術サポートを提供しています。
製品入門トレーニング