株式会社オクトーバー・スカイ October Sky Co., Ltd.loading
  1. HOME
  2. 製品情報
  3. 過去のバージョン情報

過去のバージョン情報

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

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: 時々ルート・ヒューリスティック処理が重い場合がありますが、それをユーザ側で無効にできます。

Gurobi Optimizer V.6.5

パフォーマンス改善

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

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

MIP(混合整数計画)全体的に37%の速度向上を実現し、求解に100秒以上かかっていた問題に対しては72%もの速度向上を実現
LP(線形計画)全体的に16%の速度向上を実現
SOCP(二次錐計画問題)全体的に16%の速度向上を実現
MIQP(混合整数二次計画)全体的に2倍以上の高速化を実現
MIQCP(混合整数二次制約)全体的に2.8倍以上の高速化を実現
Python API線形表現、二次表現の構築時間を4倍以上の高速化

Gurobi レコーディング

本リリースでは、お客様のプログラムから呼び出された一連の流れのGurobi Optimizerのコマンドをファイルに記録し、後で再生することができます。本機能によってパフォーマンス問題の改善を容易にし、Gurobi Optimizerの環境やモデル内でのメモリリークの追跡を可能とし、また、Gurobiのテクニカルサポートへコマンド呼び出しの履歴を提出することができるようになります。(再現性が困難な問題発生時において)

変数ヒント

MIPモデルに対しての高品質の解の推測情報をお持ちの場合(例えば、関連したモデルを解くことで)、新機能である変数ヒントにより、Gurobi Optimizerにその推測情報を渡すことができます。本情報は、Gurobi Optimizerのヒューリスティクスおよび新しい解を探索するためのガイドとなるべき分枝で使われます。良い推測情報を与えることで、高品質の解をより短時間に提供することが多くの場合で可能になります。

API の簡素化

Gurobi Optimizer 6.5 は、updateコマンドのほとんどの呼び出しを回避できる新しい設定手法を提供し、これによりプログラムを簡素化できるようになりました。特に遅延アップデートモデルにより、従来はupdateコマンドの呼び出しを待たなければならなかったのに対して、すぐに新しい変数や制約を使用できるようになります。

その他の拡張機能

バージョン6.5では、上記の機能強化に加え、ユーザからの下記の機能要望に対しても対応しました。

Visual Studio 2015 サポート

Windows上の最新版のVisual Studioに、対応しました。

Mac上のC++11をサポート

Mac上の最新版のC++11に、対応しました。

Python上のGurobi環境の生成と消滅の正確な制御

不要になったGurobi Optimizerの環境を、明らかに削除できるようになりました。

単一使用ライセンスの簡素化

単一使用ライセンスに、トークンサーバは必要なくなりました。

トークンサーバのパスワード保護

トークンサーバに、クライアントから提供されるパスワードが指定できるようになりました。

分散MIPのロギング強化

分散MIPのログが、単一マシンでのMIPログとほとんど同じ情報を含むようになりました。

Rインターフェース強化

Rインターフェースは、SOS制約、二次制約、区分線形オブジェクト、そして、新しい解の統計情報をサポートするようになりました。

新しいOPBファイルリーダー

擬似ブーリアン・ファイルフォーマットに保存されている問題を、読み込むことができるようになりました。

Gurobi Optimizer V.6.0

パフォーマンスの改善

MIP全体で17%の速度改善を実現。
(解くのに100秒以上かかる難しい問題では、27%の速度改善を実現。)
LP全体で6%の速度改善を実現。
(Gurobi Opitimizerは、すでに世界最高速LPソルバーとして認知されていますが、著しい改善を実現しました。)
MIQP全体で18%の速度改善を実現。
MIQCP全体で28%の速度改善を実現。

分散MIPソルバー(オプション)

MIPモデルを並列に解くために、異なる複数のマシンパワーを活用できるようになりました。分散ワーカとして利用できるマシンのリストを単にGurobi Optimizerに与えるだけで、Gurobiが利用可能なマシンの中で、自動的に分散処理を行います。この新しい分散MIPソルバーは、既存の分散並列MIPソルバーおよび分散チューニング・ツールを補完します。

区分線形目的関数のサポート

バージョン6.0では、区分線形目的関数を明示的にモデリングできるようになりました。シンプレックス・アルゴリズムによって区分線形目的関数は直接処理され、凸区分線形目的関数を持つ連続モデルの場合この特徴により、大幅な速度改善が実現されています。

その他

並列LPソルバー既存の分散並列最適化が、LPおよびMIPモデルの両方をサポートするよう機能拡張をしました。
2,000億の非ゼロのサポート制約行列において、2,000億以上の非ゼロ値を持つモデルを構築し、解けるようになりました。
遅延制約の明示的なサポート制約を、遅延としての目印がつけられる遅延制約属性を使用できるようになりました。これにより、制約式を遅延評価することができます。LPおよびMPSファイルで、遅延として取り扱われるべき制約を示すことができます。
その他新しい非同期最適化手法、新しいスケーリング・オプション等の多数の機能拡張が行われました。

Gurobi Optimizer V.5.6

LPおよびMIPパフォーマンスの改善

LP内点法の幅広い問題のテストセットで12%、難しい問題のテストセットで21%のパフォーマス改善を実現しました。これらの速度向上は、新しい第4世代Intel Coreプロセッサでより大きくなる傾向があります。
MIP幅広い問題のテストセットで14%、難しい問題のテストセットで29%のパフォーマンス改善を実現しました。

分散チューニング

先のバージョン5.5において、より少ない労力で、ユーザがより効果的なパラメータを選択できるよう支援する新しい自動パラメータチューニング・ツールをサポートしました。バージョン5.6においては、この機能を更に拡張させ、一つのモデルのチューニングにおける選択肢を単一マシン上だけでなく、利用可能な複数のマシン上でも探索できるようにしました。これにより、限られた時間内で行えるチューニングの可能性の量が劇的に増加しました。
さらに、このチューニング・ツールにおいては、利用できるマシンの数に制限はありません。単に一つのGurobi計算サーバ・ライセンスが必要なだけです。一度この機能を利用されれば、分散されたチューニング作業を支援するために、いくつでもマシンを追加して利用できます。この機能がいかに簡単に設定できるかは、分散最適化をご覧ください。

分散並列最適化

バージョン5.6の新しい分散並列最適化は、一つのMIPモデルを更に高速に解かせるべき複数のGurobi計算サーバのパワーを利用します。それぞれのマシンは、MIP探索に更なる多様性を導入すべき異なる複数の設定を試しながら、独立して動作します。単一のモデルに影響を与える複数マシンのリソースを利用することで、この機能により、単一マシンだけでの場合よりは更に高速にモデルを解くことができるようになります。

その他

RとPythonR3.0とPython3.2をサポートしました。
MATLABMATLAB内から、MPS/LPファイルの読込みおよび書込みができるようになりました。
追加されたユーザ制御新しいパラメータにより、SOS制約または複数の接続されていないコンポーネントを持つモデルを解くために、Gurobi Optimizerが使用する戦略に対して更なる制御がきるようになりました。
非同時最適化に追加されたユーザ制御複数の非同時最適化ジョブを生成するGurobi計算サーバを使用する時、新しいSyncルーチンが、同時ジョブの同調に対して明白な制御を提供します。

Gurobi Optimizer V.5.5

クライアント・サーバ機能

Gurobi Optimizerが提供するクライアント・サーバ機能により、ユーザは容易にクライアント・サーバの最適化アプリケーションを構築できます。クライアント・マシンから一つまたはそれ以上のサーバに対して、最適化計算をユーザが見える形で任せることができます。この機能により、ユーザは、計算リソースをより効率的に使用可能になります。 Gurobi計算サーバは、多くの機能を提供します。
  • クライアント・サーバ・アプリケーションを既存アプリケーションへシームレスに統合。コードを全く変更することなく、Gurobi Optimizerを使用しているほとんどのアプリケーションが、クライアント・サーバ・アプリケーションとして稼働可能に。
  • 稼働中にサーバ機能を追加できる機能を持つ、強力なジョブキューイングおよびロードバランシング機能
  • アプリケーションの信頼性を大幅に増加させる自動フェイルオーバ機能
  • データの256-bit AES暗号化を含む、クライアントとサーバ間の安全で効率的なコミュニケ―ション
  • サーバの状況監視、ジョブ キューの状態およびジョブの停止等が可能となる、組み込まれた管理ツール
本機能に関する更なる詳しい情報は、Gurobi 計算サーバをご覧ください。

自動パラメータ・チューニング・ツール

Gurobi Optimizerは、最適化アルゴリズムの振る舞いを、より良くチューニング可能な数十ものパラメータを持っています。多くのモデルではパラメータを変更することで、50%以上ものパフォーマンス向上が可能です。バージョン5.5では、ユーザがより効率的にパラメータの選択ができるよう、自動パラメータ・チューニング・ツールを提供しています。このツールは、スタンドアロンでの実行またはプログラム言語のAPIから直接呼び出すことが可能です。 この新しい自動パラメータ・チューニング・ツールは、ユーザのモデルを実行し、パフォーマンス情報を収集、分析し、そして異なる複数のパラメータ設定を用いたパフォーマンス・テストを実行できます。チューニング・ツールの実行が終了すると、いくつかの推奨パラメータ設定をユーザに提供します。更に、チューニング・ツールは、それ自身の振る舞いのカスタマイズを可能にする様々な設定オプションを含んでいます。本機能の詳細情報は、Gurobi Optimizerのリファレンスマニュアルをご覧ください。

その他

並列MIPソルバーこの新しいMIPの解法では、複数の独立したMIPソルバーが並列に実行され、最も良い解を求めたソルバーの解が提供されます。この解法は、多様な解法を実行したほうが、一つのMIPの解法で利用するコア数を増やすよりは大幅な効果が得られる、大規模な並列マシン上で特に効果的です。
Barrier Crossover Factorizationの改良Barrier Crossover Factorizationのルーチンを書き換えました。この新しいルーチンは、より高速で、数値的によりロバストです。
新しいNumericFocusパラメータ数値的によりロバストな手法を利用するよう、ソルバーに指示ができます。(但し、少し遅くなります。)
数値的安定性の改良いくつかの追加された数値的安定性に対する改良を行っています。

Gurobi Optimizer V.5.1

MIPパフォーマンスの改善

  • 最初の実行可能解を得る速度: 5.4倍向上
  • 最適性の証明速度(得られた解が最適解であるという証明が完了する速度): 15%向上
  • 難しい問題(解くのに1,000秒以上かかる問題)での最適性の証明速度: 40%向上
改善の度合いは明らかにモデルによって異なりますので、モデルによっては、上記より大きな改善が得られることも、また、小さい改善が見られることもあります。

新機能

MIPのプリソルブ(前処理)における
数値的な安定性の向上
旧バージョンでは解けなかった数値的に難しいいくつかの問題が、解けるようになりました。
乱数のシードをユーザが制御する機能Gurobi Optimizer内部の乱数生成に使用されるシードを、ユーザが変更できるようになりました。シードを変更することで、計算過程に小さな変更を持ち込み、多くの場合において違った計算過程をもたらしてくれ、特定のモデルの変更またはパラメータの変更のどちらが堅牢なパフォーマンス向上となるのかを決定するために役立ちます。
コマンドライン・インターフェースからの
MIPスタートファイルの指定
新しいInputFileパラメータにより、MIPスタートのテストがより容易にできるよう、コマンドラインからスタートファイルを指定できるようになりました。
Visual Studio 2012をサポートGurobi Optimizerが提供する全てのexamplesのためのVisual Studioプロジェクトおよび互換性あるオブジェクト・ライブラリを含みます。
新しいプラットフォームWindows8、RHEL6.3、SuSE12、Mac OS X用のPython2.7をサポートしました。

Gurobi Optimizer V.5.0

二次制約への対応

Gurobi Optimizerは、LP、QPおよびMIPにおいてすでに技術的リーダとなっていましたが、新たにサポートしたQCPおよびMIQCPにより、二次制約を含む問題が解けるようになりました。これにより、二次錐、回転二次錐、そして、より一般的な凸二次制約をサポートします。
単に最良の実装の提供およびユーザが必要な機能の提供だけがGurobiの継続的なゴールではありません。この新しいQCP、MIQCPともに、他のソルバーの2倍以上のパフォーマンスを実現しました。

MATLABとRのインターフェイス

ユーザがしたいやり方でユーザの仕事をさせるツールを提供することは、Gurobiにとって大事です。その結果、C、 C++、Python、Javaそして.NETへの強力なサポートを超えた、MATLABおよびRの完全サポートを含むインターフェースへ拡張しました。これは、Rで統計計算アプリケーションを構築している急速にその数を増やしているユーザにとって朗報であり、また、MATLABユーザは、MATLABの標準ソルバーより機能が広範囲で高性能のソルバーへのアクセスが可能になりました。すでに、MATLABには、サードパーティから提供されている優れたオープンソースのインターフェイスがありますが、Gurobi Optimizerの新しいインターフェースのその緊密なインテグレーションによりユーザは、利用可能な全てのプラットフォーム上でより速く構築を始められ、また、Gurobiの技術サポートも利用できるようになります。

遅延制約

プロトタイプの巡回セールスマン問題のようないくつかの問題では、制約の数は事実上無数にあります。このことはモデル構築を、不可能ではないまでも、非常に困難にしています。このような状況を処理するために、Gurobi Optimizer バージョン5.0では、遅延制約のための強力な組込みを追加しました。
今や、管理可能な状態を維持するために、対象となる問題を主要な制約の集合を用いてモデル化することができ、実行中に見つかった解を基にした追加の制約を追加していくことができます。Gurobi Optimizerの全機能をどのように扱うかの方法には一貫性があるため、遅延制約により、平行計算を止めたり、探索ツリーの探索に使用される基本的な手法変更したりする必要がなくなりました。

パフォーマンス改善

下記を含む、実行不能か非有界モデルの扱いに関する機能改善
  • 実行不能問題に特化したバリア均質アルゴリズム
  • 制約違反を最小にする解を見つけるための新しいFeasRelaxプロシージャ
その他の追加機能とパフォーマンス強化
  • プリソルブ(前処理)にかかる時間の高速化
  • クロスオーバ数値安定性の大幅な改善
  • 主双対解ベクトルを初期値にしたシンプレックス法のウォームスタート
  • 並列最適化のユーザ制御の強化
  • 新しい近似値条件数アルゴリズム
  • ユーザの定義した名称を使って、変数と条件の検索
  • バージョン 5.0においてもGurobiは、OR(オペレーションズ・リサーチ)のプロフェショナルが最適化によって成功できるよう、世界最高のソルバー、機能、そして技術サポートを提供していきます。
  • 30日間無料 評価版ライセンス
PAGE TOP
Menu