Yandex.Routing: Wie wir in die Logistik eingestiegen sind und beschlossen haben, die Zukunft zu verändern

Dieser Text entstand aufgrund des zufälligen Kaffeespaßes in Yandex - das System vereinbart einen Termin für zwei zufällige Mitarbeiter, wenn diese angeben, dass sie an solchen Besprechungen teilnehmen möchten. Meine Gesprächspartner fanden die Geschichte über das, was ich tat, interessant, und jetzt konnte ich sie einem breiteren Publikum anbieten.

Vor Habr hielt ich einen Gastvortrag an der Fakultät für Informatik von HSE und Yandex - ich erzählte den Studenten des FCS genau dasselbe, worüber ich Ihnen jetzt erzählen werde (am Ende des Beitrags gibt es ein Video) Wie das Reisen mit Fahrern, die Bestellungen aus Online-Shops liefern, unser Team davon überzeugt hat, einen neuen Service für die Logistik zu entwickeln. Ich hoffe, ich kann es schaffen, Ihnen meine Gefühle aus diesem Bereich zu vermitteln: Ich reiste nach Gazellen und Largus, hörte Beschwerden von Mitarbeitern über die wählerische „Tante aus Noginsk“ zu und sah, wie aus einer Bestellung von drei Rollern für drei Kinder ein Drama wurde . Und am Ende sprechen wir über Technologie.

Teil 1. Wie alles begann


Als ich vor einigen Jahren im Büro herumlief und darüber nachdachte, ob es Zeit für mich ist, etwas in meinem Leben zu ändern, stieß ich fast versehentlich auf einen Korridor mit einem Kollegen, den ich bei einem meiner früheren Projekte sehr respektierte. Es stellte sich heraus, dass er zu einem internen Startup gewechselt ist und sie nur einen Analysten suchen. Also bin ich in einer Abteilung namens B2BGeo gelandet. Diese kleine Gruppe sollte zu dieser Zeit etwas für Unternehmen tun, die auf Yandex-Geodiensten basieren - nur niemand wusste, welche. In der Vergangenheit haben Geoservice-Mitarbeiter mobile Desktop-Anwendungen für Yandex.Maps, Maps, Navigator und Metro erstellt. Außerdem umfasst dieses Gerät eine beeindruckende Infrastruktur: Entwicklung einer Routing-Engine, eines Kartendienstes, Erkennung von Verkehrszeichen, Extraktion von Daten aus Satellitenbildern und vieles mehr. Sowohl Webkarten als auch Yandex.Navigator sind Anwendungen,bestimmt für den Massenbenutzer. Von den Diensten für Unternehmen hatten wir nur eine Reihe von Mapping-APIs: ein JS-Map-Widget für Sites, MapKit für Anwendungen und eine REST-API zum Erstellen von Routen.

Bevor das B2BGeo-Team anfing, Produkte für Unternehmen zu verkaufen, musste es sich diese Produkte einfallen lassen. Wir haben einige Zeit mit Marktforschung und Prototyping verbracht. Die Prototypen waren interessant, zum Beispiel eine Karte der Qualität eines zellularen Signals in Gebäuden. Dann nutzten die Mobilfunkbetreiber nicht die riesigen Datenmengen, die sie hatten, sondern maßen die Qualität hauptsächlich auf der Straße und auf eher primitive Weise. Ein weiteres Beispiel für einen Prototyp ist ein universell anpassbarer Router mit maschinellem Lernen. Übrigens, im Folgenden als Router und Router bezeichnet, handelt es sich nicht um Netzwerkgeräte, sondern um ein Programm zum Erstellen von Routen.

Einige Prototypen sind nicht gestartet, andere wären nicht an einer ausreichenden Anzahl von Unternehmen interessiert. Es wurde etwas Größeres benötigt. In Zukunft wird es die Welt umdrehen und neue Horizonte eröffnen, und zunächst wird es durch Geotechnologien erhebliche Vorteile bringen. Wir hatten eine strategische Sitzung: Wir verließen das Büro und überlegten zwei Tage lang. Basierend auf den Ergebnissen der Sitzung haben wir eine Branche identifiziert, in der für uns ausreichende Perspektiven bestehen. Unsere Wahl fiel auf die Logistik.

In Russland transportieren viele Nutzfahrzeuge, viele Transport- und Kurierunternehmen irgendwo etwas. Und alle machen ihre Routen höchstwahrscheinlich entweder manuell oder mit Hilfe von Programmen, die wahrscheinlich nicht sehr gut funktionieren, weil sie Staus nicht berücksichtigen. Und hinter uns gab es einen ganzen Yandex mit viel Hardware, nur wenige Unternehmen (nur ein seltenes Beispiel - Google) hatten Beispieldaten und gute Programmierer. Kompetenzen in diesem Bereich sind selten und wertvoll: Uber hat irgendwann ein ganzes Kartografieteam aufgekauft .

Von dieser Aussicht ermutigt, haben wir uns mit einem der Lieferaggregatoren (einem Unternehmen, das Bestellungen verschiedener Online-Shops vertreibt) einverstanden erklärt, damit wir ihre Arbeit von innen nach außen betrachten und "in die Branche eintauchen" können. Die Mitglieder unseres kleinen Teams reisten mit Kurieren, die Bestellungen auslieferten, und setzten sich neben den Logistiker, der die Routen plant.

Teil 2. Eintauchen in die Industrie


8 Uhr morgens, eine der Industriezonen hinter der dritten Ringstraße, in der sich das Lager und das Büro des Aggregators befinden. Ein kleiner Raum, der an die Post erinnert: Die Ecke ist mit einem Schreibtisch eingezäunt - innen Logistikcomputer, Telefone, Drucker. Fettige Stühle und Computerstühle mit rissigem Dermantin. Eine Schachtel mit billigen chinesischen Telefonen, auf die jeweils ein Papier mit einer Nummer geklebt ist - sie werden den Fahrern ausgehändigt. Es gibt einfache Sofas-Bankette an den Wänden, einen Stand mit Ausdrucken am Ausgang: Transportregeln, eine Art interne Anweisungen, eine Geldstrafentabelle - zum Beispiel werden dem Fahrer 200-300 Rubel für eine nicht zugestellte Bestellung abgenommen. Der Aggregator hat auch ein normales Büro, in dem der Direktor, die Manager und die Buchhaltung an schönen Tischen sitzen, aber die wichtigsten Ereignisse für uns finden in diesem kleinen Raum statt.



Die Fahrer rauchen draußen, aber dort ist es kühl, die meisten sind drinnen, daher ist es im Raum voll und stickig. Mat-Remat auf drei Etagen, viele düster am Morgen, jemand möchte seine Rechnungen packen und zum Laden gehen lassen, jemand hat ein Problem, er ist unglücklich. Die Situation ist angespannt, es gibt zwei Logistiker, und sie sind in der Seife. Uns wird gesagt, dass dies ein normaler Tag ist, nur am Morgen, wenn wir zu Routen aufbrechen, gibt es immer einen Park. Nachts, als die Planung weiterging, gab es auch ein Ertrinken, irgendwo in einer Stunde wird die Spannung abnehmen und der Logistiker wird sich ausruhen können.

Mehrere Fahrer erfahren, dass Yandex mit Ihnen fahren wird. Sie sind überrascht und nicht besonders zufrieden - es ist nicht klar, warum sie so glücklich sind und ob sie uns veranlasst haben, ihnen zu folgen. Wir, Büroangestellte , IT-Mitarbeiter mit Rucksäcken, stehen in starkem Kontrast zu diesen düsteren Männern.

Ich habe die Gazelle, sie hat einen Fahrer und einen Spediteur, ich setze mich mit einem Rucksack in den Armen auf den dritten Platz und versuche, nicht zu viel Platz einzunehmen. Bestellungen sind bereits in den Körper geladen, wir fangen an.



Später erfuhr ich, dass dies normalerweise der Abfahrt von Autos auf der Strecke vorausgeht.

Angenommen, heute ist Mittwoch. Sie bestellen einen Kühlschrank auf einer kleinen Website, die Sie auf Yandex.Market gefunden haben. Dieser Shop bietet den besten Preis und angemessene Bewertungen. Die Lieferung ist nur am Freitag möglich, es passt zu Ihnen. Die Site ist eigentlich nur ein Schaufenster. Bei sehr kleinen Sites kann der Manager, der die Bestellung bestätigt hat, im Allgemeinen der einzige Mitarbeiter sein. Ihr Kühlschrank befindet sich zusammen mit anderen Kühlschränken desselben Unternehmens in einem Lager in der Nähe von Podolsk (ein kleines Geschäft hat kein eigenes Lager - der Verkauf erfolgt tatsächlich aus dem Lager des Herstellers). Der Manager reserviert diesen Kühlschrank und sendet die Bestellung an den Lieferaggregator. Am Mittwoch sammelt der Aggregator Bestellungen und schickt am Donnerstag einen großen LKW nach Podolsk für Ihre und andere Kühlschränke, die in anderen Geschäften bestellt wurden.All dies kommt zu dem vom Aggregator gemieteten Lager in der Moskauer Industriezone.

Am Donnerstagabend, wenn alle am Freitag zu liefernden Waren im Lager abgeholt werden, setzen sich Logistiker zur Arbeit. Um 4-5 Uhr morgens sollten sie Bestellungen maschinell verteilen, Lagerarbeiter legen die Waren auf Haufen, jede Maschine hat ihren eigenen Haufen - Sie müssen ihnen einen Zeitrahmen für diese Arbeit lassen. Ein Haufen wird in das Auto geladen und wird den Kunden gefallen.




Um Bestellungen maschinell zu verteilen, verwendet der Logistiker ein speziell erworbenes Programm. Es lässt sich in 1C: Enterprise integrieren, Daten zu Maschinen (zulässiges Gewicht und zulässiges Frachtvolumen, Kosten eines Arbeitstages) und zu Waren (Gewicht, Volumen, Adresse und Lieferintervall, Kundenkontakte, Kommentare) werden geladen. Einige der Autos gehören dem Aggregator, dieser hatte Absätze (Lada Largus) und Gazellen (Gazelle / Ford Transit / Hyundai Porter). Es gab auch gemietete Kuriere für Privatfahrzeuge, normalerweise für Kombis (wir sahen Ford Focus, Mitsubishi Pajero und sogar einige alte Lexus).

Das Programm wurde von guten Programmierern geschrieben. Es weiß, wie man Lasten auf Autos verteilt und die optimale Route (nach Zeit oder Kilometerstand) erstellt, um Bestellungen zu vermeiden, wenn eine Reihe von Parametern gegeben sind. Der Logistiker nutzt diese Funktionalität jedoch in keiner Weise. Aber er nutzt aktiv die Visualisierung von Bestellungen auf der Karte. Mit dem Programm können Sie Polygonbereiche auf der Karte zeichnen und Statistiken über Fracht und Routen innerhalb dieser Bereiche anzeigen. Logistiker teilten ganz Moskau und die Region Moskau bis zum großen Beton (Autobahn A108) in Zonen dieser Art ein:



In der Mitte gibt es einige kleine Gebiete, und dann beginnen radiale Sektoren, die entlang der Hauptautobahnen verlaufen und die Region umfassen.

In jeder dieser Zonen arbeiten bestimmte Fahrer, die normalerweise damit vertraut sind, die Straßen, die Merkmale des Verkehrs kennen, wissen, wo sich die Verkehrspolizisten befinden, welche Einschränkungen und Zeichen für Lastwagen gelten. Der Logistiker wiederum weiß, wie viele Aufträge die Besatzung ausführen kann. Er gibt mehr Erfahrung unter 30 Aufträgen und für diejenigen, die vor kurzem angefangen haben zu arbeiten, 20-25 Aufträge. Er sieht sich an, wie viele Bestellungen sich in einem bestimmten Bereich befinden, und wenn es zu viele gibt, wirft er sie zum nächsten. Oder fügt von einem Nachbarn hinzu: Nehmen wir an, der Logistiker ist mit einigen Fahrern befreundet und gibt ihnen „leichte“ Befehle, die wahrscheinlich unterwegs sind. Und der ungeliebte Fahrer kann nerven. Um beispielsweise eine Bestellung für einen Kunden zu werfen, von dem im Voraus bekannt ist, dass er wählerisch ist, muss er genau zum angegebenen Zeitpunkt geliefert werden, druckt alle Waren und prüft sie für eine lange Zeit. Außerdem,Der Logistiker kann dem Fahrer einfach weniger Bestellungen erteilen: Für jede Bestellung erhält der Fahrer 200 Rubel, er ist an mehr interessiert.

Die Möglichkeit, Routen im Programm zu planen, wird vollständig ignoriert. Diese Möglichkeit ist in einem solchen System nicht sinnvoll: Wenn der Logistiker dem Fahrer sagt, wie er die Bestellungen umgehen muss, antwortet ihm der Fahrer: "Sie sitzen dort im Büro, und ich bin in diesem Bereich wie meine Westentasche." Der Logistiker vergibt also nur Bestellungen für das Auto, die Aufgabe für den Fahrer besteht aus einem Stapel im Lager und einem Stapel gedruckter Rechnungen.

Also zurück zur Gazelle. Unsere Region ist die Autobahn der Enthusiasten und weiter in Richtung Noginsk wird es ungefähr 15 Bestellungen für die Moskauer Ringstraße geben, ich werde dorthin gehen. Der Fahrer fährt zum dritten Transportring. Zu diesem Zeitpunkt nimmt der Spediteur ein Rechnungspaket entgegen und überweist es in der richtigen Reihenfolge. Die richtige Reihenfolge ist folgende:

- Zuerst fahren wir auf der Enthusiasts-Autobahn in Richtung Moskauer Ringstraße und nehmen alle Bestellungen auf der rechten Seite entgegen. Wir nehmen es nicht immer links, es kann zu Staus kommen, wenn Sie die Autobahn überqueren. Es ist besser, sie abends zu nehmen. Dann fahren wir in die Region und bringen sie dorthin. Am Abend werden wir zurückgehen und den Rest tragen.
- Aber zum Beispiel die erste Bestellung im Stapel - mit dem Wunsch „nach 14 Stunden“? Lass es für den Abend?
- Es ist für den Abend möglich, aber es ist besser zu versuchen, zuzustimmen, es jetzt zu geben.

Der Verhandlungsprozess wurde sofort demonstriert. Um 9:30 Uhr rief der Spediteur nach 14 Stunden die telefonische Bestellung an:

- Hallo, Lieferung, wir sind bereits in Ihrer Nähe. Können Sie die Bestellung annehmen? Wir werden nach Ihrer Region in die Region gehen und erst vor dem Abend hierher zurückkehren. Vielleicht kehren wir nach neun zurück oder bleiben komplett in der Region. Dies ist ein unvorhersehbares Geschäft. Möglicherweise müssen wir die Lieferung am nächsten Tag verschieben. Dann kommen wir in 15 Minuten an.

Damals wurde mir klar, woher die Kuriere kommen, die sagen: "Hallo, ich bin schon bei dir!" - und ignoriere meine Kommentare und Lieferintervalle komplett!

Kollegen, die in anderen Autos fuhren, sagten mir, dass jemand einen Fahrer oder Spediteur hatte, der den Kunden eine Stunde vor der Lieferung ehrlich anrief. Meine waren nicht sehr kontaktfreudig, sie riefen etwa fünfzehn Minuten an, sprachen die Kommentare der Kunden laut aus. Einfache Wünsche („Rufen Sie nicht die Gegensprechanlage an, das Kind schläft“) wurden berücksichtigt, aber alles, was die Route beeinflusste, wurde normalerweise ignoriert. Der Spediteur verschob die Rechnungen und fischte einen Befehl aus, der in ein Dorf wenige Kilometer von Noginsk entfernt gebracht werden musste.

- Oh, diese Tante schon wieder. Erinnerst du dich, sie hatte einen Befehl und dann eine Rückkehr zur Ehe? Nun eine neue Bestellung.
- Ja, hebe die Waschmaschine wieder an. Ein weiteres interessantes ist: "Bitte liefern Sie von 12 bis 16". Wie stellt sie sich das vor?
- Ja, im Allgemeinen verstehen sie nicht, was sie schreiben.Ich denke schon: Wenn Sie eine Waschmaschine in Noginsk bestellen, dann sitzen Sie da und warten Sie ruhig, bis sie gebracht wird. Entweder irgendwie mit den Nachbarn einverstanden sein oder sich von der Arbeit verabschieden. Wir können nicht jeden Tag zu ihr nach Noginsk gehen.

Ich stieg in der Nähe der Moskauer Ringstraße aus, und der Fahrer fuhr mit der Gazelle weiter den Gorki-Highway entlang. Tatsächlich sind sie keine bösen Jungs, und trotz der Begeisterung gegen Kunden (es waren mindestens zwei Drittel aller Gespräche) hätten sie es höchstwahrscheinlich geschafft, die Waschmaschine an 16 zu liefern. Wenn sie es nicht getan hätten, hätten sie sich nicht einmal darum gekümmert.

Meine zweite Reise fand in einem kleineren Auto statt: Die Fracht Largus fuhr durch den nordwestlichen Verwaltungsbezirk. Die Ladung war klein, keine Kühlschränke, also war der Fahrer allein. Onkel wurde kontaktfreudig, wir haben viel über ihn gesprochen. Er sagte, dass er im Allgemeinen ein Meister des Wrestlingsports ist, als Trainer arbeitet, aber jetzt ist alles taub, so dass er als Kurier im Mondlicht steht. Das Geld ist klein, aber der Anstieg ist angenehm: Pro Tag werden etwa 2.000 erhalten. Es ist einfach, Bestellungen zu liefern, es funktioniert, wenn es will. Natürlich gibt es Nuancen: Sie stoßen auf unangenehme Kunden, Sie müssen eingelagerte Sandwiches im Auto essen, Sie haben es eilig, Sie gehen nicht einmal auf die Toilette, Sie müssen Kunden fragen. Aber im Großen und Ganzen ist er ziemlich wohlhabend, für ihn ist es eher Unterhaltung.

Es ist lustig: Kollegen, insbesondere Mädchen, Mitarbeiter des Lieferservices erzählten auch Geschichten, dass „der Kurier nicht die Hauptaufgabe ist, sondern nur für die Seele“, „Im Allgemeinen gehe ich normalerweise in ein Behhe“ usw.

Ich erinnere mich daran, dass in der Gegend von Rublevka oder Krylatsky so ein Gespräch:

- Einmal in der Stadt brachte er einen Auftrag, dort haben sie Wohnungen in einem Wolkenkratzer, die Korridore sind alle aus Marmor, ich gehe in die Wohnung - Teppiche, Gemälde in goldenen Rahmen, einige Pelzmäntel hängen, was einfach nicht da ist. Eine Bestellung für 5800, also bat er um eine Änderung von 200 Rubel, hochzählen ?!
- Vielleicht hat er Pelzmäntel und Gemälde, gerade weil er sogar 200 Rubel spart.

Nach meinen Worten dachte der Fahrer nach. Und eine Stunde später kamen wir in Schukino an und ich „verstand alles“ über dieses Geschäft.

Im nächsten Overhead-Stift wurde vermerkt, dass nicht alles in Ordnung mit der Bestellung war: Von drei gekauften Kinderrollern mit einem Gesamtwert von 20.000 Rubel befanden sich nur zwei im Auto. Der Fahrer rief den Logistiker an. Es stellte sich heraus, dass die Frau am Montag drei Roller bestellt hatte, aber gestern, Mittwoch, wurde der dritte Roller fälschlicherweise in das falsche Auto gesetzt. Und es war ein Privatwagen, aus irgendeinem Grund kehrte er abends nicht ins Lager zurück, wie es die "normalen" Fahrer tun, und der Roller fährt immer noch damit. Wir könnten versuchen, ihn abzufangen, aber heute geht er seinem Geschäft nach, es ist unmöglich zu überqueren. Das nächste Mal wird er morgen (Freitag) arbeiten, aber das ist nicht korrekt. Es ist garantiert, dass alle drei Roller wieder vereint werden und alle auf einmal genommen werden. Dies ist nur am Samstag möglich.

Mit diesen Informationen hat der Fahrer den Client angerufen. Es gab eine sehr unzufriedene Frau. Sie sagte: Am Samstag um 10 Uhr haben sie einen Familienurlaub, in dem sie ihren drei Kindern Motorroller geben wollten. Deshalb braucht sie sie unbedingt in Höhe von drei Stück, sie stimmt einer teilweisen Einlösung nicht zu und versteht nicht, wie es überhaupt möglich ist - sie hat die Bestellung am Montag aufgegeben, und jetzt ersetzen wir, der Rollerladen, sie so. Die Lieferung am Samstag auf unbestimmte Zeit passt nicht zu ihr. Morgen ist sie vor dem Abendessen zu Hause. Wenn Sie heute oder morgen früh nicht können, storniert sie die Bestellung und verflucht den Laden bis zum dritten Knie (und Sie können es verstehen).

Teil 3. Lokales Minimum


Das Geschäft kauft einen Bestelldienst von einem Kurierunternehmen. Für nicht gelieferte Roller wird er eine Kurierfirma für 500 Rubel bestrafen. Das Unternehmen wird seinen Ladenbesitzer und Fahrer, der den Roller nicht rechtzeitig zurückgebracht hat, um 200-300 Rubel bestrafen. Eine verärgerte Frau wird ihre 20.000 in ein agileres Geschäft geben, und ein Stern auf Yandex.Market wird dies schlagen. Das Geschäft kann den besten Service bieten, aber die "letzte Meile" wird von düsteren Männern in Gazellen und Largus ausgeführt. Wenn sie sich schlecht gegenüber Kunden verhalten, kann das Geschäft dies nicht beeinflussen.

Gleichzeitig sucht das Geschäft normalerweise nach der Lieferung mit den niedrigsten Kosten - in dem Sinne, dass Fahrer, die noch weniger bezahlen, als Taxifahrer oder woanders arbeiten gehen. Fahrer optimieren ihre täglichen Einnahmen - Sie müssen mehr Bestellungen führen und müssen keine Geldstrafe zahlen. Wenn wir eine globale Kostenfunktion zusammenstellen, die das System als Ganzes beschreibt, entspricht dieser Status der Funktion wahrscheinlich ihrem lokalen Minimum, dem „potenziellen Brunnen“.



In dieser Grube gibt es eindeutig große systemische Probleme. Zunächst wurde die schwierigste Arbeit an den ungelernten Mitarbeiter übergeben: Der Fahrer steuert die Maschine, plant die Route und kommuniziert mit dem Kunden. Er trägt auch Geld. Er verfügt über zusätzliche Fähigkeiten und Spezialisierungen - zum Beispiel die Fähigkeit, 30 Bestellungen pro Tag in einem bestimmten Bereich zu liefern. Es stellt sich heraus, dass das Unternehmen unerfahrene und erfahrene Fahrer ausbilden muss, um nicht zu verlieren, da sie (leider für das Unternehmen) schwer zu ersetzen sind.

Zweitens ist der Lieferprozess völlig unvorhersehbar. Der Kunde weiß nicht, wann er zu ihm kommt. Dem Kunden werden normalerweise große Lieferfenster angeboten - vier, sechs Stunden oder mehr. Dies schafft große Unannehmlichkeiten für ihn: Es ist nicht immer möglich, sechs Stunden an einem Ort zu sitzen. Und selbst Fahrer können nicht immer in diese Fenster gelangen. Die Möglichkeit, schmalere Fenster für Kunden bequemer zu gestalten (zwei Stunden oder besser eine Stunde), ist nur für große Unternehmen möglich, die stärker drängen und aus einem potenziellen Loch in einen optimaleren Zustand springen konnten. Wir sprechen von Unternehmen mit eigener Lieferung und Kurieren. "Eigene" Kuriere wären für alle Unternehmen nützlich: Auf diese Weise können Sie die Qualität ihrer Arbeit kontrollieren und sogar eine Art Upsale durchführen (wenn der Kurier einer Person etwas zum Kaufen auf Bestellung anbietet).Ein Kurierpersonal zu halten ist jedoch sehr teuer - nur die größten Unternehmen wie WildBerries oder Lamoda können es sich leisten.

Drittens betrügen Logistiker ständig. Tricks wie das Überladen von Autos und das Unterbrechen von Fahrerschichten gelten als alltäglich (statt 8 Stunden arbeiten sie 10-12). "Es ist okay - wenn es nicht in die Lautstärke passt, wird er den Überschuss in die Kabine geben" - auch das passiert. Hierfür werden Bußgelder verhängt, insbesondere für das Überladen von Lastkraftwagen: Zu der Geldbuße selbst (ab einhunderttausend Rubel pro Unternehmen) wird eine Entschädigung für Schäden am Straßenbett hinzugefügt. Es wird als Multiplikation des Überlastungskoeffizienten mit einer Entfernung angesehen und kann leicht Hunderttausende von Rubel erreichen. Flottenbesitzer würden gerne fahren, ohne zu brechen. Angenommen, der Logistiker hat die Wahl:

- „Schieben Sie die zusätzliche Palette ein wenig überschritten“
- „Fügen Sie das zusätzliche Auto hinzu, erhöhen Sie die Kosten, aber ohne zu brechen“
- „Setzen Sie sich noch eine halbe Stunde und machen Sie einen Plan richtig“

Oft wählt er die erste.

Ein so deprimierendes Bild hat uns mit großem Optimismus inspiriert. Wir haben mehrere Interviews mit Unternehmen in anderen Bereichen der Logistik geführt, z. B. die Lieferung großer Waren und die Lieferung von Dokumenten. Alle unsere Hypothesen, dass die Welt an diesem Ort nicht perfekt ist, wurden bestätigt. Vor uns öffnete sich also ein großes Zeitfenster. Wir machten uns eifrig an die Arbeit.

Teil 4. MVRP und Staus


Nachfolgend finden Sie die technischen Details unseres Produkts. Beginnen wir also mit der Definition. MVRP ist ein Routing-Problem für mehrere Fahrzeuge, dh eine Aufgabe, bei der Sie mehrere Standorte mit einer Flotte von mehreren Autos optimal umgehen müssen. Wir verwenden eine Terminologie, bei der eine ähnliche Aufgabe für eine einzelne Maschine als SVRP (Single VRP) bezeichnet wird. Es unterscheidet sich vom klassischen Problem des Handlungsreisenden (TSP, Problem des Handelsreisenden) durch das Vorhandensein von Lieferfenstern. Es scheint keine einheitliche Terminologie zu geben: In einem Wikipedia- Artikel werden die von uns gelösten Aufgaben als komplexe Abkürzung VRPPDTW (VRP mit Abhol- und Zustellmodus und Zustellungsfenstern) bezeichnet.

Programme, die solche Probleme lösen, werden traditionell als "Löser" bezeichnet. Für die Vielseitigkeit müssen Sie dem Solver eine Reihe von Optionen und Einschränkungen hinzufügen:

Beispiele für zusätzliche Optionen
— , .
— (, ), .
— ( , ).
— . , : , .
— .
— .
— (, -), : . , * .
— «» , . , , - .
— : , .

Es gibt verschiedene Arten von Algorithmen, die in Solvern verwendet werden können. Zum Beispiel gibt es eine große Gruppe von universellen Open Source- und kostenpflichtigen Constraint-Solvern (Google OR-Tools, OptaPlanner, Choco-Solver). In jedem von ihnen wird eine Funktion erstellt, die unter Berücksichtigung der erforderlichen Einschränkungen optimiert wird. Solche Löser sind normalerweise in der Lage, eine ganze Reihe von Aufgaben zu lösen: VRP-Aufgaben, Zeitplanung, optimale Zuweisung von Ressourcen in der Cloud.

Es gibt auch viele kommerzielle Lösungen, die speziell auf MVRP-Aufgaben zugeschnitten sind und für die Integration in Unternehmensverwaltungssysteme bereit sind. VeeRoute, Maxoptra, Antor sind in Russland bekannt.

Solver Yandex.Routing verwendet eine Kombination von Annealing Simulationsalgorithmusund genetischer Algorithmus. Wir wissen nicht, was Wettbewerber verwenden, aber höchstwahrscheinlich etwas Ähnliches. Nach unseren Messungen verlieren Constraint-Solver bei VRP-Aufgaben sehr viel an kommerzielle Solver.


Lösung des TSP-Problems des Kreisverkehrs der Staaten in Amerika

Ich werde sofort einen Vorbehalt machen: Das Thema der Lösung des MVRP-Problems ist so groß, dass wir es im Artikel nicht im Detail diskutieren, sondern einen separaten Artikel schreiben.

Die Haupteingabe für einen Löser ist eine Matrix von Abständen zwischen Planungspunkten (Bestellpunkte plus ein oder mehrere Depots). Tatsächlich ist dies nicht eine Matrix, sondern zwei: nach Kilometerstand und Reisezeit. Durch diese Matrizen erfolgt die Optimierung. Wie bereits erwähnt, verfügt Yandex im Gegensatz zu den Entwicklern anderer kommerzieller Lösungen über Verkehrsinformationen. Das heißt, für uns ist die Matrix nicht konstant, sondern ändert sich in der Zeit, und wir berücksichtigen dies im Solver. Soweit wir wissen, tut dies niemand auf der Welt: Selbst wenn man alles über Staus weiß, ist es schwierig, eine Reihe von Distanzmatrizen mit angemessener Diskretisierung zu erstellen (ausreichend, um sicherzustellen, dass die resultierenden Routen gut sind). Tatsache ist, dass die Anzahl der Matrixzellen quadratisch aus der Anzahl der Ordnungen wächst.

Angenommen, wir lösen eine VRP-Aufgabe für die Lieferung von 10.000 Bestellungen mit einer Flotte von 500 Autos. Dann erhalten wir zwei riesige Matrizen, die sich mit der Zeit ändern. Das Herunterladen im Netzwerk allein nimmt viel Zeit in Anspruch, aber ihr Inhalt muss zuerst berechnet werden. Wenn dies nicht effizient genug durchgeführt wird, müssen wir einige Stunden warten, bis die Matrizen erstellt und heruntergeladen sind. Erst dann kann der Solver gestartet werden. Der Dijkstra-Algorithmus hilft uns dabei: Die Berechnung von Fernmatrizen kann in nahezu linearer Zeit (ab der Matrixgröße) realisiert werden. Aber unser Team wird in den kommenden Wochen auch in einem separaten Artikel darüber sprechen.

Also haben wir einen intelligenten Löser gebaut, ihn mit einer Reihe von Autos parallelisiert, einen Router mit ultraschnellen Distanzmatrizen erstellt, die Staus berücksichtigen, und auch herausgefunden, wie diese Matrizen in den Löser eingefügt werden können. Infolgedessen hatten sie innerhalb von 15 Minuten die Möglichkeit, das Problem des Fahrens von rund 3.000 Standorten zu lösen. Ergebnis auf der Karte:



Teil 5. Ergebnisse und Schwierigkeiten bei der Umsetzung


Sie können unsere Routen mit denen vergleichen, die von Logistikern erstellt wurden, die Reisen manuell oder (manchmal) im halbautomatischen Modus mithilfe von Konkurrenzprogrammen planen. In einem typischen Fall können Sie mit unserer Lösung Logistiker mit einer kleinen Route in Optimalität um durchschnittlich 20% schlagen. Gleichzeitig ist die Zeit, um die fertige Route zu erreichen, viel kürzer - 15 Minuten statt einiger Stunden. In einer wundervollen Zukunft sollte sich der Logistiker von einer nervösen, erschöpften Person, die mitten in der Nacht Bestellungen mit Autos verstreut, zu einem respektablen Mitglied der Gesellschaft entwickeln. Er wird unsere automatische Planung verwenden und gelegentlich Einzelkantenfälle mit seinen Händen korrigieren.

Die Implementierung verlief am reibungslosesten, als Kunden unsere Lösung zum Zeitpunkt der Eröffnung ihres Lieferservices kauften. Die meisten unserer Kunden sind jedoch nicht neu. Sie haben bereits eine implementierte Lösung für die Logistik, und je größer der Kunde ist, desto stärker ist er mit allen möglichen Merkmalen der Prozesse dieses bestimmten Unternehmens und nur mit Krücken überwachsen. Ihre Entwicklung und Unterstützung erfolgt durch einen eigenen oder beauftragten IT-Service. Es wird davon ausgegangen, dass große Unternehmen (auch wenn die Vorteile unseres Produkts für sie offensichtlich sind) Routing nur zusammen mit einem umfassenden Update der IT-Infrastruktur implementieren können. Und das passiert normalerweise alle paar Jahre. Im Mai 2018 wurde unser Neugeborenen-Service auf der YaC 2018-Konferenz in Zusammenarbeit mit IKEA angekündigt. Sechs Monate später begann die Implementierung, wir begannen Daten auszutauschen,Ein Jahr später sprach der Projektmanager von IKEA auf der Branchenkonferenz für Logistik über die Ergebnisse.

Die Ergebnisse waren positiv, aber für uns etwas unerwartet. Zum Beispiel erhöhte die Information der Kunden ihre Zufriedenheit und reduzierte die Anzahl der Anrufe beim Call Center erheblich (bevor die Leute nervös waren und anfingen zu telefonieren, ohne etwas über das Schicksal des gekauften Sofas zu wissen).

Oder ein anderes Beispiel - mit Arbeitern der Ölindustrie.
, . , . , « » — . , , , «» ( , YouTube , ). , ( , ), , . : — , , , . . .

Das heißt, es stellte sich heraus, dass unsere Erstinstallation nicht ganz korrekt ist. Wir dachten, wir würden einen effektiven Umweg über Punkte verkaufen, aber es stellte sich heraus, dass Unternehmen unterschiedliche Produkte benötigen, die unterschiedliche Indikatoren beeinflussen, und nicht nur und nicht so sehr die Effizienz. Glücklicherweise liefern wir mehrere weitere mit dem Kerntechnologieprodukt.

Kleinere Unternehmen sind besser in der Lage, Integrationsschwierigkeiten zu überwinden, können jedoch menschlichen Faktoren ausgesetzt sein. Es ist sehr schwierig, den Fahrer davon zu überzeugen, der geplanten Route zu folgen und das Telefon bei eingeschalteter Tracking-Anwendung zu halten. Dies erinnert ein wenig an Geschichten über Bauern des 19. Jahrhunderts, die mechanisierte Mäher und Pflüge brachen. Natürlich ist nicht alles so traurig, aber es gibt Widerstand gegen den Fortschritt.

Fazit


In kurzer Zeit ist es uns gelungen, ein Produkt zu entwickeln, das hoffentlich die gesamte Logistik des Landes beeinflusst (oder zumindest stark beeinflusst). Unsere derzeitigen Kunden und Yandex glauben an uns. Letzteres ist ebenfalls wichtig: Ja, das interne Startup ist ruhiger als das Startup außerhalb des Unternehmens, aber wir müssen auch das Ergebnis zeigen.

Wir haben in unseren zukünftigen Plänen mit dem Schwerpunkt auf großen Unternehmen begonnen - die Schwelle für den Eintritt in den Service zu senken. Sie können mit der Lösung von SVRP-Problemen direkt auf Yandex.Maps herumspielen: Wenn Sie der Route einen vierten Punkt hinzufügen, wird die Schaltfläche „Optimieren“ angezeigt, die unseren Solver aufruft.



Video der gleichen Geschichte für Studenten des FCS in HSE:


Alles Gute Routen!

All Articles