Loading...
Searching...
No Matches
Interfacing Gurobi

Can solve mixed-integer optimization problems using Gurobi.

  • Formatted

    LP

    Can solve a feasible LP

    Tested FeatureOutcome
    Can retrieve primal solution100 %
    Can retrieve dual solution100 %
    Can retrieve reduced costs100 %
    Throws an exception if primal ray is asked100 %
    Throws an exception if farkas certificate is asked100 %
    Can write a model to a file and read it back0 %

    Can update and re-optimize a feasible LP

    Tested FeatureOutcome
    Can add cut and re-optimize100 %
    Can add column and re-optimize100 %
    Can change bounds and re-optimize100 %
    Can add cut and column and re-optimize100 %
    Can change objective function and re-optimize100 %
    Can change right-hand side and re-optimize100 %
    Can change left-hand side and re-optimize100 %
    Can remove a constraint and re-optimize100 %
    Can remove a variable and re-optimize100 %
    Can add and remove the same variable and re-optimize100 %
    Can add and remove a different variable and re-optimize100 %
    Can add and remove the same constraint100 %
    Can add and remove a different constraint100 %
    Can add a constraint which depends on a variable that is then removed100 %
    Can add a variable which depends on a constraint that is then removed100 %
    Can update a variable's bound then remove it100 %
    Can change the objective function then remove a variable which appears in the objective function100 %
    Can update the objective function constant100 %

    Can solve an infeasible LP

    Tested FeatureOutcome
    Can retrieve a Farkas certificate100 %
    Throws an exception if primal values are asked100 %
    Throws an exception if dual values are asked100 %
    Throws an exception if (primal) ray is asked100 %
    Throws an exception if reduced costs are asked100 %

    Can solve an unbounded LP

    Tested FeatureOutcome
    Can retrieve a dual ray100 %
    Throws an exception if primal values are asked100 %
    Throws an exception if dual values are asked100 %
    Throws an exception if farkas certificate is asked100 %
    Throws an exception if reduced costs are asked100 %

    MILP

    Can solve a feasible MIP which is integer at the root node

    Tested FeatureOutcome
    Can retrieve primal solution100 %
    Can retrieve the number of solutions100 %
    Can iterate over solutions100 %

    Can solve a feasible MIP which is not integer at the root node

    Tested FeatureOutcome
    Can retrieve the primal solution100 %
    Can retrieve the number of solutions100 %
    Can iterate over solutions100 %

    Can solve an infeasible MIP which is infeasible at root node

    Tested FeatureOutcome
    Can retrieve the solution status100 %
    Can retrieve the number of solutions100 %
    Can compute an irreducible infeasible sub-system0 %

    Can solve an infeasible MIP which is feasible at the root node

    Tested FeatureOutcome
    Can retrieve the solution status100 %
    Can retrieve the number of solutions100 %
    Can compute an irreducible infeasible sub-system0 %

    Can solve an unbounded MIP

    Tested FeatureOutcome
    Can retrieve the solution status100 %
    Can retrieve the number of solutions100 %

    Can set parameters of the underlying solver

    Tested FeatureOutcome
    Can set a time limit100 %
    Can turn off presolve100 %
    Can activate infeasible or unbounded info100 %
    Can set a thread limit100 %
    Can set a relative MIP gap100 %
    Can set an absolute MIP gap100 %
    Can set a best bound stop100 %
    Can set a best obj stop100 %
    Can set an iteration limit100 %
    Can turn on logs100 %

    Callbacks

    Can add universal callbacks to monitor the execution of the algorithm

    Tested FeatureOutcome
    Can retrieve root node gap0 %
    Can retrieve root node solution0 %
    Can access nodes' solutions0 %
    Can access integer solutions0 %

    Can add universal callbacks to influence the execution of the algorithm

    Tested FeatureOutcome
    Can add user cut0 %
    Can add lazy constraint50 %
    Can terminate the algorithm0 %
  • Raw This is the raw XML report generated by Catch2.
    <?xml version="1.0" encoding="UTF-8"?>
    <Catch2TestRun name="test_wrapper_Gurobi" rng-seed="3596316723" xml-format-version="2" catch2-version="3.3.2">
    <TestCase name="Can solve a feasible LP" tags="[LP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="24">
    <Section name="Can retrieve primal solution" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="49">
    <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve dual solution" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="64">
    <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve reduced costs" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="82">
    <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if primal ray is asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="94">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if farkas certificate is asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="99">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can write a model to a file and read it back" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="104">
    <Exception filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="104">
    Cannot read from file using this solver
    </Exception>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="false" skips="0"/>
    </TestCase>
    <TestCase name="Can update and re-optimize a feasible LP" tags="[LP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="182">
    <Section name="Can add cut and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="195">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add column and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="203">
    <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can change bounds and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="212">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add cut and column and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="220">
    <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can change objective function and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="230">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can change right-hand side and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="236">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can change left-hand side and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="244">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can remove a constraint and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="253">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can remove a variable and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="260">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add and remove the same variable and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="267">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add and remove a different variable and re-optimize" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="275">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add and remove the same constraint" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="284">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add and remove a different constraint" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="293">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add a constraint which depends on a variable that is then removed" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="302">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add a variable which depends on a constraint that is then removed" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="310">
    <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can update a variable's bound then remove it" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="321">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can change the objective function then remove a variable which appears in the objective function" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="329">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can update the objective function constant" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="337">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can solve an infeasible LP" tags="[LP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="347">
    <Section name="Can retrieve a Farkas certificate" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="370">
    <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if primal values are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="386">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if dual values are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="391">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if (primal) ray is asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="396">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if reduced costs are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="401">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can solve an unbounded LP" tags="[LP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="408">
    <Section name="Can retrieve a dual ray" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="431">
    <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if primal values are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="449">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if dual values are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="454">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if farkas certificate is asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="459">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Throws an exception if reduced costs are asked" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_lp.test.cpp" line="464">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can solve a feasible MIP which is integer at the root node" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="21">
    <Section name="Can retrieve primal solution" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="45">
    <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve the number of solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="58">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can iterate over solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="62">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can solve a feasible MIP which is not integer at the root node" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="71">
    <Section name="Can retrieve the primal solution" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="94">
    <OverallResults successes="11" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve the number of solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="120">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can iterate over solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="124">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can solve an infeasible MIP which is infeasible at root node" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="132">
    <Section name="Can retrieve the solution status" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="149">
    <Section name="Can retrieve the solution status" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="154">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve the number of solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="166">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can compute an irreducible infeasible sub-system" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="170">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="172">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="false" skips="0"/>
    </TestCase>
    <TestCase name="Can solve an infeasible MIP which is feasible at the root node" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="180">
    <Section name="Can retrieve the solution status" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="198">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve the number of solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="209">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can compute an irreducible infeasible sub-system" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="213">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="215">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="false" skips="0"/>
    </TestCase>
    <TestCase name="Can solve an unbounded MIP" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="223">
    <Section name="Can retrieve the solution status" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="235">
    <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve the number of solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="246">
    <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can set parameters of the underlying solver" tags="[MILP]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="252">
    <Section name="Can set a time limit" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="259">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can turn off presolve" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="264">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can activate infeasible or unbounded info" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="269">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set a thread limit" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="274">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set a relative MIP gap" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="279">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set an absolute MIP gap" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="284">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set a best bound stop" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="289">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set a best obj stop" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="294">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can set an iteration limit" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="299">
    <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can turn on logs" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/solve_milp.test.cpp" line="304">
    <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="true" skips="0"/>
    </TestCase>
    <TestCase name="Can add universal callbacks to monitor the execution of the algorithm" tags="[Callbacks]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="36">
    <Section name="Can retrieve root node gap" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="38">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="42">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can retrieve root node solution" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="45">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="49">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can access nodes' solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="52">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="56">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can access integer solutions" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="59">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="63">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="false" skips="0"/>
    </TestCase>
    <TestCase name="Can add universal callbacks to influence the execution of the algorithm" tags="[Callbacks]" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="68">
    <Section name="Can add user cut" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="73">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="76">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can add lazy constraint" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="83">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="110">
    <Original>
    model.get_best_obj() == 5.4_a
    </Original>
    <Expanded>
    0.0 == Approx( 5.4 )
    </Expanded>
    </Expression>
    <OverallResults successes="1" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <Section name="Can terminate the algorithm" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="118">
    <Expression success="false" type="CHECK" filename="/Users/henri/Research/solvers/idol/tests/mixed-integer/wrappers/universal-callbacks.test.cpp" line="121">
    <Original>
    false
    </Original>
    <Expanded>
    false
    </Expanded>
    </Expression>
    <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
    </Section>
    <OverallResult success="false" skips="0"/>
    </TestCase>
    <OverallResults successes="202" failures="10" expectedFailures="0" skips="0"/>
    <OverallResultsCases successes="7" failures="5" expectedFailures="0" skips="0"/>
    </Catch2TestRun>