Contexte
Le problème des vendeurs ambulants (TSP) demande le circuit le plus court qui visite une collection donnée de villes. Aux fins de cette question, les villes seront des points dans le plan et les distances entre elles seront les distances euclidiennes habituelles (arrondies à l'entier le plus proche). Le circuit doit être "aller-retour", c'est-à-dire qu'il doit retourner dans la ville de départ.
Le solveur Concorde TSP peut résoudre les cas du problème des vendeurs itinérants euclidiens, exactement et beaucoup plus rapidement que ce à quoi on pourrait s'attendre. Par exemple, Concorde a pu résoudre une instance de 85 900 points exactement, dont certaines parties ressemblent à ceci:
Cependant, certaines instances TSP prennent trop de temps, même pour Concorde. Par exemple, personne n'a pu résoudre cette instance de 100 000 points basée sur la Joconde . (Il y a un prix de 1000 $ offert si vous pouvez le résoudre!)
Concorde est disponible en téléchargement sous forme de code source ou d'exécutable. Par défaut, il utilise le solveur de programme linéaire (LP) intégré QSopt , mais il peut également utiliser de meilleurs solveurs LP comme CPLEX.
Le défi
Quelle est la plus petite instance TSP que vous pouvez générer et qui met Concorde plus de cinq minutes à résoudre?
Vous pouvez écrire un programme pour sortir l'instance, ou utiliser toute autre méthode que vous souhaitez.
Notation
Moins il y a de points dans l'instance, mieux c'est. Les liens seront rompus par la taille du fichier de l'instance (voir ci-dessous).
Standardisation
Différents ordinateurs fonctionnent plus rapidement ou plus lentement, nous allons donc utiliser le serveur NEOS pour Concorde comme standard de mesure pour l'exécution. Vous pouvez soumettre une liste de points sous la forme de coordonnées 2D simple suivante:
#cities
x_0 y_0
x_1 y_1
.
.
.
x_n-1 y_n-1
Les paramètres qui doivent être utilisés sur NEOS sont "Données Concorde (fichier xy-list, norme L2)", "Algorithme: Concorde (QSopt)" et "Graine aléatoire: fixe".
Référence
L'instance rl1889.tsp
de 1 889 points de TSPLIB prend "Total Running Time: 871.18 (seconds)", soit plus de cinq minutes. Cela ressemble à ceci: