mirror of
https://github.com/ANL-CEEESA/MIPLearn.git
synced 2025-12-06 09:28:51 -06:00
Rename before/after_solve to before/after_solve_mip
This commit is contained in:
@@ -21,14 +21,14 @@ class Component(ABC):
|
||||
strategy.
|
||||
"""
|
||||
|
||||
def before_solve(
|
||||
def before_solve_mip(
|
||||
self,
|
||||
solver: "LearningSolver",
|
||||
instance: Instance,
|
||||
model: Any,
|
||||
) -> None:
|
||||
"""
|
||||
Method called by LearningSolver before the problem is solved.
|
||||
Method called by LearningSolver before the MIP is solved.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
@@ -42,7 +42,7 @@ class Component(ABC):
|
||||
return
|
||||
|
||||
@abstractmethod
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver: "LearningSolver",
|
||||
instance: Instance,
|
||||
@@ -51,7 +51,7 @@ class Component(ABC):
|
||||
training_data: TrainingSample,
|
||||
) -> None:
|
||||
"""
|
||||
Method called by LearningSolver after the problem is solved to optimality.
|
||||
Method called by LearningSolver after the MIP is solved.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
|
||||
@@ -21,11 +21,11 @@ class CompositeComponent(Component):
|
||||
def __init__(self, children):
|
||||
self.children = children
|
||||
|
||||
def before_solve(self, solver, instance, model):
|
||||
def before_solve_mip(self, solver, instance, model):
|
||||
for child in self.children:
|
||||
child.before_solve(solver, instance, model)
|
||||
child.before_solve_mip(solver, instance, model)
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
@@ -34,7 +34,7 @@ class CompositeComponent(Component):
|
||||
training_data,
|
||||
):
|
||||
for child in self.children:
|
||||
child.after_solve(solver, instance, model, stats, training_data)
|
||||
child.after_solve_mip(solver, instance, model, stats, training_data)
|
||||
|
||||
def fit(self, training_instances):
|
||||
for child in self.children:
|
||||
|
||||
@@ -33,7 +33,7 @@ class UserCutsComponent(Component):
|
||||
self.classifier_prototype: Classifier = classifier
|
||||
self.classifiers: Dict[Any, Classifier] = {}
|
||||
|
||||
def before_solve(self, solver, instance, model):
|
||||
def before_solve_mip(self, solver, instance, model):
|
||||
instance.found_violated_user_cuts = []
|
||||
logger.info("Predicting violated user cuts...")
|
||||
violations = self.predict(instance)
|
||||
@@ -42,7 +42,7 @@ class UserCutsComponent(Component):
|
||||
cut = instance.build_user_cut(model, v)
|
||||
solver.internal_solver.add_constraint(cut)
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
@@ -33,7 +33,7 @@ class DynamicLazyConstraintsComponent(Component):
|
||||
self.classifier_prototype: Classifier = classifier
|
||||
self.classifiers: Dict[Any, Classifier] = {}
|
||||
|
||||
def before_solve(self, solver, instance, model):
|
||||
def before_solve_mip(self, solver, instance, model):
|
||||
instance.found_violated_lazy_constraints = []
|
||||
logger.info("Predicting violated lazy constraints...")
|
||||
violations = self.predict(instance)
|
||||
@@ -54,7 +54,7 @@ class DynamicLazyConstraintsComponent(Component):
|
||||
solver.internal_solver.add_constraint(cut)
|
||||
return True
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
@@ -40,7 +40,7 @@ class StaticLazyConstraintsComponent(Component):
|
||||
self.use_two_phase_gap = use_two_phase_gap
|
||||
self.violation_tolerance = violation_tolerance
|
||||
|
||||
def before_solve(self, solver, instance, model):
|
||||
def before_solve_mip(self, solver, instance, model):
|
||||
self.pool = []
|
||||
if not solver.use_lazy_cb and self.use_two_phase_gap:
|
||||
logger.info("Increasing gap tolerance to %f", self.large_gap)
|
||||
@@ -52,7 +52,7 @@ class StaticLazyConstraintsComponent(Component):
|
||||
if instance.has_static_lazy_constraints():
|
||||
self._extract_and_predict_static(solver, instance)
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
@@ -44,7 +44,7 @@ class ObjectiveValueComponent(Component):
|
||||
self._predicted_ub: Optional[float] = None
|
||||
self._predicted_lb: Optional[float] = None
|
||||
|
||||
def before_solve(
|
||||
def before_solve_mip(
|
||||
self,
|
||||
solver: "LearningSolver",
|
||||
instance: Instance,
|
||||
@@ -63,7 +63,7 @@ class ObjectiveValueComponent(Component):
|
||||
)
|
||||
)
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver: "LearningSolver",
|
||||
instance: Instance,
|
||||
|
||||
@@ -52,7 +52,7 @@ class PrimalSolutionComponent(Component):
|
||||
self._n_zero = 0
|
||||
self._n_one = 0
|
||||
|
||||
def before_solve(self, solver, instance, model):
|
||||
def before_solve_mip(self, solver, instance, model):
|
||||
if len(self.thresholds) > 0:
|
||||
logger.info("Predicting primal solution...")
|
||||
solution = self.predict(instance)
|
||||
@@ -77,7 +77,7 @@ class PrimalSolutionComponent(Component):
|
||||
else:
|
||||
solver.internal_solver.set_warm_start(solution)
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver: "LearningSolver",
|
||||
instance: Instance,
|
||||
|
||||
@@ -46,7 +46,7 @@ class ConvertTightIneqsIntoEqsStep(Component):
|
||||
self.converted = []
|
||||
self.original_sense = {}
|
||||
|
||||
def before_solve(self, solver, instance, _):
|
||||
def before_solve_mip(self, solver, instance, _):
|
||||
logger.info("Predicting tight LP constraints...")
|
||||
x, constraints = DropRedundantInequalitiesStep._x_test(
|
||||
instance,
|
||||
@@ -73,7 +73,7 @@ class ConvertTightIneqsIntoEqsStep(Component):
|
||||
|
||||
logger.info(f"Converted {self.n_converted} inequalities")
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
@@ -50,7 +50,7 @@ class DropRedundantInequalitiesStep(Component):
|
||||
self.total_kept = 0
|
||||
self.total_iterations = 0
|
||||
|
||||
def before_solve(self, solver, instance, _):
|
||||
def before_solve_mip(self, solver, instance, _):
|
||||
self.current_iteration = 0
|
||||
|
||||
logger.info("Predicting redundant LP constraints...")
|
||||
@@ -79,7 +79,7 @@ class DropRedundantInequalitiesStep(Component):
|
||||
self.total_kept += 1
|
||||
logger.info(f"Extracted {self.total_dropped} predicted constraints")
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
@@ -14,11 +14,11 @@ class RelaxIntegralityStep(Component):
|
||||
Component that relaxes all integrality constraints before the problem is solved.
|
||||
"""
|
||||
|
||||
def before_solve(self, solver, instance, _):
|
||||
def before_solve_mip(self, solver, instance, _):
|
||||
logger.info("Relaxing integrality...")
|
||||
solver.internal_solver.relax()
|
||||
|
||||
def after_solve(
|
||||
def after_solve_mip(
|
||||
self,
|
||||
solver,
|
||||
instance,
|
||||
|
||||
Reference in New Issue
Block a user