From 3b5391d9146e3816cd15623311e6f5de4c43bd29 Mon Sep 17 00:00:00 2001 From: Marius Merschformann Date: Tue, 21 Apr 2026 00:24:31 +0200 Subject: [PATCH 1/2] Upgrading to latest pyvroom, using timeout --- python-pyvroom-routing/main.py | 16 ++++++++++++---- python-pyvroom-routing/requirements.txt | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/python-pyvroom-routing/main.py b/python-pyvroom-routing/main.py index 6ae31bf5..67094583 100644 --- a/python-pyvroom-routing/main.py +++ b/python-pyvroom-routing/main.py @@ -46,9 +46,15 @@ def solve(self, input: nextmv.Input) -> nextmv.Output: nextmv.redirect_stdout() # Solver chatter is logged to stderr. input.options.solver = "vroom" input.options.version = version("pyvroom") - - # TODO: use duration to limit the runtime of the solver - _ = input.options.duration + if input.options.duration is not None and isinstance(input.options.duration, numbers.Number): + if input.options.duration <= 0: + timeout = None # No timeout if duration is 0 or negative. + else: + timeout = timedelta(seconds=input.options.duration) + elif input.options.duration is None: + timeout = None + else: + raise ValueError(f"Invalid duration option {input.options.duration}.") # Prepare data. speed_factors = [v["speed_factor"] if "speed_factor" in v else 1 for v in input.data["vehicles"]] @@ -97,7 +103,9 @@ def solve(self, input: nextmv.Input) -> nextmv.Output: # Solve the problem. solution = problem_instance.solve( - exploration_level=input.options.exploration_level, nb_threads=input.options.threads + exploration_level=input.options.exploration_level, + nb_threads=input.options.threads, + timeout=timeout, ) solve_end_time = time.time() diff --git a/python-pyvroom-routing/requirements.txt b/python-pyvroom-routing/requirements.txt index d5794228..63961d64 100644 --- a/python-pyvroom-routing/requirements.txt +++ b/python-pyvroom-routing/requirements.txt @@ -1,2 +1,2 @@ -pyvroom==1.15.0 +pyvroom==1.15.1 nextmv==1.6.2 From 812d07ec3222f4c7619a0a64fc7741c59924bdf4 Mon Sep 17 00:00:00 2001 From: Marius Merschformann Date: Tue, 21 Apr 2026 00:26:55 +0200 Subject: [PATCH 2/2] Aligning expectations --- .../python-pyvroom-routing/inputs/both-matrices.json.golden | 2 +- .../python-pyvroom-routing/inputs/distance-matrix.json.golden | 2 +- .../python-pyvroom-routing/inputs/max-duration.json.golden | 2 +- .../golden/python-pyvroom-routing/inputs/no-matrix.json.golden | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.nextmv/golden/python-pyvroom-routing/inputs/both-matrices.json.golden b/.nextmv/golden/python-pyvroom-routing/inputs/both-matrices.json.golden index c90b24f6..2b2d9cf8 100644 --- a/.nextmv/golden/python-pyvroom-routing/inputs/both-matrices.json.golden +++ b/.nextmv/golden/python-pyvroom-routing/inputs/both-matrices.json.golden @@ -8,7 +8,7 @@ "exploration_level": 4, "solver": "vroom", "threads": 6, - "version": "1.15.0" + "version": "1.15.1" }, "solution": { "unplanned": [], diff --git a/.nextmv/golden/python-pyvroom-routing/inputs/distance-matrix.json.golden b/.nextmv/golden/python-pyvroom-routing/inputs/distance-matrix.json.golden index c4e69f06..1b650fc5 100644 --- a/.nextmv/golden/python-pyvroom-routing/inputs/distance-matrix.json.golden +++ b/.nextmv/golden/python-pyvroom-routing/inputs/distance-matrix.json.golden @@ -8,7 +8,7 @@ "exploration_level": 4, "solver": "vroom", "threads": 6, - "version": "1.15.0" + "version": "1.15.1" }, "solution": { "unplanned": [], diff --git a/.nextmv/golden/python-pyvroom-routing/inputs/max-duration.json.golden b/.nextmv/golden/python-pyvroom-routing/inputs/max-duration.json.golden index 3fb51a41..86a0f8a4 100644 --- a/.nextmv/golden/python-pyvroom-routing/inputs/max-duration.json.golden +++ b/.nextmv/golden/python-pyvroom-routing/inputs/max-duration.json.golden @@ -8,7 +8,7 @@ "exploration_level": 4, "solver": "vroom", "threads": 6, - "version": "1.15.0" + "version": "1.15.1" }, "solution": { "unplanned": [ diff --git a/.nextmv/golden/python-pyvroom-routing/inputs/no-matrix.json.golden b/.nextmv/golden/python-pyvroom-routing/inputs/no-matrix.json.golden index cbd4ff6d..536c6f6f 100644 --- a/.nextmv/golden/python-pyvroom-routing/inputs/no-matrix.json.golden +++ b/.nextmv/golden/python-pyvroom-routing/inputs/no-matrix.json.golden @@ -8,7 +8,7 @@ "exploration_level": 4, "solver": "vroom", "threads": 6, - "version": "1.15.0" + "version": "1.15.1" }, "solution": { "unplanned": [],