[PYTHON] Lösen Sie das Problem des Handlungsreisenden mit OR-Tools

Was ist das

Ich habe versucht, "Lösen des Problems mit reisenden Verkäufern mit Watson" mit OR-Tools zu lösen.

Was ist OR-Tools?

Eine kostenlose Operations Research-bezogene Bibliothek, die von Google erstellt wurde. Mit OR-Tools, Problem bei der Lieferoptimierung und Circuit Salesman Problem Kann gelöst werden.

Referenz: https://developers.google.com/optimization/routing

Versuche es zu lösen

Wenn es so bleibt, wie es ist, wird es ein wenig mühsam sein, also werde ich den Wrapper von ortoolpy verwenden.

import pandas as pd
import matplotlib.pyplot as plt
from scipy.spatial import distance
from more_itertools import pairwise
from ortoolpy import ortools_vrp

url = 'https://raw.githubusercontent.com/makaishi2/sample-data/master/data/att48.csv'
df = pd.read_csv(url)[:30]  #Bilden Sie 30 Städte gemäß dem ursprünglichen Artikel
dist = distance.cdist(df.values, df.values).astype(int)
route = ortools_vrp(len(df), dist, limit_time=1)[0]
plt.figure(figsize=(6, 6))
plt.plot(df.x[route], df.y[route], 'bo-');

image.png

Mit einer Berechnungszeit von 1 Sekunde wurde das gleiche Ergebnis wie beim Originalartikel erzielt (die Berechnungszeit für den Originalartikel betrug 226 Sekunden).

Ergänzung

Der OR-Tools-Algorithmus ist eine ungefähre Lösung. Wenn Sie nicht limit_time = 1 hinzufügen, erhalten Sie sofort eine Lösung, aber die Genauigkeit ist etwas schlecht. Durch Einstellen der Berechnungszeit auf 1 Sekunde wird daher dieselbe exakte Lösung wie beim Originalartikel erhalten.

Recommended Posts

Lösen Sie das Problem des Handlungsreisenden mit OR-Tools
Über das Problem der reisenden Verkäufer
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Theorie)
Über das bestellte Patrouillenverkäuferproblem
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Ausführungsergebnis)
Lösen Sie das asymmetrische Python-Problem für reisende Verkäufer mit der Branch-and-Bound-Methode
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Lösen Sie das Monty Hall-Problem
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Lösung des Problems des Handlungsreisenden mit dem genetischen Algorithmus (GA) und seiner Bibliothek (vcopt)
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Brennmethode und Problem mit reisenden Verkäufern
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Lösung des Anfangswertproblems gewöhnlicher Differentialgleichungen mit JModelica
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
Lösen Sie Teilsummenprobleme mit der vollständigen Suche in Python
Ich habe versucht, "einen genetischen Algorithmus (GA) in Python zu implementieren, um das Problem des Handlungsreisenden (TSP) zu lösen".
Eine Geschichte, in der der Algorithmus zu einem lächerlichen Ergebnis kam, als er versuchte, das Problem der reisenden Verkäufer richtig zu lösen
Lösen Sie das Problem der parabolischen Minimierung mit OpenMDAO
Ich habe Paizas Kampagnenproblem ausprobiert. (Rundschreiben Verkäufer Problem)
Lösen wir das Portfolio mit kontinuierlicher Optimierung
So lösen Sie das Problem beim Verpacken des Behälters
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Lösen Sie das maximale Subarray-Problem in Python
Das 16. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Das 19. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Versuchen Sie, das Problem der Python-Klassenvererbung zu lösen
Lösen Sie Rucksackprobleme mit pyomo und glpk
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Lösen des N Queen-Problems mit kontinuierlicher / kombinierter Optimierung
Lösen des N Queen-Problems mit Kombinationsoptimierung
[Bei Coder] Lösen Sie das Problem der Dichotomie
Lösen Sie das Python-Rucksackproblem mit dem Greedy-Algorithmus
Ich habe versucht, das Problem der Optimierung der Platzierung virtueller Maschinen (einfache Version) mit blueqat zu lösen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Ich habe versucht, Soma Cube mit Python zu lösen
Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python
Lösen des Irisproblems mit scikit-learn ver1.0 (logistische Regression)
Löse AtCoder 167 mit Python
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Löse Mathe mit Python
Löse Mathe mit PuLP
Untersuchen Sie das doppelte Problem
Löse POJ 2386 mit Python
Lösen Sie die Maskenberechnung
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen
Suche nach einer Lösung für das N-Queen-Problem mit einem genetischen Algorithmus (2)
Ich habe versucht, das Problem der Kombinationsoptimierung mit Qiskit zu lösen
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Lösen Sie mathematische Optimierungsmodellübungen mit den OR-Tools von Google (4) Lösen Sie Zahlenstellen
Eine Geschichte über den Umgang mit dem CORS-Problem
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Das Problem wird je nach Formulierungsmethode leichter zu lösen