Gurobi パラメータの OutputFlag や LogToConsole を0に設定しても、Gurobiはライセンスや計算サーバーの情報を標準出力に出力することがあります。
Compute Server job ID: 11a531ac-9fd9-453d-9c66-e4fc606f97de
Capacity available on 'server:1234' - connecting...
Established HTTP unencrypted connection
Using license file /home/gurobiuser/gurobi.lic
Academic license - for non-commercial use only
このような状況は、特に複数の最適化問題を連続して解くときに好ましくない場合があります。以下に、このような情報をGurobiが出力しないように設定する方法を2つ紹介します。
ライセンス接続情報を含むすべてのGurobiログを出力しないようにするためには、Gurobiを起動する前の空の環境(env)に対して、OutputFlag またはLogToConsole を0に設定します。これらはenvを起動する前に設定した場合のみ有効となることに注意が必要です。
例えば、Pythonでは以下のように記述可能です。
import gurobipy as gp
with gp.Env(empty=True) as env:
env.setParam('OutputFlag', 0)
env.start()
with gp.Model(env=env) as m:
# Build model m here
# alternatively, to read the model from a file, you can use:
# with gp.read("glass4.mps", env) as model:
上記は接続情報がライセンスファイルに含まれているときの方法です。また、ライセンス情報をenvに対して設定することもできます。
with gp.Env(empty=True) as env:
env.setParam("OutputFlag", 0)
env.setParam("WLSAccessID", str)
env.setParam("WLSSECRET", str)
env.setParam("LICENSEID", int)
env.start()
with gp.Model(env=env) as model:
# Build the model here
もう一つの方法としてはスクリプト実行時の作業ディレクトリにgurobi.envファイル(リファレンスマニュアルを参照)を利用することです。gurobi.envファイルに以下の行を追加します:
OutputFlag 0
または
LogToConsole 0
ただし、サーバーへの接続情報なども含めてすべてを抑制するためには、gurobi.env ファイルの中でOutputFlag/LogToConsoleよりも後に接続情報などを設定する必要があります。接続にライセンスファイルを利用する場合、gurobi.env ファイルよりも前にライセンスファイルが読み込まれるため、接続情報のログ抑制はされません。
起動時に、Gurobiは以下の順でパラメータを読み込みます:
- Envに対して与えられたパラメータを読み込む(上記のPython コードを参考)
- ライセンスファイルを読み込む(ライセンスファイルにアクセス可能で、かつ1.においてライセンス情報が設定されていない場合
- gurobi.env ファイルを読み込む
その他の資料
コメント
0件のコメント
記事コメントは受け付けていません。