When calling orloge.get_info_log_solver, the returned dictionary contains the following structured data:
best_bound: The best lower bound found.best_solution: The best objective value found.cut_info: A dictionary containing best_bound, best_solution, time, and a cuts dictionary (e.g., counts for Clique, Gomory, Implied bound, MIR).first_relaxed: The first relaxed objective value.first_solution: The first solution objective value.gap: The optimality gap.matrix: Information about the original matrix (constraints, nonzeros, variables).matrix_post: Information about the matrix after presolve.nodes: Number of nodes explored.presolve: Details on presolve performance (cols, rows, time).progress: A pandas.DataFrame containing the step-by-step solver progress (e.g., Node, NodesLeft, Objective, Depth, Gap, Time).rootTime: Time spent at the root node.sol_code: Solver solution code.solver: The name of the solver used.status: Human-readable status string.status_code: Numerical status code.time: Total execution time.version: Solver version.
# Example of the dictionary structure returned by orloge
{
'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': <pandas.DataFrame>,
'rootTime': 0.7,
'sol_code': 1,
'solver': 'GUROBI',
'status': 'Optimal solution found',
'status_code': 1,
'time': 46.67,
'version': '7.0.0'
}