gurobi-logtoolsは、Gurobiが開発した公式のPythonパッケージで、Gurobiのログファイルを解析、分析、可視化することができます。特に、ソルバーの実行をプロファイリングして比較したり、モデルのパフォーマンスをチューニングしたり、再現可能なベンチマークを共有したりする際に役立ちます。
チューニング結果を比較する場合や、大規模な最適化問題のボトルネックを特定する場合でも、gurobi-logtoolsはソルバーログから効率的かつ一貫した方法で知見を見出す手段を提供します。
このパッケージはGitHub上で積極的にメンテナンスされており、https://github.com/Gurobi/gurobi-logtoolsにて包括的なドキュメントとチュートリアルが提供されています。
主な特徴
このパッケージには以下の主な機能があります:
- ログファイルの解析:Gurobiのログファイルから構造化されたデータを抽出し、pandasのDataFrameに変換
- インタラクティブな可視化:plotly.expressとipywidgetsのダッシュボードを使ってインタラクティブなチャートを生成
- 進捗追跡:最適化の進行状況を時間経過で分析し、統計を要約
- 複数ログの比較:パラメータチューニングやアルゴリズム選択のための並行比較
- Excelエクスポート:コマンドラインからログファイルを直接Excelワークシートに変換
- ファイル管理:一貫した命名規則によるログファイルのリネームや整理
インストール
pipを使ってgurobi-logtoolsをインストールできます:
python -m pip install gurobi-logtools基本的な使い方
パッケージの使い方は以下の通りです:
import gurobi_logtools as glt
# 複数実行のログファイルを解析
results = glt.parse(["run1/*.log", "run2/*.log"])
# サマリー情報を取得
summary = results.summary()
# MIPノード探索の進捗情報を取得
nodelog_progress = results.progress("nodelog")
# インタラクティブなプロットを作成
glt.plot(summary) # 最終結果
glt.plot(nodelog_progress, x="Time", y="Gap", color="Log", type="line") # 進捗チャートコマンドラインでの使用方法
コマンドラインから直接ログファイルをExcelに変換することもできます:
python -m gurobi_logtools myrun.xlsx data/*.log
python -m gurobi_logtools --help # すべてのオプションを表示利用例
このツールは特に以下の用途に有用です:
- 複数のモデルインスタンスの結果を比較する
- 異なるパラメータ設定を分析する
- 複数の乱数シードによるパフォーマンスのばらつきに関する実験
- 最適化実行の詳細なレポートや可視化を作成する
例:2つのソルバー実行の比較
python -m gurobi_logtools compare.xlsx compare baseline.log tuned.logこれにより以下の表が生成されます:
- 最適性に達するまでの時間
- Best BoundとGapの推移
- 探索したノード数
- チューニングによる性能向上の有無