From 9ddb952db0a25da1ba830b54b8772d809a41a16d Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Tue, 19 Jan 2021 22:32:05 -0600 Subject: [PATCH] Make LearningSolver.add internal --- docs/customization.md | 9 --------- miplearn/solvers/learning.py | 12 ++++++------ miplearn/solvers/tests/test_learning_solver.py | 8 -------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/docs/customization.md b/docs/customization.md index 0a26ac9..dd660ca 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -61,15 +61,6 @@ solver2 = LearningSolver(components=[ ]) ``` -It is also possible to add components to an existing solver using the `solver.add` method, as shown below. If the solver already holds another component of that type, the new component will replace the previous one. -```python -# Create solver with default components -solver = LearningSolver() - -# Replace the default LazyConstraintComponent by one with custom parameters -solver.add(LazyConstraintComponent(...)) -``` - ### Adjusting component aggressiveness The aggressiveness of classification components (such as `PrimalSolutionComponent` and `LazyConstraintComponent`) can diff --git a/miplearn/solvers/learning.py b/miplearn/solvers/learning.py index e70e90a..6ffd345 100644 --- a/miplearn/solvers/learning.py +++ b/miplearn/solvers/learning.py @@ -104,12 +104,12 @@ class LearningSolver: if components is not None: for comp in components: - self.add(comp) + self._add_component(comp) else: - self.add(ObjectiveValueComponent()) - self.add(PrimalSolutionComponent()) - self.add(DynamicLazyConstraintsComponent()) - self.add(UserCutsComponent()) + self._add_component(ObjectiveValueComponent()) + self._add_component(PrimalSolutionComponent()) + self._add_component(DynamicLazyConstraintsComponent()) + self._add_component(UserCutsComponent()) assert self.mode in ["exact", "heuristic"] for component in self.components.values(): @@ -332,7 +332,7 @@ class LearningSolver: for component in self.components.values(): component.fit(training_instances) - def add(self, component): + def _add_component(self, component): name = component.__class__.__name__ self.components[name] = component diff --git a/miplearn/solvers/tests/test_learning_solver.py b/miplearn/solvers/tests/test_learning_solver.py index faa9ae8..0d098ba 100644 --- a/miplearn/solvers/tests/test_learning_solver.py +++ b/miplearn/solvers/tests/test_learning_solver.py @@ -62,14 +62,6 @@ def test_parallel_solve(): assert len(instance.solution["x"].keys()) == 4 -def test_add_components(): - solver = LearningSolver(components=[]) - solver.add(DynamicLazyConstraintsComponent()) - solver.add(DynamicLazyConstraintsComponent()) - assert len(solver.components) == 1 - assert "DynamicLazyConstraintsComponent" in solver.components - - def test_solve_fit_from_disk(): for internal_solver in _get_internal_solvers(): # Create instances and pickle them