Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update solvers_map's #319

Merged
merged 1 commit into from
Oct 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
14 changes: 7 additions & 7 deletions tests/maximum_independent_set/test_maximum_independent_set.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import pytest
from ortools.math_opt.python import mathopt

from discrete_optimization.generic_tools.cp_tools import ParametersCP
from discrete_optimization.maximum_independent_set.mis_model import (
MisProblem,
MisSolution,
Expand All @@ -15,11 +14,7 @@
dimacs_parser_nx,
get_data_available,
)
from discrete_optimization.maximum_independent_set.mis_solvers import (
solve,
solvers_map,
toulbar_available,
)
from discrete_optimization.maximum_independent_set.mis_solvers import solve, solvers_map
from discrete_optimization.maximum_independent_set.solvers.mis_gurobi import (
MisMilpSolver,
MisQuadraticSolver,
Expand All @@ -44,7 +39,12 @@
gurobi_available = False
else:
gurobi_available = True

try:
import pytoulbar2
except ImportError:
toulbar_available = False
else:
toulbar_available = True
kamis_available = False

logger = logging.getLogger(__name__)
Expand Down
Loading