You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
from os.path import dirname
|
|
|
|
import numpy as np
|
|
from scipy.stats import uniform, randint
|
|
|
|
from miplearn.collectors.basic import BasicCollector
|
|
from miplearn.io import write_pkl_gz
|
|
from miplearn.problems.tsp import (
|
|
TravelingSalesmanGenerator,
|
|
build_tsp_model_gurobipy,
|
|
build_tsp_model_pyomo,
|
|
)
|
|
|
|
np.random.seed(42)
|
|
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,
|
|
round=True,
|
|
)
|
|
|
|
data = gen.generate(3)
|
|
|
|
params = {"seed": 42, "threads": 1}
|
|
|
|
# Gurobipy
|
|
data_filenames = write_pkl_gz(data, dirname(__file__), prefix="tsp-gp-n20-")
|
|
collector = BasicCollector()
|
|
collector.collect(
|
|
data_filenames,
|
|
lambda d: build_tsp_model_gurobipy(d, params=params),
|
|
progress=True,
|
|
verbose=True,
|
|
)
|
|
|
|
# Pyomo
|
|
data_filenames = write_pkl_gz(data, dirname(__file__), prefix="tsp-pyo-n20-")
|
|
collector = BasicCollector()
|
|
collector.collect(
|
|
data_filenames,
|
|
lambda d: build_tsp_model_pyomo(d, params=params),
|
|
progress=True,
|
|
verbose=True,
|
|
)
|