注:version 11.0.2から Gurobi Interactive Shell の利用は非推奨となりました
以降ではGurobiのインストールは完了していることを仮定します。
まず、GurobiのInteractive Shellを起動するにはコマンドプロンプトから次のコマンドを入力します。
- gurobi.sh Mac, Linux.
- gurobi.bat Windows.
Python IDEをインストール済みの場合にはそれらの環境からも呼び出しが可能です。
無事にシェルが起動できたら最適化モデルの読み込みと最適化の実行の準備は完了です。例えばcoins.lp というモデルを最適化してみます。このLPファイルは <インストールディレクトリ>/examples/dataの中にあります。
> gurobi.sh
Set parameter LogFile to value "gurobi.log"
Gurobi Interactive Shell (linux64), Version 10.0.1
Copyright (c) 2023, Gurobi Optimization, LLC
Type "help()" for help
gurobi> m = read("/opt/gurobi1103/linux64/examples/data/coins.lp")
Read LP format model from file /opt/gurobi1001/linux64/examples/data/coins.lp
Reading time = 0.00 seconds : 4 rows, 9 columns, 16 nonzeros
gurobi> m.optimize()
Gurobi Optimizer version 11.0.3 build v10.0.1rc0 (linux64)
CPU model: 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz, instruction set [SSE2]
Thread count: 4 physical cores, 4 logical processors, using up to 4 threads
Optimize a model with 4 rows, 9 columns and 16 nonzeros
Model fingerprint: 0x06e334a4
Variable types: 4 continuous, 5 integer (0 binary)
Coefficient statistics:
Matrix range [6e-02, 7e+00]
Objective range [1e-02, 1e+00]
Bounds range [5e+01, 1e+03]
RHS range [0e+00, 0e+00]
Found heuristic solution: objective -0.0000000
Presolve removed 1 rows and 5 columns
Presolve time: 0.00s
Presolved: 3 rows, 4 columns, 9 nonzeros
Variable types: 0 continuous, 4 integer (0 binary)
Found heuristic solution: objective 26.1000000
Root relaxation: objective 1.134615e+02, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 113.46153 0 1 26.10000 113.46153 335% - 0s
H 0 0 113.3000000 113.46153 0.14% - 0s
H 0 0 113.4500000 113.46153 0.01% - 0s
0 0 113.46153 0 1 113.45000 113.46153 0.01% - 0s
Explored 1 nodes (2 simplex iterations) in 0.00 seconds (0.00 work units)
Thread count was 4 (of 4 available processors)
Solution count 4: 113.45 113.3 26.1 -0
Optimal solution found (tolerance 1.00e-04)
Best objective 1.134500000000e+02, best bound 1.134500000000e+02, gap 0.0000%
read() コマンドは最適化モデルをファイルから読み込み、Modelオブジェクトを返します。例ではモデルオブジェクトをPythonの変数 m に格納しています。Pythonでは変数を宣言する必要はなく、そのまま値を代入することができます。
read() はワイルドカードを許容します。例えば次のようにも記述ができます。
gurobi> m = read("/opt/gurobi1103/linux64/*/*/coin*")
また、readコマンド、writeコマンドは圧縮されたファイルにも対応しています。マシン上に gzip, bzip2, 7zip がインストールされていてデフォルトのパスで利用可能であれば、対応する形式 (.gz, .bz2, .zip, .7z)で圧縮されたファイルを扱うことが可能です。
続いて例に登場するm.optimize()コマンドはModelオブジェクトのoptimize メソッドを呼び出します(Modelオブジェクトに関連する各メソッドはhelp(Model), help(m)から参照できます)。optimize() メソッドの呼び出し後には実行ログが出力されます。最適化の進捗に最も関連する項目はIncumbent と BestBdの列です。これらはそれぞれその時点での最良暫定解と解の存在し得る最良の目的関数値の境界を示しています。そのほかログの詳細についてはGurobi Reference ManualのMIP Loggingセクションを参照してください。
ログの最後の行ではGurobi Optimizerが目的関数値113.45の最適解を発見したことが表示されています。
次へ: チュートリアル(Gurobi Interactive Shell):得られた解の確認
コメント
0件のコメント
記事コメントは受け付けていません。