From 7f07dd776c1e312280a90c96824226ec02695b7f Mon Sep 17 00:00:00 2001 From: Daniele Lerede Date: Wed, 4 Mar 2026 18:36:37 +0100 Subject: [PATCH 1/2] handle missing dual values when barrier solution has no crossover --- linopy/solvers.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/linopy/solvers.py b/linopy/solvers.py index 474459fe..10731547 100644 --- a/linopy/solvers.py +++ b/linopy/solvers.py @@ -1405,14 +1405,16 @@ def get_solver_solution() -> Solution: m.solution.get_values(), m.variables.get_names(), dtype=float ) - if is_lp: + try: dual = pd.Series( m.solution.get_dual_values(), m.linear_constraints.get_names(), dtype=float, ) - else: - logger.warning("Dual values of MILP couldn't be parsed") + except Exception: + logger.warning( + "Dual values not available (e.g. barrier solution without crossover)" + ) dual = pd.Series(dtype=float) return Solution(solution, dual, objective) From 33c1ca093a50fcc1d514262489e0b02e52f82715 Mon Sep 17 00:00:00 2001 From: Daniele Lerede Date: Wed, 4 Mar 2026 18:38:44 +0100 Subject: [PATCH 2/2] Add release notes --- doc/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 42c7eb81..5fa1499f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -9,7 +9,7 @@ Upcoming Version * Add ``linopy.breakpoints()`` factory for convenient breakpoint construction from lists, dicts, or keyword arguments. Includes ``breakpoints.segments()`` for disjunctive formulations. * Add the `sphinx-copybutton` to the documentation * Add SOS1 and SOS2 reformulations for solvers not supporting them. - +* Improve handling of CPLEX solver quality attributes to ensure metrics such are extracted correctly when available. Version 0.6.5 -------------