VRP++
Was VRP++ ist ...
VRP++ stellt eine Erweiterung der Programmiersprache C++ dar. Wesentlicher Zweck für die Entwicklung von VRP++ war es, Hürden bei der Erstellung lauffähiger Programme zur Funktionsdemonstration und Erprobung von Algorithmen für die Fahrzeugeinsatzplanung (FEP) abzubauen, in dem passende Datenobjekte bereitgestellt werden, die flexibel für die diversen FEP-Szenarien eingesetzt und bei Bedarf mit geringem Aufwand individuell angepasst werden können. Hauptbestandteil des VRP++-Pakets ist daher eine Kollektion von Datenstrukturen und Routinen, die diese Datenstrukturen mit Daten füllen, Verknüpfungen zwischen den gespeicherten Informationen herstellen und die gespeicherten Informationen manipulieren sowie die Konsistenz der gespeicherten Informationen sicherstellen. Diese Datenstrukturen sind als Klassen realisiert, d.h. deren Implementierung folgt dem Paradigma der Objektorientierung. Jedes Objekt besteht aus Attributen zur Speicherung von Informationen und Methoden, die für das Einlesen, die Speicherung sowie die Verarbeitung von Daten mit dem Ziel der Erstellung von Fahrzeugeinsatzplänen intuitiv genutzt werden können.
Voraussetzung für die Anwendung von VRP++ ist das Vorhandensein von Grundkenntnissen der Programmiersprache C++. Die Verwendung der VRP++-Objekte soll dazu beitragen, den Aufwand für die Programmierung von Lösungsalgorithmen für unterschiedliche Fahrzeugeinsatzplanungsprobleme so gering wie möglich zu halten. Der Programmierer soll sich hauptsächlich auf die Implementierung der Algorithmen konzentrieren. Möglichst wenig Zeit und Gedanken sollen für sog. "`Overhead"'-Aufgaben wie das Datenmanagement eingesetzt werden. Durch die strikte Einhaltung der Idee der Objektorientierung wird eine möglichst intuitive Nutzung von VRP++-Objekten möglich.
Neben der Speicherung der Daten einer konkreten Instanz eines FEP liegt ein besonderes Augenmerk von VRPPP auf der Sicherstellung eines einheitlichen und durchgängigen Informationsflusses für die Bearbeitung eines FEP. Dies beginnt mit dem Einlesen der Parameter einer Probleminstanz aus einer XML-Datei. Eine solche Instanzendatei enthält strukturiert alle Informationen, die eine konkrete Fahrzeugeinsatzplanungssituation darstellen. Einerseits ist das Netzwerk mit Knoten, Pfeilen und (Pfeil- oder Knoten-) Bewertungen in der XML-Datei abgelegt. Andererseits sind Informationen über Fahrzeugstandorte und -depots spezifiziert. Abschließend sind Fahrzeuginformationen sowie Auftragslisten definiert. Aus einer XML-Instanzendatei werden alle diese Daten in eine interne flexible Datenstruktur ("Problem"-Objekt) eingelesen. Aus den Problemdaten kann dann ein Fahrzeugeinsatzplan ("Plan"-Objekt) erzeugt werden, der wiederum aus mehreren "Routen"-Objekten besteht. Diese Routen-Objekte können dann durch das Einfügen, das Herauslösen oder das Umordnen von "Operations"-Objekten verändert werden. Für alle diese Objekte enthält VRP++ Methoden, die diese Objekte erstellen, initialisieren, verändern, bewerten, analysieren, ausgeben, verknüpfen, entflechten oder löschen (Objekt-Methoden).
Abschließend stellt VRP++-Basisfunktionalitäten bereit, um Problemdaten und -lösungsvorschläge strukturiert zu exportieren. Somit ist beispielsweise eine Visualisierung in elektronischen Karten wie GoogleMaps oder OpenStreetMap einfach realisierbar. Auch ist es möglich, eine vereinfachte Routenführung (als Polygonzug) in diesen elektronischen Karten mit äußerst geringem Aufwand zu realisieren.
... und was es nicht ist
VRP++ ist keine Programmiersprache sondern eine Sammlung von in C++ programmierten Datenstrukturen und Datenmanipulations-Routinen. Damit VRPPP sinnstiftend eingesetzt werden kann, muss der Nutzer zumindest rudimentäre Kenntnisse der Programmiersprache C++ besitzen.
VRP++ stellt (bis auf wenige Ausnahmen) keine Algorithmen für die Fahrzeugeinsatzplanung zur Verfügung. Vielmehr soll und muss der Nutzer von VRP++ diese Algorithmen selber programmieren.
Es kann nicht garantiert werden, dass VRP++ fehlerfrei arbeitet. Trotz sorgfältiger Erprobung können somit die ausgelieferten Dateien bzw. C++-Quellcodes Fehler enthalten. Es wird keine Haftung für Folgen dieser Fehler übernommen.
Download aktuelle Version
VRP++ wird unter der Lizenz CC BY-NC-SA 4.0 zur Verfügung gestellt (Licence Deed)
Was ist neu in der aktuellen Version?
Die wesentliche Ergänzung ist die Bereitsstellung eines Datesabjekts zur Synchronization von lokalen Planungsdaten mit detaillierten Planungsdaten aus einer elektronischen Karte, die aus Openstreetmap-Daten besteht.
Download alte Version(en)
VRP++ wird unter der Lizenz CC BY-NC-SA 4.0 zur Verfügung gestellt (Licence Deed)
Dokumentation
Derzeit gibt es noch keine vollständige ausformulierte Dokumentation von VRP++. Die Lehrveranstaltung "Decision Support in Transportation Logistics" vermittelt die Grundlagen und Anwendungskonzepte für VRP++. Derzeit entsteht ein Lehrbuch zu dieser Veranstaltung.