オリジナルURL:How do I suppress all console output from Gurobi?
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では以下のように記述可能です。
with gp.Env(empty=True) as env:
env.setParam("WLSAccessID", str)
env.setParam("WLSSECRET", str)
env.setParam("LICENSEID", int)
env.setParam("OutputFlag", 0)
env.start()
# モデルをファイルから読み込む場合:
# with gp.read("glass4.mps", env) as model:
with gp.Model(env=env) as model:
# モデルを記述
- ライセンス接続情報を含むすべてのGurobiログを抑制するには、Gurobi環境(env)を起動する前にOutputFlag パラメータまたは LogToConsole パラメータを0に設定します。これを行うには、まず空のGurobi環境を作成し、OutputFlagパラメータを設定してから環境を起動します。例えば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
- スクリプト実行時の作業ディレクトリにgurobi.envファイル(リファレンスマニュアルを参照)を作成し、そのファイルに以下の行を追加します:
OutputFlag 0
または
LogToConsole 0
Gurobiは作業ディレクトリ上から gurobi.env ファイルを自動的に探します。もし見つかれば、記述されているパラメータを新しいGurobi環境に適用します。スクリプトと同じディレクトリにgurobi.env ファイルが配置されている限り、スクリプト内では明示的に空の環境を作成して起動する必要はありません:
import gurobipy as gp
with gp.Env() as env, gp.Model(env=env) as m:
# モデルを記述その他の資料
Comments
0 comments
Article is closed for comments.