# Module `miplearn.solvers.pyomo.cplex`

Expand source code

    #  MIPLearn: Extensible Framework for Learning-Enhanced Mixed-Integer Optimization
    #  Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
    #  Released under the modified BSD license. See COPYING.md for more details.
    from typing import Optional

    from pyomo import environ as pe
    from scipy.stats import randint

    from miplearn.solvers.pyomo.base import BasePyomoSolver
    from miplearn.types import SolverParams

    class CplexPyomoSolver(BasePyomoSolver):
        """
        An InternalSolver that uses CPLEX and the Pyomo modeling language.

        Parameters
        ----------
        params: dict
            Dictionary of options to pass to the Pyomo solver. For example,
            {"mip_display": 5} to increase the log verbosity.
        """

        def __init__(
            self,
            params: Optional[SolverParams] = None,
        ) -> None:
            if params is None:
                params = {}
            if "randomseed" not in params.keys():
                params["randomseed"] = randint(low=0, high=1000).rvs()
            if "mip_display" not in params.keys():
                params["mip_display"] = 4
            super().__init__(
                solver_factory=pe.SolverFactory("cplex_persistent"),
                params=params,
            )

        def _get_warm_start_regexp(self):
            return "MIP start .* with objective ([0-9.e+-]*)\\."

        def _get_node_count_regexp(self):
            return "^[ *] *([0-9]+)"

## Classes

`class CplexPyomoSolver (params=None)`

  An InternalSolver that uses CPLEX and the Pyomo modeling language.

  ## Parameters

  `params` :`dict`
    Dictionary of options to pass to the Pyomo solver. For example, {"mip_display": 5} to increase the log verbosity.
  Expand source code

      class CplexPyomoSolver(BasePyomoSolver):
          """
          An InternalSolver that uses CPLEX and the Pyomo modeling language.

          Parameters
          ----------
          params: dict
              Dictionary of options to pass to the Pyomo solver. For example,
              {"mip_display": 5} to increase the log verbosity.
          """

          def __init__(
              self,
              params: Optional[SolverParams] = None,
          ) -> None:
              if params is None:
                  params = {}
              if "randomseed" not in params.keys():
                  params["randomseed"] = randint(low=0, high=1000).rvs()
              if "mip_display" not in params.keys():
                  params["mip_display"] = 4
              super().__init__(
                  solver_factory=pe.SolverFactory("cplex_persistent"),
                  params=params,
              )

          def _get_warm_start_regexp(self):
              return "MIP start .* with objective ([0-9.e+-]*)\\."

          def _get_node_count_regexp(self):
              return "^[ *] *([0-9]+)"

  ### Ancestors

  - BasePyomoSolver
  - InternalSolver
  - abc.ABC

  ### Inherited members

  - `BasePyomoSolver`:
    - `add_constraint`
    - `extract_constraint`
    - `fix`
    - `get_constraint_ids`
    - `get_constraint_sense`
    - `get_dual`
    - `get_empty_solution`
    - `get_inequality_slacks`
    - `get_sense`
    - `get_solution`
    - `get_value`
    - `is_constraint_satisfied`
    - `is_infeasible`
    - `relax`
    - `set_branching_priorities`
    - `set_constraint_sense`
    - `set_instance`
    - `set_warm_start`
    - `solve`
    - `solve_lp`