discrete_optimization.maximum_independent_set.solvers package
Submodules
discrete_optimization.maximum_independent_set.solvers.asp module
- class discrete_optimization.maximum_independent_set.solvers.asp.AspMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
,AspClingoSolver
- init_model(**kwargs: Any) None [source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- retrieve_solution(model: Model) MisSolution [source]
Construct a do solution from a clingo model.
- Parameters:
model – the current constructed clingo model
- Returns:
the intermediate solution, at do format.
discrete_optimization.maximum_independent_set.solvers.cpsat module
- class discrete_optimization.maximum_independent_set.solvers.cpsat.CpSatMisSolver(problem: MisProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
,OrtoolsCpSatSolver
,WarmstartMixin
- init_model(**kwargs)[source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- retrieve_solution(cpsolvercb: CpSolverSolutionCallback) MisSolution [source]
Construct a do solution from the cpsat solver internal solution.
It will be called each time the cpsat solver find a new solution. At that point, value of internal variables are accessible via cpsolvercb.Value(VARIABLE_NAME).
- Parameters:
cpsolvercb – the ortools callback called when the cpsat solver finds a new solution.
- Returns:
the intermediate solution, at do format.
- set_warm_start(solution: MisSolution) None [source]
Make the solver warm start from the given solution.
discrete_optimization.maximum_independent_set.solvers.decomposition module
- class discrete_optimization.maximum_independent_set.solvers.decomposition.DecomposedMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
,WarmstartMixin
This solver is based on the current observation. From a given mis model and one current solution, if we decide to freeze the decision variable for a subset of items, the remaining problem to solve is also a mis problem, with fewer nodes. DecomposedMisSolver is a basic iterative solver that starts from a given solution, then freeze random items, solve subproblem with a custom root solver, rebuild original solution and repeat the process.
- hyperparameters: list[Hyperparameter] = [FloatHyperparameter(name='proportion_to_remove', default=0.7, depends_on=None, name_in_kwargs='proportion_to_remove', low=0.0, high=1.0, suggest_low=False, suggest_high=False, step=None, log=False), IntegerHyperparameter(name='nb_iteration', default=100, depends_on=None, name_in_kwargs='nb_iteration', low=0, high=10000000, step=1, log=False), SubBrickHyperparameter(name='initial_solver', default=SubBrick(cls=<class 'discrete_optimization.maximum_independent_set.solvers.networkx.NetworkxMisSolver'>, kwargs={}, kwargs_from_solution=None), depends_on=None, name_in_kwargs='initial_solver'), SubBrickHyperparameter(name='root_solver', default=SubBrick(cls=<class 'discrete_optimization.maximum_independent_set.solvers.networkx.NetworkxMisSolver'>, kwargs={}, kwargs_from_solution=None), depends_on=None, name_in_kwargs='root_solver')]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- initial_solution: MisSolution | None = None
Initial solution used for warm start.
- rebuild_sol(sol: MisSolution, original_mis_model: MisProblem, original_solution: MisSolution, indexes_to_remove: set[int] | None = None)[source]
Rebuild a full Mus solution object from a partial solution. :param sol: solution to a sub-mis problem :param original_knapsack_problem: original knapsack model to solve :param original_solution: original base solution :param indexes_to_remove: indexes of item removed when building the sub-knapsack problem. :return: A new solution object for the original problem.
- set_warm_start(solution: MisSolution) None [source]
Make the solver warm start from the given solution.
Will be ignored if arg initial_solver is set and not None in call to solve().
- solve(callbacks: list[Callback] | None = None, **kwargs: Any) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
discrete_optimization.maximum_independent_set.solvers.dp module
- class discrete_optimization.maximum_independent_set.solvers.dp.DpMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
DpSolver
,MisSolver
,WarmstartMixin
- hyperparameters: list[Hyperparameter] = [CategoricalHyperparameter(name='solver', default=<class 'builtins.CABS'>, depends_on=None, name_in_kwargs='solver'), EnumHyperparameter(name='modeling', default=<DpModeling.ORDER: 0>, depends_on=None, name_in_kwargs='modeling'), EnumHyperparameter(name='order_method', default=<FixedOrderMethod.ORIGINAL_ORDER: 0>, depends_on=('modeling', <DpModeling.ORDER: 0>), name_in_kwargs='order_method')]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- init_model(**kwargs: Any) None [source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- modeling: DpModeling
- nodes_convention: list
- problem: MisProblem
- set_warm_start(solution: MisSolution) None [source]
Make the solver warm start from the given solution.
- transitions: dict
discrete_optimization.maximum_independent_set.solvers.gurobi module
- class discrete_optimization.maximum_independent_set.solvers.gurobi.GurobiMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
GurobiMilpSolver
,BaseLpMisSolver
- convert_to_variable_values(solution: MisSolution) dict[Var, float] [source]
Convert a solution to a mapping between model variables and their values.
Will be used by set_warm_start().
- class discrete_optimization.maximum_independent_set.solvers.gurobi.GurobiQuadraticMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
GurobiMilpSolver
,BaseQuadMisSolver
Quadratic solver with gurobi.
Work only for graph without weight on nodes. If there are weights, it’s going to ignore them.
- convert_to_variable_values(solution: MisSolution) dict[Var, float] [source]
Convert a solution to a mapping between model variables and their values.
Will be used by set_warm_start().
- init_model(**kwargs: Any) None [source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- vars_node_matrix: gurobipy.MVar
discrete_optimization.maximum_independent_set.solvers.kamis module
- class discrete_optimization.maximum_independent_set.solvers.kamis.KamisMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
To use Kamis Solver you need to define an environment variable “KAMIS_DEPLOY” who is the path to the folder where are Kamis executable.
- hyperparameters: list[Hyperparameter] = [CategoricalHyperparameter(name='method', default='weighted', depends_on=None, name_in_kwargs='method')]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- init_model(**kwargs)[source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- solve(**kwargs) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
discrete_optimization.maximum_independent_set.solvers.lns module
- class discrete_optimization.maximum_independent_set.solvers.lns.AllVarsOrtoolsCpSatMisConstraintHandler(problem: MisProblem, fraction_to_fix: float = 0.9)[source]
Bases:
OrtoolsCpSatConstraintHandler
Fix fraction of all variables, not only the ones already chosen.
- adding_constraint_from_results_store(solver: CpSatMisSolver, result_storage: ResultStorage, last_result_store: ResultStorage | None = None, **kwargs: Any) Iterable[Constraint] [source]
- hyperparameters: list[Hyperparameter] = [FloatHyperparameter(name='fraction_to_fix', default=0.9, depends_on=None, name_in_kwargs='fraction_to_fix', low=0.0, high=1.0, suggest_low=False, suggest_high=False, step=None, log=False)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- class discrete_optimization.maximum_independent_set.solvers.lns.DestroyOrtoolsCpSatMisConstraintHandler(problem: MisProblem, fraction_to_fix: float = 0.9)[source]
Bases:
OrtoolsCpSatConstraintHandler
- adding_constraint_from_results_store(solver: CpSatMisSolver, result_storage: ResultStorage, last_result_store: ResultStorage | None = None, **kwargs: Any) Iterable[Constraint] [source]
- hyperparameters: list[Hyperparameter] = [FloatHyperparameter(name='fraction_to_fix', default=0.9, depends_on=None, name_in_kwargs='fraction_to_fix', low=0.0, high=1.0, suggest_low=False, suggest_high=False, step=None, log=False)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- class discrete_optimization.maximum_independent_set.solvers.lns.LocalMovesOrtoolsCpSatMisConstraintHandler(problem: MisProblem, nb_moves: int = 5, fraction_to_fix: float = 0.9)[source]
Bases:
OrtoolsCpSatConstraintHandler
- adding_constraint_from_results_store(solver: CpSatMisSolver, result_storage: ResultStorage, last_result_store: ResultStorage | None = None, **kwargs: Any) Iterable[Constraint] [source]
- hyperparameters: list[Hyperparameter] = [IntegerHyperparameter(name='nb_moves', default=1, depends_on=None, name_in_kwargs='nb_moves', low=0, high=10, step=1, log=False), FloatHyperparameter(name='fraction_to_fix', default=0.9, depends_on=None, name_in_kwargs='fraction_to_fix', low=0.0, high=1.0, suggest_low=False, suggest_high=False, step=None, log=False)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- class discrete_optimization.maximum_independent_set.solvers.lns.OrtoolsCpSatMisConstraintHandler(problem: MisProblem, fraction_to_fix: float = 0.9)[source]
Bases:
OrtoolsCpSatConstraintHandler
- adding_constraint_from_results_store(solver: CpSatMisSolver, result_storage: ResultStorage, last_result_store: ResultStorage | None = None, **kwargs: Any) Iterable[Constraint] [source]
- hyperparameters: list[Hyperparameter] = [FloatHyperparameter(name='fraction_to_fix', default=0.9, depends_on=None, name_in_kwargs='fraction_to_fix', low=0.0, high=1.0, suggest_low=False, suggest_high=False, step=None, log=False)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
discrete_optimization.maximum_independent_set.solvers.lp module
- class discrete_optimization.maximum_independent_set.solvers.lp.BaseLpMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
,MilpSolver
- convert_to_variable_values(solution: MisSolution) dict[Any, float] [source]
Convert a solution to a mapping between model variables and their values.
Will be used by set_warm_start().
- init_model(**kwargs: Any) None [source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- retrieve_current_solution(get_var_value_for_current_solution: Callable[[Any], float], get_obj_value_for_current_solution: Callable[[], float]) MisSolution [source]
Retrieve current solution from internal gurobi solution.
This converts internal gurobi solution into a discrete-optimization Solution. This method can be called after the solve in retrieve_solutions() or during solve within a gurobi/pymilp/cplex callback. The difference will be the get_var_value_for_current_solution and get_obj_value_for_current_solution callables passed.
- Parameters:
get_var_value_for_current_solution – function extracting the value of the given variable for the current solution will be different when inside a callback or after the solve is finished
get_obj_value_for_current_solution – function extracting the value of the objective for the current solution.
- Returns:
the converted solution at d-o format
- vars_node: list[Any]
- class discrete_optimization.maximum_independent_set.solvers.lp.BaseQuadMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
BaseLpMisSolver
Base class for quadratic solvers with gurobi or mathopt.
Work only for graph without weight on nodes. If there are weights, it’s going to ignore them.
- init_model(**kwargs: Any) None [source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- property vars_node: list[Any]
- vars_node_matrix: array
discrete_optimization.maximum_independent_set.solvers.mathopt module
- class discrete_optimization.maximum_independent_set.solvers.mathopt.MathOptMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
OrtoolsMathOptMilpSolver
,BaseLpMisSolver
- convert_to_variable_values(solution: MisSolution) dict[Variable, float] [source]
Convert a solution to a mapping between model variables and their values.
Will be used by set_warm_start() to provide a suitable SolutionHint.variable_values. See https://or-tools.github.io/docs/pdoc/ortools/math_opt/python/model_parameters.html#SolutionHint for more information.
Override it in subclasses to have a proper warm start.
- class discrete_optimization.maximum_independent_set.solvers.mathopt.MathOptQuadraticMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
OrtoolsMathOptMilpSolver
,BaseQuadMisSolver
Quadratic solver mathopt.
Work only for graph without weight on nodes. If there are weights, it’s going to ignore them.
- convert_to_variable_values(solution: MisSolution) dict[Variable, float] [source]
Convert a solution to a mapping between model variables and their values.
Will be used by set_warm_start() to provide a suitable SolutionHint.variable_values. See https://or-tools.github.io/docs/pdoc/ortools/math_opt/python/model_parameters.html#SolutionHint for more information.
Override it in subclasses to have a proper warm start.
- has_quadratic_objective: bool = True
Flag telling that the objective is a quadratic expression.
This is use to pass the proper function to retrieve_current_solution for the objective. Should be overriden to True in solvers with quadratic objectives.
discrete_optimization.maximum_independent_set.solvers.mis_solver module
- class discrete_optimization.maximum_independent_set.solvers.mis_solver.MisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
SolverDO
- problem: MisProblem
discrete_optimization.maximum_independent_set.solvers.networkx module
- class discrete_optimization.maximum_independent_set.solvers.networkx.NetworkxMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
- solve(callbacks: list[Callback] | None = None, **kwargs: Any) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
discrete_optimization.maximum_independent_set.solvers.quantum module
- class discrete_optimization.maximum_independent_set.solvers.quantum.MisQiskit(problem: MisProblem)[source]
Bases:
object
- interpret(result: object | ndarray) MisSolution [source]
- class discrete_optimization.maximum_independent_set.solvers.quantum.QaoaMisSolver(problem: MisProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs)[source]
Bases:
MisSolver
,QiskitQaoaSolver
- class discrete_optimization.maximum_independent_set.solvers.quantum.VqeMisSolver(problem: MisProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs)[source]
Bases:
MisSolver
,QiskitVqeSolver
discrete_optimization.maximum_independent_set.solvers.toulbar module
- class discrete_optimization.maximum_independent_set.solvers.toulbar.ToulbarMisSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
MisSolver
- init_model(**kwargs)[source]
Initialize internal model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- solve(**kwargs: Any) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem