parent
0377b5b546
commit
d8dc8471aa
@ -0,0 +1,34 @@
|
|||||||
|
from miplearn import LearningSolver, GurobiSolver
|
||||||
|
from miplearn.components.steps.convert_tight import ConvertTightIneqsIntoEqsStep
|
||||||
|
from miplearn.components.steps.relax_integrality import RelaxIntegralityStep
|
||||||
|
from miplearn.problems.knapsack import GurobiKnapsackInstance
|
||||||
|
|
||||||
|
|
||||||
|
def test_convert_tight_usage():
|
||||||
|
instance = GurobiKnapsackInstance(
|
||||||
|
weights=[3.0, 5.0, 10.0],
|
||||||
|
prices=[1.0, 1.0, 1.0],
|
||||||
|
capacity=16.0,
|
||||||
|
)
|
||||||
|
solver = LearningSolver(
|
||||||
|
solver=GurobiSolver(),
|
||||||
|
components=[
|
||||||
|
RelaxIntegralityStep(),
|
||||||
|
ConvertTightIneqsIntoEqsStep(),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# Solve original problem
|
||||||
|
solver.solve(instance)
|
||||||
|
original_upper_bound = instance.upper_bound
|
||||||
|
|
||||||
|
# Should collect training data
|
||||||
|
assert hasattr(instance, "slacks")
|
||||||
|
assert instance.slacks["eq_capacity"] == 0.0
|
||||||
|
|
||||||
|
# Fit and resolve
|
||||||
|
solver.fit([instance])
|
||||||
|
solver.solve(instance)
|
||||||
|
|
||||||
|
# Objective value should be the same
|
||||||
|
assert instance.upper_bound == original_upper_bound
|
Loading…
Reference in new issue