From e3c6e222b895d26cf3d5d16f2a289d319f26e8dc Mon Sep 17 00:00:00 2001 From: Christopher Maes Date: Mon, 19 May 2025 13:24:18 -0700 Subject: [PATCH] Fix objective value when LP is unbounded --- cpp/src/dual_simplex/solve.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cpp/src/dual_simplex/solve.cpp b/cpp/src/dual_simplex/solve.cpp index b422be873..05c1512fa 100644 --- a/cpp/src/dual_simplex/solve.cpp +++ b/cpp/src/dual_simplex/solve.cpp @@ -218,6 +218,16 @@ lp_status_t solve_linear_program_advanced(const lp_problem_t& original original_solution.iterations = iter; } else { // Dual infeasible -> Primal unbounded + settings.log.printf("Dual infeasible\n"); + original_solution.objective = -inf; + if (lp.obj_scale == 1.0) { + // Objective for unbounded minimization is -inf + original_solution.user_objective = -inf; + } else { + // Objective for unbounded maximization is inf + original_solution.user_objective = inf; + } + original_solution.iterations = iter; return lp_status_t::UNBOUNDED; } return lp_status;