python-tsp icon indicating copy to clipboard operation
python-tsp copied to clipboard

solve_tsp_record_to_record reachers Infinite loop with a simple example

Open yang-tsao opened this issue 1 year ago • 2 comments

When I try to run the following code, it just keeps running and won't give me a result.

from python_tsp.heuristics import solve_tsp_record_to_record
import numpy as np

dis = np.array([[0, 1], [1, 0]])
[order, dist] = solve_tsp_record_to_record(dis)
print(order)
print(dist)

yang-tsao avatar Apr 02 '24 08:04 yang-tsao

Hey, @yang-tsao , thanks for reporting it.

The bug actually happens in the solve_tsp_lin_kernighan solver, which the Record to Record uses as internal solver.

I opened a draft pull request with a test replicating the problem, and I'll leave the fix for @luanleonardo.

Since this is a veeery corner case (a TSP with only two nodes), if he cannot take it I'll just put an early return.

fillipe-gsm avatar Apr 05 '24 11:04 fillipe-gsm

@yang-tsao @fillipe-gsm, the Lin-Kernighan heuristic assumes the existence of at least 4 nodes (named a, b, c, d) that play important roles in defining the neighborhood of a solution. If the problem is small, with less than 4 nodes, the heuristic does not apply.

luanleonardo avatar Apr 08 '24 16:04 luanleonardo

Sorry for the long delay, but the issue should be fixed now in version 0.4.2.

Thanks for reporting it.

fillipe-gsm avatar Jul 12 '24 14:07 fillipe-gsm