Gurobi¶
Gurobi Optimizer¶
Gurobi が提供する MIP (混合整数計画問題) ソルバーです。Gurobi Optimizer は QUBO を含む整数変数、実数変数の二次の問題を扱うことができます。
注釈
Gurobi の実行には Amplify SDK の実行マシンに Gurobi Optimizer およびライセンスが適切にインストールされている必要があります。
- ソルバー仕様:
クライアントクラス
対応バージョン
9.0.0 以上
API リファレンス
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
2次
-
2次
2次
等式制約
2次
-
2次
2次
不等式制約
2次
-
2次
2次
- クライアントクラス:
クライアントクラスの共通インターフェース に加えて以下のメソッドを持ちます。
注釈
GurobiClient
のファイル出力は次のように振る舞います。write_request_data
:指定されたファイルパスの拡張子に従ってモデルをファイルに出力します。
指定可能な拡張子は.mps
,.rew
,.lp
,.rlp
,.dua/.dlp
(LP の双対問題のモデルとして) です。
write_response_data
:指定されたファイルパスの拡張子に従って解をファイルに出力します。
指定可能な拡張子は.sol
または.json
です。
参考
parameters
に指定可能なParameters
クラスのアトリビュートの詳細は Gurobi Parameters を参照してください。
ただしParameters
クラスのアトリビュート名は snake_case に統一されていることに注意してください。注釈
Parameters
クラスのアトリビュートはデフォルト値として全てNone
(未設定) に初期化されていますが、一部のアトリビュートは利便性のためNone
の場合に明示的に Gurobi に次のように渡されます。log_to_console
:Gurobi のデフォルト (
1
) とは異なり0
(出力しない) をデフォルトとして扱います。
seed
:Gurobi のデフォルト (
0
) とは異なりハードウェア乱数を生成して初期化します。
- 設定例:
from amplify import GurobiClient from datetime import timedelta client = GurobiClient() # インストールパスを設定 # (インストールパスが自動的に検出されない場合に必要) # client.library_path = "/opt/gurobi950/linux64/lib/libgurobi.so.9.5.0" # 実行時間を 100 秒に設定 client.parameters.time_limit = timedelta(seconds=100)
- 実行例:
from amplify import Model, VariableGenerator, solve # 決定変数と目的関数を定義 g = VariableGenerator() q = g.array("Binary", 2) f = q[0] * q[1] + q[0] - q[1] + 1 # モデルを作成 model = Model(f) # ソルバーを実行 result = solve(model, client)
ソルバーのバージョンを取得:
>>> client.version '9.5.0'