From 8f3a24ab3f71b87ac35de918fd900da3752e73d3 Mon Sep 17 00:00:00 2001 From: eminyouskn Date: Tue, 16 Dec 2025 08:39:41 -0500 Subject: [PATCH] Add MIP iteration count handling in KnitroSolverBase --- pyomo/contrib/solver/solvers/knitro/base.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pyomo/contrib/solver/solvers/knitro/base.py b/pyomo/contrib/solver/solvers/knitro/base.py index 003ee8cab2e..82a98bbd81d 100644 --- a/pyomo/contrib/solver/solvers/knitro/base.py +++ b/pyomo/contrib/solver/solvers/knitro/base.py @@ -140,7 +140,10 @@ def _postsolve(self, config: KnitroConfig, timer: HierarchicalTimer) -> Results: results.solution_status = self._get_solution_status(status) results.termination_condition = self._get_termination_condition(status) results.incumbent_objective = self._engine.get_obj_value() - results.extra_info.iteration_count = self._engine.get_num_iters() + if self._is_mip(): + results.extra_info.iteration_count = self._engine.get_num_iters() + else: + results.extra_info.iteration_count = None results.timing_info.solve_time = self._engine.get_solve_time() results.timing_info.timer = timer @@ -256,3 +259,9 @@ def _get_error_type( raise DeveloperError( f"Unsupported KNITRO item type {item_type} and value type {value_type}." ) + + def _is_mip(self) -> bool: + for var in self._model_data.variables: + if var.is_integer() or var.is_binary(): + return True + return False