Optimierung des Straßenverkehrs durch Ampelschaltung

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

TJetter wrote: Ich würde aber, wie bereits einige Posts vorher gesagt, auch eine minimal zulässige Ampelwechselzeit einführen, so dass der Agent nach einem Ampelwechsel zunächst einmal keine Aktion durchführen kann, sondern die Aktion eine gewisse Zeit auf den Zustand einwirken kann. Das sollte den Effekt des Zeitversatzes etwas zähmen.
Ich habe gerade nochmal mit Kreatif gesprochen. Und bezüglich der Ampelschaltung haben wir die folgende Überlegung angestellt:
Beim klassischen MFS wird ja keine Blockabfertigung getätigt, sondern es wird pro "grüne" Ampel eine TT ins Folge-MFE geschleust und die Ampel danach wieder auf "rot" gestellt. Sprich wir haben eine getaktete Abfertigung der TT am Entscheidungspunkt. Daher brauchen wir die Ampelwecheselzeit glaube ich nicht, da das Ziel die Maximierung des Outputs an den Zielsenken ist. Somit bleibt aber das Problem des Zeitversatzes bestehen...
TJetter wrote:Außerdem steht der Agent in Konkurrenz zu anderen Agenten oder Steuerungsmechanismen, was das Lernen erheblich erschweren könnte. Das würde dann eher dafür sprechen, nur einen Agenten einzusetzen, der alle Ampeln steuert. Letztlich werden aber nur Experimente Klarheit schaffen, denke ich.
Das müssen wir dann mal noch prüfen. Wobei bei einem einzigen Agenten die Trainingszeit erheblich steigt und es nicht gerade sinnvoll wäre den Agenten erst einmal mehrere Monate zu trainieren. Hier führt wahrscheinlich der Schwarmansatz zu einer schnelleren Lösung, da die Trainingsdaten schneller vorhanden sind. Eventuell kann ja der Reward einfach von Agent zu Agent "vererbt" werden. Auch könnten mehrere Agenten parallel trainiert werden.
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Kreatif und ich haben nochmal etwas gehinrt.
Das Ergebnis ist ein "Simulator" für eine einfache Einschleusung von Quelle 1 nach Senke 1 für die Dauer von 3 Stunden in Form einer Excel-Tabelle.
Der Simulator berechnet auch Rewards und die dazugehörigen Q-Funktionen.
Die Werte aus dem Simulator werden wir im nächsten Schritt mal in das dazugehörige NN füttern, um die versteckten Schichten näher bestimmen zu können.
Ich stelle die Exceltabelle mal Online, da ich mir mit den Q-Funktionen und Rewards noch etwas unsicher bin.
-----
Wir haben mal 3 Rewards versucht:
1. Durchsatz der letzten Stunde.
2. Transportdauer in Abhängigkeit eines Faktors b: b/Transportdauer
3. Produkt aus 2. und Durchsatz.

Die Q-Funktionen ergaben sich dann entsprechend.
Um ein Gefühl für die Q-Funktionen zu bekommen haben wir immer aus je 42 Datensätzen den entsprechenden Mittelwert genommen.
Die Mittelwerte der Q-Funktionen und des Durchsatzes haben wir in ein Diagramm übernommen:

Der Mittelwert Q-Funktion zum 2. Reward wurde aus Darstellungsgründen mit dem Faktor 100 multipliziert.
Ebenso wurden der Mittelwert des Durchsatzes und der Q-Funktion für den Durchsatz mit dem Faktor (1/10) multipliziert.

Aus dem dazugehörigen Diagramm ist der Verlauf der einzelnen Q-Funktionen klar ersichtlich. Nach einem Vergleich der 4 dargestellten Kurven haben wir uns jetzt erstmal für die Q-Funktion mit Durchsatz und Transportdauer entschieden.

Das wäre es erst einmal von meiner Seite soweit.
Attachments
schema_q1_s1.xlsx
(4.02 MiB) Downloaded 340 times
User avatar
TJetter
Posts: 341
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

Ich werde mir das Sheet so bald als möglich einmal ansehen, gestern hat es leider nicht mehr geklappt.
Wichtig ist auf jeden Fall, den Reward begrifflich von der Q-Function zu trennen. Diese haben zwar eng miteinander zu tun, sind aber nicht das selbe. Das Netz erlernt die Q-Function, die den LANGFRISTIGEN Wert bestimmter Aktionen in bestimmten Zuständen abbildet. Der Reward ist immer nur die MOMENTANE Belohnung der Aktion.
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

schema_q1_s1.zip
(3.65 MiB) Downloaded 348 times
OK. Bei der erneuten Prüfung des Excel-Sheets ist mir noch ein kleiner Fehler bei der Berechnung der Q-Max Werte aufgefallen.
Ich lade hier mal noch das überarbeitete hoch.
Bei der Menge der Trainingsdaten bin ich mir noch nicht ganz sicher.
Momentan habe ich ca. 4214 für das Training und ca. 1400 für die Validierung.
Als Trainingsalgorithmus setze ich zZ den Cascade mit RPROP ein (das Netz sollte sich ja später dynamisch anpassen).

Ich muss wohl die Menge an Trainingsdaten noch erhöhen, da der Neterror noch zu hoch ist.

Schönes WE!
User avatar
TJetter
Posts: 341
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

Hallo,

im Excel-Sheet bin ich mir noch nicht ganz sicher, welche Daten das Netz denn nun als Eingänge sehen soll und was der Output sein wird. Aber das wird sich ohnehin im Laufe der Zeit bestimmt noch ein paar Mal ändern.
netGuy wrote:Als Trainingsalgorithmus setze ich zZ den Cascade mit RPROP ein (das Netz sollte sich ja später dynamisch anpassen).
Leider funktioniert Cascade Correlation meiner Erfahrung nach bei weitem nicht so gut wie ein normaler RPROP, nicht selten versagt er vollkommen. Ich rate deshalb ganz klar davon ab. Verwenden Sie einfach RPROP in seiner Standard-Konfiguration, damit sind sie absolut auf der sicheren Seite und haben einen der besten, bewährtesten und schnellsten Lernalgorithmen.
Bzgl. der Hidden-Schichten: Nehmen Sie zunächst ein Netz mit einer Hidden-Schicht. Diese sollte ca. 1/4 bis 1/3 so mächtig sein, wie die EIngabeschicht. Das wird in jedem Fall ausreichend gut für einen Start sein. Alles andere ist Kür und kommt ganz am Ende, wenn der RL-Algorithmus implementiert ist und grundsätzlich funktioniert. Um ein Vielfaches höher ist der Einfluss der Wahl der geeigneten Inputs. Konzentrieren Sie sich also absolut darauf und arbeiten erst einmal mit dem genannten Standard-Netz.

RL generiert ja zur Laufzeit (also während der Agent mit seiner Umwelt interagiert) permanent neue Datensätze. Die ersten sind per se schlecht, da der Agent ja noch nichts vernünftiges ausprobiert hat und sich die Rewards noch gar nicht durch die vielen verschiedenen Zustands/Aktionspaare fortpflanzen konnten. Deshalb ist es eben auch wichtig, die Trainingsmenge in einer Art großem FIFO zu verwalten: Das älteste Trainingsmuster wird gelöscht, wenn ein neues hinzukommt und der FIFO bereits voll ist. Mehrere 10.000 oder auch 100.000 Trainingsmuster dürfen das schon sein im FIFO. Trainiert wird das Netz immer im Hintergrund (z..B. nach jeder Aktion) über den gesamten FIFO (der also eine MemBrain Lesson darstellt, wenn man mit MemBrain arbeitet).
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

TJetter wrote:Leider funktioniert Cascade Correlation meiner Erfahrung nach bei weitem nicht so gut wie ein normaler RPROP, nicht selten versagt er vollkommen. Ich rate deshalb ganz klar davon ab. Verwenden Sie einfach RPROP in seiner Standard-Konfiguration, damit sind sie absolut auf der sicheren Seite und haben einen der besten, bewährtesten und schnellsten Lernalgorithmen.
Ok, das ist schon mal n guter Tipp. Ich werde den RPROP-Ansatz weiter verfolgen.
Ich lade am Besten mal mein jetztiges membrain-file inkl. Trainingsdaten hier hoch.
Ich dachte an den Cascade-Algorithmus, da im späteren Live-Betrieb die Eingänge des NN immer unterschiedlich sein werden und sich hier die Dynamik des CC-Algo angeboten hätte.
-----------------------------
Zu dem Sheet:
Für das Netz sind nur die Spalten von Ampel_alt bis Wertigkeit von Belang.
Die anderen Spalten dienen nur der Berechnung der unterschiedlichen Q-Funktionen.
Als Trainingspattern würde ich hier immer nur die Zeilen mit einem "E" in Spalte A heranziehen, da sie die "Fahr rein"-Entscheidung darstellen. "Bleib stehen"-Entscheidungen werden hier noch nicht "simuliert". Wir wollten mit den Trainingsdaten ersteinmal ein Netz finden, dass die "Fahr rein"-Entscheindung (also die Q-Funktion) gut approximieren kann.

Schönes WE weiterhin.
Attachments
q1_s1.zip
(30.31 KiB) Downloaded 345 times
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

So... Ich hab mal die Simulation für die beiden Loops und die entsprechenden PLätze fertig.
Mittlerweile haben wir auch mal Ergebnisse, die sehr viel versprechend sind.
---
Wir setzen jetzt mehrere Agenten ein, die durch die entsprechende Belohnung auch sehr gute Ergebnisse produzieren.
Als Startwerte habe ich mal alpha = 0,1 gamma=0,6 und die WS auf 20% gesetzt.
Zusätzlich haben wir für die kritischen Agenten eine zusätzliche Belohung von 5 für ein Einschleussen definiert. Und auch für Deadlocks also das komplette überlasten des Systems eine Bestrafung von -5 definiert.
Somit können wir jetzt eine Optimierung der Leistung und der Transportzeiten beobachten.
Hier mal ein plot des ersten Ergebnisses.
Die Transportzeiten wurden gemessen und alle 10 Minuten der Durchschnitt ermittelt.
Image
Wir haben jetzt auch den Simulator um 2 weitere Quellen als Wareneingang und einen dafür zuständigen Agenten erweitert.
Erste Simualtionen deuten darauf hin, dass wir auf dem richtigen Weg mit unserem Multiagenten-Ansatz sind.
Anbei ein plot.
Image

Ich habe auch mal mit der Exploration rumgespielt und als Ergebnis können die Agenten ab ca. 3000 beförderten Behältern komplett ohne exploration auskommen.
Gruß

NetGuy
User avatar
TJetter
Posts: 341
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

Hallo,

das sieht ja vielversprechend aus, vielen Dank für das Update.
Wie ist denn der Agent momentan aufgebaut? Nutzt Ihr die MemBrain DLL dafür? Wenn ja, unter welcher Programmiersprache?
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Momentan fahren wir das ganze mit 4 Agenten.
Der 1. Ist für die Einschleusung von den RBG in Loop 1 zuständig der 2. Für die Fahrt von Loop 1 zu loop 2 der 3. Für dem Rücktransport von dem kplätzen in Loop 2 und der letzte von Loop 2 zu loop 1. Die Agenten an den RBG und von Loop 1 zu loop 2 erhalten für das einschleusen von FE zusätzlich nen reward von 5. Die anderen werden normal belohnt.
Und wir haben die dll in einfach c++ Umgebung integriert.
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Ganz vergessen: jeder Agent hat natürlich sein eigenes Netz, das er anfragt und trainiert. Jeder Agent ist ein eigenständiges Objekt, das unabhängig von den anderen entscheidet.
Post Reply