Include additional features in instance.features

This commit is contained in:
2021-04-10 19:11:38 -05:00
parent 733c8299e0
commit 9ca4cc3c24
2 changed files with 55 additions and 45 deletions

View File

@@ -9,34 +9,55 @@ from miplearn.features import (
Constraint,
)
from miplearn.solvers.gurobi import GurobiSolver
from miplearn.solvers.tests import assert_equals
def test_knapsack() -> None:
for solver_factory in [GurobiSolver]:
solver = solver_factory()
instance = solver.build_test_instance_knapsack()
model = instance.to_model()
solver.set_instance(instance, model)
FeaturesExtractor(solver).extract(instance)
assert instance.features.variables == {
solver = GurobiSolver()
instance = solver.build_test_instance_knapsack()
model = instance.to_model()
solver.set_instance(instance, model)
FeaturesExtractor(solver).extract(instance)
assert_equals(
instance.features.variables,
{
"x[0]": Variable(
category="default",
lower_bound=0.0,
obj_coeff=505.0,
type="B",
upper_bound=1.0,
user_features=[23.0, 505.0],
),
"x[1]": Variable(
category="default",
lower_bound=0.0,
obj_coeff=352.0,
type="B",
upper_bound=1.0,
user_features=[26.0, 352.0],
),
"x[2]": Variable(
category="default",
lower_bound=0.0,
obj_coeff=458.0,
type="B",
upper_bound=1.0,
user_features=[20.0, 458.0],
),
"x[3]": Variable(
category="default",
lower_bound=0.0,
obj_coeff=220.0,
type="B",
upper_bound=1.0,
user_features=[18.0, 220.0],
),
}
assert instance.features.constraints == {
},
)
assert_equals(
instance.features.constraints,
{
"eq_capacity": Constraint(
lhs={
"x[0]": 23.0,
@@ -50,8 +71,12 @@ def test_knapsack() -> None:
category="eq_capacity",
user_features=[0.0],
)
}
assert instance.features.instance == InstanceFeatures(
},
)
assert_equals(
instance.features.instance,
InstanceFeatures(
user_features=[67.0, 21.75],
lazy_constraint_count=0,
)
),
)