orloge: OR logs parser =========================================== orloge is a log parser for several MIP solvers that standardizes the contents into a python dictionary with most of the useful information provided. It supports GUROBI, CPLEX and CBC. Information reported includes: best objective, best bound, cuts, gap, nodes, status, time, etc. It also provides a pandas dataframe with the whole progress log of the solver. site: https://github.com/pchtsp/orloge/ example with GUROBI:: import orloge as ol ol.get_info_log_solver('tests/data/gurobi700-app1-2.out', 'GUROBI') Creates the following output:: {'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'}