過去のバージョン情報

過去のGurobi Optimizerの各バージョンで実現された機能強化およびパフォーマンス改善の概要は、下記のとおりです。
(以下の説明に含まれているLP(線形計画)、MIP(混合整数計画)、MIQP(混合整数二次計画)、MIQCP(混合整数二次制約)、QP(二次計画)およびQCP(二次制約)の詳しい情報は、「サポートしている解法」をご覧ください。)

Gurobi Optimizer V.9.0

新機能によるブレイクスルー

【非凸な混合整数二次制約(MIQCP)のサポート】
非凸な二次計画問題(QP、QCP、MIQP、MIQCP)を求解可能な双線形ソルバーを、追加しました。
この新機能により、例えば、中間生成物を伴う古典的な配合問題に対する大域的最適解を見つけることが可能になります。

パフォーマンスの改良

Gurobi Optimizer バージョン9.0 では、ソルバーの速度と性能の限界に挑戦しました。
バージョン8.1と比較して、総体的に以下のパフォーマンス改良を実現しました。

LP(線形計画)デフォルトパラメータ設定で7%の速度向上を実現
バリア(内点)法7%の速度向上を実現、AVX512をサポートしているコンピュータでは、追加で4%の速度が向上
MILP(混合整数計画)全体で18%の速度向上を達成し、求解に100秒以上かかる難しい問題では26%の速度向上を実現
MIQCP(混合整数二次制約)24%の速度向上を実現

機能拡張

【Python Matrix API】
新たな機能が、あなたの開発作業をより簡略にします。PythonAPIで、NumPyまたはSciPyの行列を用いたMatrix APIのサポートを開始しました。

【区分線形関数制約のサポート】
区分線形関数に関する制約APIをサポートしました。

【自動区分線形変換による関数制約のサポート】
今回のリリースでは、9つの基本的な1変数非線形関数に対応する制約を追加しました。サポートする関数には多項式関数、指数関数、対数関数と三角関数を含みます。これらは、自動的に区分線形関数に近似された上で実現されます。

【MIP シナリオ分析】
新しく追加されたMIPシナリオ分析では、モデルに対していくつかの変化(変数の上下限値や定数の変更)を与え、その変化が、実際に解に対してどれほどのインパクトを持つかを調査することが可能です。

【新たに改善されたヒューリスティクス】
これまでより、さらに効果的な解の改善ヒューリスティクスを追加しました。

【暫定解のソリューションファイル】
MIP求解の途中に見つかった暫定解に対するソリューションファイルを、暫定解更新時に出力できるようになりました。

Gurobi 計算サーバの新機能

オンプレミスおよびプライベートクラウド配備のための新機能を実現しました。

【新たなクラスタマネージャ】
クラスタマネージャは計算サーバと同時に、インストール可能なサーバ用のコンポーネントです。ユーザ認証およびAPIキーによる、より良いセキュリティを提供します。また、インタラクティブなタスク、そうでないタスクを統一的に制御可能にし、計算サーバの機能を拡張します。

【バッチモードとAPI】
クラスタマネージャによりユーザは、インタラクティブ性を必要としないタスクをバッチとして扱うことが可能です。クライアントは、ローカル環境でモデルを生成し、サーバへ送付し、その後サーバとの接続を一旦切ることができます。サーバ上で処理が終了した後に、クライアントは改めて結果の確認ができます。

【新たなWEBユーザインタフェース】
クラスタマネージャによりユーザは、アカウント、クラスタ、ジョブ、バッチ等の情報を容易に管理することが可能です。ユーザは、バッチとして扱いたいモデルをドラッグアンドドロップにより、アップロードすることもできます。

【ジョブ/バッチのヒストリー】
クラスタマネージャでは、投入されたジョブとバッチの実行を継続的に記録しています。ユーザはクラスタの利用状況を、ユーザ、アプリケーション、時間枠で確認できます。

【計算サーバ上での遅延制約のサポート】
計算サーバで、遅延制約によるモデルが実行可能になりました。

Gurobi Optimizer V.8.1

パフォーマンスの改良

V8.1は、ソルバーの速度およびパフォーマンスの限界に挑み続けています。
V8.0と比較して、以下の項目において全体的な性能向上を実現しました。

MIQP(混合整数二次計画)全体で2.8倍以上の速度向上を達成し、100秒以上の時間を要する困難なモデルにおいては6倍以上の高速化を実現
MIQCP(混合整数二次制約)全体で38%の速度向上を達成し、100秒以上の時間を要する困難なモデルにおいては92%の高速化を実現
LP(線形計画)デフォルト設定で全体で2.9%の速度向上を達成し、100秒以上の時間を要する困難なモデルにおいては6.5%の高速化を実現
LPバリア全体で4.4%の速度向上を達成し、100秒以上の時間を要する困難なモデルにおいては11%の高速化を実現
LP双対単体法全体で4.2%の速度向上を達成し、100秒以上の時間を要する困難なモデルにおいては10.5%の高速化を実現

機能拡張

【Gurobiのリモートサービス(計算サーバ)およびインスタントクラウドでMicrosoft Azureをサポート】
リモートサービス(計算サーバ)やインスタントクラウドユーザは、いくつかの地域で、Microsoft Azureを使えるようになりました。

【Gurobiのインスタントクラウドに、Amazon EC2上のさらに高速で強力なマシンを追加】
本バージョンでは、c5、r5、z1 インスタンスタイプが追加されました。

【MIQPとMIQCP モデルのための新しい二次項線形化手法の実装】
新しい二次項線形化手法が追加されました。新機能はGurobiパラメータのPreQLinearizeを2に設定することで利用できます。

【Macインストレーションパッケージの改良】
ユーザは、Xcodeをインストールしなくてもインストレーションを実行できます。

【Python3.7のサポート】
Windows、Linux、Macプラットフォームで、Python3.7がサポートされました。

【多目的最適化に関するコールバック関数】
多目的最適化のそれぞれの目的関数について、最適化演算のユーザインタラプトを行うことができるようになりました。

Gurobi Optimizer V.8.0

パフォーマンスの改良

Gurobi Optimizer バージョン8.0では、ソルバーの速度と性能の限界に挑戦しました。
バージョン7.5と比較して、総体的に以下のパフォーマンス改良を実現しました。

MIP(混合整数計画)全体的に16%、求解に100秒以上かかる難しいモデルでは26%もの高速化を実現
LP(線形計画)双対単体法が、総体的に10%の高速化を実現(このクラスのモデルでは、とても顕著な性能向上を実現)

機能拡張

【RおよびMATLABのAPIの機能強化】
RおよびMATLABのAPIが大幅に改善され、これによりGurobiの他のAPIで実現可能なほとんどの機能が提供されました。改善されたインターフェースが、多目的最適化およびgeneral constraints (絶対値、最大値)に関するAPIをサポートしています。

【.NET Core 2.0のサポート】
Windows, Mac、Linuxにおいて.NET Coreのサポートが追加されました。これにより、.NetのプログラムがWindowsシステム上だけでなく他のシステム上でも稼働可能になりました。

【Multiple MIP Starts】
最適化モデルに対して、複数の初期解を利用可能になりました。

【Partition ヒューリステック】
新しいMIPヒューリスティクとして、Partition ヒューリステックが追加されました。ユーザ定義の変数集合について、解探索を行うことができます。

【多目的最適化のためのコールバック関数】
多目的最適化のユーザコールバック関数が、サポートされました。

計算サーバ

計算サーバが独立したパッケージ化され、通常のコンポーネントと分けてインストールすることができるようになりました。新しいパッケージは、以下の機能を含んでいます。

【スタンダードな通信プロトコル】
HTTP、HTTPSのサポートにより、セキュリティ改善、容易な展開および堅牢性をサポート。

【クラスタリング】
新しいクラスタ機能により、ノードの動的な追加と削除を実現。

【コマンド】

  • 新しいコマンドツールで、クラスタの監視および管理が可能。ユーザは、クラスタの状態を表示ができ、実行中ジョブ、直近に実行終了したジョブのリスト表示も可能で、ジョブのログとパラメータにもアクセスが可能。アドミニストレータは、ライセンス、強制終了ジョブのリストも表示可能で、クラスタのノード管理も可能。
  • プログラムコードでクラスタの監視と管理ができるREST APIを実装。

Gurobi インスタントクラウド

Gurobi インスタントクラウドで、下記の機能が利用可能になりました。

【HTTPS】
HTTPSのサポートによるセキュリティ改善、容易な展開および堅牢性をサポート。

【ジョブリスト】
新しいジョブリスト機能で、キューイングされたジョブ、実行中のジョブ、直近に実行終了したジョブのリスト表示可能。

【ジョブダッシュボード】
新しいダッシュボード機能がジョブの詳細情報(ステータス、ログファイル、パラメータ、メトリックス)を一か所で表示。

【ジョブ履歴】
新しいアーカイブ機能により、ユーザは、過去3か月のジョブのログおよびステータスを格納可能。

【プールスケーリング】
新しいプールスケーリング機能により、プールへのマシンの動的な追加と削除を実現。

【マシンメトリックス】
各マシンのマシン負荷状況(CPUおよびメモリ使用量)の表示を実現。

【REST API】
拡張されたREST APIが、ジョブ情報へのアクセスとプールスケーリングへのコントロールを実現。

Gurobi Optimizer V.7.5

パフォーマンス改善

Gurobi Optimizerは、過去においても新バージョンのリリースの度に劇的なパフォーマンス改善を実現してきました。Gurobi Optimizer 7.5においても、過去のバージョン7.0から更なるパフォーマンス改善を実現しました。

本バージョンにおけるパフォーマンス改善は、下記のとおりです。

MIP(混合整数計画)全体的に21%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては40%もの速度向上を実現
LP(線形計画)並行:全体的に13%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては30%もの速度向上を実現
デュアルシンプレックス:全体的に19%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては35%もの速度向上を実現
バリア:全体的に5%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては17%もの速度向上を実現

Pythonモデリング機能強化

Pythonモデリングインタフェースを、大幅に強化しました。本リリースでは、一般制約式と範囲制約についての簡潔な構文を新たに提供します。

多目的最適化機能の簡素化

多目的最適化インタフェースが、大幅に簡素化されました。setObjectiveN ルーチンを用いることによって、目的関数を指定することができます。また、最適化の終了条件に関するパラメータを、最適化メソッドへ目的関数ごとに独立して渡すことが可能になりました。

混合整数二次計画(MIQP)における微小な制約違反の低減

MIQPモデルにおいて、数値誤差による微小な制約違反の低減のために、よりタイトなトレランスを採用しました。

JavaDocのサポート

Javaインタフェースにおいて、新しくJavaDocに対応しました。

Python 3.6のサポート

Linux、Mac、Windows環境で、Python 3.6のサポートを開始しました。

Visual Studio 2017のサポート

Windows環境で、Visual Studio 2017のサポートを開始しました。

新しく追加されるパラメータ

  • IgnoreNames
    ユーザが定義した変数・制約の名前属性を無視して扱います。
  • StartNodeLimit
    解きたい最適化問題の部分的な許容解を与えたときに、その情報に基づいて探索を行うノード数を指定できます。

サポートプラットホームに関するご案内

Gurobi Optimizer V.7.5は、32ビット版Windowsをサポートする最後のリリースです。現在開発・使用中であるアプリケーションの、64ビット版への移行をご検討ください。

Gurobi Optimizer V.7.0

パフォーマンス改善

Gurobi Optimizerは、過去においても新バージョンのリリースの度に劇的なパフォーマンス改善を実現してきました。Gurobi Optimizer 7.0においても、過去のバージョン6.5から更なるパフォーマンス改善を実現しました。

本バージョンにおけるパフォーマンス改善は、以下のとおりです。

MIP(混合整数計画)全体的に19%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては30%もの速度向上を実現
LP(線形計画)全体的に10%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては25%もの速度向上を実現
QCP(二次制約問題)全体的に46%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては66%もの速度向上を実現
MIQCP(混合整数二次制約)全体的に48%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては164%もの速度向上を実現
MIQP(混合整数二次計画)全体的に9%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては18%もの速度向上を実現

Pythonモデリング機能強化

Pythonモデリングインターフェースを、大幅に強化しました。数理モデルから効率的な実装に変換する作業を更に簡潔にする、新しいメソッドとクラスを提供します。

多目的最適化のサポート

対象モデルに複数の独立した目的関数を関連付けし、多目的関数モデルに対してブレンドされた、または辞書式の最適化を実行できます。

MIP解プールのサポート

MIPモデルに対して、単一解より多くの解を取得できるようになりました。具体的には、N最適解または最適解から指定したギャップ(最適解から乖離)より小さいN解を要求できます。

一般制約式の導入

幾つかの頻出する制約条件を、自分自身で線形制約に変換しなくても入力できます。具体的には、以下のような制約タイプを加えることができます。

  • MIN/MAX制約: 他の決定変数のセットで、min/maxに等しい決定変数を設定します。
  • ABS 制約: 他のいくつかの決定変数の絶対値に等しい決定変数を設定します。
  • AND/OR 制約: AND/ORはその他の0-1決定変数のセットに対して、論理的に等しい0-1決定変数を設定します。
  • インジケータ制約: 0-1変数が、特定値となる場合のみ線形制約を適応させます。

チューニング基準のサポート

以前のリリースでは、チューニングツールは、常にギャップ(最適値との乖離)を最小化する設定を見つけようとしていました。新しいTuneCriterionパラメータを使用することで、最適下界値、最適上界値、またはギャップを探索することができます。

Mac上でのPython 3.5のサポート

Mac上でのPython 3.5サポートを追加したことで、Gurobi Version 7.0は、よく知られているプラットフォームの全てをサポートするようになりました。Mac上でAnaconda 3.5も使用することができ、それに含まれるプレビルドされた巨大なライブラリとJupyter Notebook開発環境が利用できます。

バージョン7.0におけるその他の追加機能

上記の機能強化に加えて、以下の機能要望にも応えました。

.NETプロパティサポート
Gurobi パラメータと属性値は、.NETインターフェースの.NETプロパティから取得できます。

ほとんどのプログラムでの余分なupdateコールの抑制
新リリースでは、デフォルトのupdate動作を変更します。新しく作成された変数や制約は、updateを呼び出すことなく参照できます。

追加される新しいパラメータ

  • BestObjStop:新しい終了基準 – 現最良目的関数値が指定された値と少なくとも同じか良い場合は、MIP計算を終了します。
  • BestBdStop:新しい終了基準 – 現境界値が指定された値と少なくとも同じか良い場合は、MIP計算を終了します。
  • InfProofCuts:新しい切除平面タイプ
  • StrongCGCuts:新しい切除平面タイプ
  • DegenMoves:時々ルート・ヒューリスティック処理が重い場合がありますが、それをユーザ側で無効にできます。