Skip to content

Commit

Permalink
Update solvers_map's
Browse files Browse the repository at this point in the history
- add mathopt and cpsat when missing
- put them before gurobi and minizinc respectively
- remove default args that are already the same in solvers
  • Loading branch information
nhuet committed Oct 4, 2024
1 parent dda37b4 commit 2bb04de
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 98 deletions.
56 changes: 24 additions & 32 deletions discrete_optimization/coloring/coloring_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,25 @@
from typing import Any

from discrete_optimization.coloring.solvers.coloring_asp_solver import ColoringASPSolver
from discrete_optimization.coloring.solvers.coloring_cp_solvers import (
ColoringCP,
ColoringCPModel,
)
from discrete_optimization.coloring.solvers.coloring_cp_solvers import ColoringCP
from discrete_optimization.coloring.solvers.coloring_cpsat_solver import (
ColoringCPSatSolver,
ModelingCPSat,
)
from discrete_optimization.coloring.solvers.coloring_lp_solvers import ColoringLP
from discrete_optimization.coloring.solvers.coloring_lp_solvers import (
ColoringLP,
ColoringLPMathOpt,
)
from discrete_optimization.coloring.solvers.coloring_solver import SolverColoring
from discrete_optimization.coloring.solvers.greedy_coloring import (
ColoringProblem,
GreedyColoring,
)
from discrete_optimization.generic_tools.cp_tools import ParametersCP
from discrete_optimization.generic_tools.do_problem import Problem
from discrete_optimization.generic_tools.result_storage.result_storage import (
ResultStorage,
)

try:
import pytoulbar2
Expand All @@ -30,45 +39,28 @@
toulbar2_available = True


from discrete_optimization.coloring.solvers.greedy_coloring import (
ColoringProblem,
GreedyColoring,
NXGreedyColoringMethod,
)
from discrete_optimization.generic_tools.cp_tools import CPSolverName, ParametersCP
from discrete_optimization.generic_tools.do_problem import Problem
from discrete_optimization.generic_tools.lp_tools import ParametersMilp
from discrete_optimization.generic_tools.result_storage.result_storage import (
ResultStorage,
)

solvers: dict[str, list[tuple[type[SolverColoring], dict[str, Any]]]] = {
"lp": [
(
ColoringLP,
{
"greedy_start": True,
"use_cliques": False,
"parameters_milp": ParametersMilp.default(),
},
{},
),
],
"cp": [
(
ColoringCP,
{
"cp_solver_name": CPSolverName.CHUFFED,
"cp_model": ColoringCPModel.DEFAULT,
"parameters_cp": ParametersCP.default(),
"object_output": True,
},
ColoringLPMathOpt,
{},
),
],
"cp": [
(
ColoringCPSatSolver,
{"modeling": ModelingCPSat.BINARY, "parameters_cp": ParametersCP.default()},
),
(
ColoringCP,
{},
),
],
"greedy": [(GreedyColoring, {"strategy": NXGreedyColoringMethod.best})],
"greedy": [(GreedyColoring, {})],
"asp": [(ColoringASPSolver, {"time_limit": 5})],
}
if toulbar2_available:
Expand Down
20 changes: 7 additions & 13 deletions discrete_optimization/facility/facility_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from discrete_optimization.facility.solvers.facility_lp_solver import (
LP_Facility_Solver,
LP_Facility_Solver_CBC,
ParametersMilp,
LP_Facility_Solver_MathOpt,
)
from discrete_optimization.facility.solvers.facility_solver import SolverFacility
from discrete_optimization.facility.solvers.greedy_solvers import (
Expand All @@ -30,23 +30,17 @@

solvers: dict[str, list[tuple[type[SolverFacility], dict[str, Any]]]] = {
"lp": [
(
LP_Facility_Solver_MathOpt,
{},
),
(
LP_Facility_Solver,
{
"parameters_milp": ParametersMilp.default(),
"use_matrix_indicator_heuristic": True,
"n_shortest": 10,
"n_cheapest": 10,
},
{},
),
(
LP_Facility_Solver_CBC,
{
"parameters_milp": ParametersMilp.default(),
"use_matrix_indicator_heuristic": True,
"n_shortest": 10,
"n_cheapest": 10,
},
{},
),
],
"cp": [
Expand Down
11 changes: 7 additions & 4 deletions discrete_optimization/knapsack/knapsack_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from typing import Any

from discrete_optimization.generic_tools.cp_tools import CPSolverName
from discrete_optimization.generic_tools.do_problem import Problem
from discrete_optimization.generic_tools.lp_tools import ParametersMilp
from discrete_optimization.generic_tools.result_storage.result_storage import (
Expand All @@ -18,6 +17,9 @@
from discrete_optimization.knapsack.solvers.dyn_prog_knapsack import KnapsackDynProg
from discrete_optimization.knapsack.solvers.greedy_solvers import GreedyBest
from discrete_optimization.knapsack.solvers.knapsack_asp_solver import KnapsackASPSolver
from discrete_optimization.knapsack.solvers.knapsack_cpsat_solver import (
CPSatKnapsackSolver,
)
from discrete_optimization.knapsack.solvers.knapsack_solver import SolverKnapsack
from discrete_optimization.knapsack.solvers.lp_solvers import (
KnapsackORTools,
Expand All @@ -33,10 +35,11 @@
],
"greedy": [(GreedyBest, {})],
"cp": [
(CPKnapsackMZN, {"cp_solver_name": CPSolverName.CHUFFED}),
(CPKnapsackMZN2, {"cp_solver_name": CPSolverName.CHUFFED}),
(CPSatKnapsackSolver, {}),
(CPKnapsackMZN, {}),
(CPKnapsackMZN2, {}),
],
"asp": [(KnapsackASPSolver, {"time_limit": 100})],
"asp": [(KnapsackASPSolver, {})],
"dyn_prog": [
(
KnapsackDynProg,
Expand Down
7 changes: 2 additions & 5 deletions discrete_optimization/maximum_independent_set/mis_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@

from typing import Any

from discrete_optimization.coloring.solvers.coloring_cpsat_solver import ModelingCPSat
from discrete_optimization.generic_tools.cp_tools import ParametersCP
from discrete_optimization.generic_tools.lp_tools import ParametersMilp
from discrete_optimization.generic_tools.result_storage.result_storage import (
ResultStorage,
Expand All @@ -30,7 +28,6 @@
from discrete_optimization.maximum_independent_set.solvers.mis_solver import MisSolver
from discrete_optimization.maximum_independent_set.solvers.mis_toulbar import (
MisToulbarSolver,
toulbar_available,
)

solvers: dict[str, list[tuple[type[MisSolver], dict[str, Any]]]] = {
Expand All @@ -48,10 +45,10 @@
},
),
],
"ortools": [
"cp": [
(
MisOrtoolsSolver,
{"modeling": ModelingCPSat.BINARY, "parameters_cp": ParametersCP.default()},
{},
),
],
"networkX": [(MisNetworkXSolver, {})],
Expand Down
36 changes: 9 additions & 27 deletions discrete_optimization/rcpsp/rcpsp_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
ParametersAltGa,
ParametersGa,
)
from discrete_optimization.generic_tools.lp_tools import ParametersMilp
from discrete_optimization.generic_tools.result_storage.result_storage import (
ResultStorage,
)
Expand All @@ -44,7 +43,6 @@
LP_RCPSP_MATHOPT,
)
from discrete_optimization.rcpsp.solver.rcpsp_pile import (
GreedyChoice,
PileSolverRCPSP,
PileSolverRCPSP_Calendar,
)
Expand All @@ -59,51 +57,35 @@
"lp": [
(
LP_RCPSP_MATHOPT,
{
"parameters_milp": ParametersMilp.default(),
},
{},
),
(
LP_MRCPSP_MATHOPT,
{
"parameters_milp": ParametersMilp.default(),
},
{},
),
],
"greedy": [
(PileSolverRCPSP, {"greedy_choice": GreedyChoice.MOST_SUCCESSORS}),
(PileSolverRCPSP_Calendar, {"greedy_choice": GreedyChoice.MOST_SUCCESSORS}),
(PileSolverRCPSP, {}),
(PileSolverRCPSP_Calendar, {}),
],
"cp": [
(CPSatRCPSPSolver, {"parameters_cp": ParametersCP.default()}),
(
CP_RCPSP_MZN,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
},
{},
),
(
CP_MRCPSP_MZN,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
},
{},
),
(
CP_RCPSP_MZN_PREEMPTIVE,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
},
{},
),
(
CP_MRCPSP_MZN_PREEMPTIVE,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
},
{},
),
(CPSatRCPSPSolver, {"parameters_cp": ParametersCP.default()}),
],
"critical-path": [(CPM, {})],
"lns-scheduling": [
Expand Down
25 changes: 11 additions & 14 deletions discrete_optimization/rcpsp_multiskill/rcpsp_multiskill_solvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
CP_MS_MRCPSP_MZN,
CP_MS_MRCPSP_MZN_PREEMPTIVE,
)
from discrete_optimization.rcpsp_multiskill.solvers.cpsat_msrcpsp_solver import (
CPSatMSRCPSPSolver,
)
from discrete_optimization.rcpsp_multiskill.solvers.lp_model import (
LP_Solver_MRSCPSP_MathOpt,
)
Expand All @@ -35,39 +38,33 @@
"lp": [
(
LP_Solver_MRSCPSP_MathOpt,
{
"parameters_milp": ParametersMilp.default(),
},
{},
)
],
"cp": [
(
CPSatMSRCPSPSolver,
{},
),
(
CP_MS_MRCPSP_MZN,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
"exact_skills_need": False,
},
{},
),
(
CP_MS_MRCPSP_MZN_PREEMPTIVE,
{
"cp_solver_name": CPSolverName.CHUFFED,
"parameters_cp": ParametersCP.default(),
"exact_skills_need": False,
"nb_preemptive": 5,
},
),
],
"ls": [(LS_RCPSP_Solver, {"ls_solver": LS_SOLVER.SA, "nb_iteration_max": 20})],
"ga": [(GA_MSRCPSP_Solver, {"parameters_ga": ParametersAltGa.default_msrcpsp()})],
"ls": [(LS_RCPSP_Solver, {"nb_iteration_max": 20})],
"ga": [(GA_MSRCPSP_Solver, {})],
"lns-scheduling": [
(
LargeNeighborhoodSearchScheduling,
{
"nb_iteration_lns": 100,
"nb_iteration_no_improvement": 100,
"parameters_cp": ParametersCP.default(),
},
)
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
class GA_MSRCPSP_Solver(SolverDO):
problem: RCPSPModel

def solve(
self, parameters_ga: ParametersAltGa = ParametersAltGa.default_msrcpsp(), **args
):
def solve(self, parameters_ga: ParametersAltGa = None, **args):
if parameters_ga is None:
parameters_ga = ParametersAltGa.default_msrcpsp()
ga_solver = AlternatingGa(
problem=self.problem,
encodings=parameters_ga.encodings,
Expand Down

0 comments on commit 2bb04de

Please sign in to comment.