Source code for pyomo.contrib.solver.solvers.knitro.direct

# ____________________________________________________________________________________
#
# Pyomo: Python Optimization Modeling Objects
# Copyright (c) 2008-2026 National Technology and Engineering Solutions of Sandia, LLC
# Under the terms of Contract DE-NA0003525 with National Technology and Engineering
# Solutions of Sandia, LLC, the U.S. Government retains certain rights in this
# software.  This software is distributed under the 3-clause BSD License.
# ____________________________________________________________________________________


from pyomo.common.timing import HierarchicalTimer
from pyomo.contrib.solver.solvers.knitro.base import KnitroSolverBase
from pyomo.contrib.solver.solvers.knitro.config import KnitroConfig
from pyomo.core.base.block import BlockData


[docs] class KnitroDirectSolver(KnitroSolverBase): def _presolve( self, model: BlockData, config: KnitroConfig, timer: HierarchicalTimer ) -> None: timer.start("build_problem") self._model_data.set_block(model) timer.stop("build_problem") def _solve(self, config: KnitroConfig, timer: HierarchicalTimer) -> None: self._engine.renew() timer.start("add_vars") self._engine.add_vars(self._model_data.variables) timer.stop("add_vars") timer.start("add_cons") self._engine.add_cons(self._model_data.cons) timer.stop("add_cons") if self._model_data.objs: timer.start("set_objective") self._engine.set_obj(self._model_data.objs[0]) timer.stop("set_objective") self._engine.set_outlev() if config.threads is not None: self._engine.set_num_threads(config.threads) if config.time_limit is not None: self._engine.set_time_limit(config.time_limit) timer.start("load_options") self._engine.set_options(**config.solver_options) timer.stop("load_options") timer.start("solve") self._engine.solve() timer.stop("solve")