orloge: OR 日志解析器

orloge 是一个针对多个 MIP 求解器的日志解析器,它将内容标准化为一个包含大部分有用信息的 Python 字典。它支持 GUROBI、CPLEX 和 CBC。报告的信息包括:最佳目标值、最佳界限、割、间隙、节点、状态、时间等。它还提供了一个包含求解器整个进度日志的 pandas 数据框。

网站: https://github.com/pchtsp/orloge/

示例使用 GUROBI:

import orloge as ol
ol.get_info_log_solver('tests/data/gurobi700-app1-2.out', 'GUROBI')

生成以下输出:

{'best_bound': -41.0,
 'best_solution': -41.0,
 'cut_info': {'best_bound': -167.97894,
              'best_solution': -41.0,
              'cuts': {'Clique': 1,
                       'Gomory': 16,
                       'Implied bound': 23,
                       'MIR': 22},
              'time': 21.0},
 'first_relaxed': -178.94318,
 'first_solution': -41.0,
 'gap': 0.0,
 'matrix': {'constraints': 53467, 'nonzeros': 199175, 'variables': 26871},
 'matrix_post': {'constraints': 35616, 'nonzeros': 149085, 'variables': 22010},
 'nodes': 526.0,
 'presolve': {'cols': 4861, 'rows': 17851, 'time': 3.4},
 'progress':
 Node NodesLeft   Objective Depth ...  CutsBestBound    Gap ItpNode Time
0     0         0  -178.94318     0 ...     -178.94318   336%    None   4s
1     0         0  -171.91701     0 ...     -171.91701   319%    None  15s
2     0         0  -170.97660     0 ...     -170.97660   317%    None  15s
[26 rows x 10 columns],
 'rootTime': 0.7,
 'sol_code': 1,
 'solver': 'GUROBI',
 'status': 'Optimal solution found',
 'status_code': 1,
 'time': 46.67,
 'version': '7.0.0'}