stab: Implement MaxWeightStableSetPerturber; update tests and docs

This commit is contained in:
2025-12-08 10:54:19 -06:00
parent 7fd88b0a3d
commit a4cb46f73e
23 changed files with 197 additions and 152 deletions

View File

@@ -28,17 +28,17 @@ def test_mem_component_gp(
clf.fit.assert_called()
x, y = clf.fit.call_args.args
assert x.shape == (3, 50)
assert y.shape == (3, 412)
assert y.shape == (3, 382)
y = y.tolist()
assert y[0][40:50] == [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
assert y[1][40:50] == [1, 1, 0, 1, 1, 1, 1, 1, 1, 1]
assert y[2][40:50] == [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
assert y[1][40:50] == [1, 1, 1, 0, 1, 1, 1, 1, 1, 1]
assert y[2][40:50] == [1, 1, 1, 1, 0, 0, 1, 1, 1, 1]
# Should store violations
assert comp.constrs_ is not None
assert comp.n_features_ == 50
assert comp.n_targets_ == 412
assert len(comp.constrs_) == 412
assert comp.n_targets_ == 382
assert len(comp.constrs_) == 382
# Call before-mip
stats: Dict[str, Any] = {}
@@ -54,7 +54,7 @@ def test_mem_component_gp(
model.set_cuts.assert_called()
(cuts_aot_,) = model.set_cuts.call_args.args
assert cuts_aot_ is not None
assert len(cuts_aot_) == 256
assert len(cuts_aot_) == 247
def test_usage_stab(

View File

@@ -7,6 +7,7 @@ from miplearn.collectors.basic import BasicCollector
from miplearn.io import write_pkl_gz
from miplearn.problems.stab import (
MaxWeightStableSetGenerator,
MaxWeightStableSetPerturber,
build_stab_model_gurobipy,
build_stab_model_pyomo,
)
@@ -17,9 +18,12 @@ gen = MaxWeightStableSetGenerator(
w=uniform(10.0, scale=1.0),
n=randint(low=50, high=51),
p=uniform(loc=0.5, scale=0.0),
fix_graph=True,
)
data = gen.generate(3)
pr = MaxWeightStableSetPerturber(
w_jitter=uniform(0.9, scale=0.2),
)
base_instance = gen.generate(1)[0]
data = pr.perturb(base_instance, 3)
params = {"seed": 42, "threads": 1}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.