Implement TravelingSalesmanPerturber

This commit is contained in:
2025-12-08 15:10:24 -06:00
parent 4137378bb8
commit 1d44980a7b
23 changed files with 128 additions and 90 deletions

View File

@@ -7,6 +7,7 @@ from miplearn.collectors.basic import BasicCollector
from miplearn.io import write_pkl_gz
from miplearn.problems.tsp import (
TravelingSalesmanGenerator,
TravelingSalesmanPerturber,
build_tsp_model_gurobipy,
build_tsp_model_pyomo,
)
@@ -16,12 +17,19 @@ gen = TravelingSalesmanGenerator(
x=uniform(loc=0.0, scale=1000.0),
y=uniform(loc=0.0, scale=1000.0),
n=randint(low=20, high=21),
gamma=uniform(loc=1.0, scale=0.25),
fix_cities=True,
gamma=uniform(loc=1.0, scale=0.0),
round=True,
)
data = gen.generate(3)
# Generate a reference instance with fixed cities
reference_instance = gen.generate(1)[0]
# Generate perturbed instances with same cities but different distance scaling
perturber = TravelingSalesmanPerturber(
gamma=uniform(loc=1.0, scale=0.25),
round=True,
)
data = perturber.perturb(reference_instance, 3)
params = {"seed": 42, "threads": 1}