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 »

Anbei noch ein paar Beispiele für unsere momentan verwendeten Netze:
Eingang loop1, übergang von loop 1 zu loop 2 und umgekehrt und für den Rücktransport von Behältern aus den K-plätzen:
Image
Eingang loop2 an den WE-Plätzen (sind jetzt neu dazu gekommen):
Image
---
Eventuell muss ich für die K-Plätze und WE-Plätze das selbe Netz verwenden, da sie am selben Loop sitzen und auch physisch nebeneinander sind. Aber momentan hab ich auch so gute Ergebnisse.
---
Ich bin jetzt gerade dabei, die Simulation noch um ein weiteres Loop mit angeschlossener Produktion zu erweitern. Dieses Loop sorgt für mehr Verkehr in Loop 1, da die Behälter nur in die RBG an den Lagerplätzen fließen.
Falls Sie möchten, kann ich Sie gerne weiter auf dem Laufenden halten. (Ist ja gerade die spannende Phase). :mrgreen:

netGuy
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

netGuy wrote:Falls Sie möchten, kann ich Sie gerne weiter auf dem Laufenden halten. (Ist ja gerade die spannende Phase). :mrgreen:
Ja, gerne!
Mich verunsichert etwas die Tatsache, dass in den Abbildungen alle Neuronen entweder auf 0 oder 1 stehen. Keine Zwischenwerte?
Ist denn die Normalisierung für die Inputs und Outputs richtig eingestellt?
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Momentan haben wir die Normalisierung deaktiviert. Die Abbildungen der Netze sind hier noch im untrainierten Zustand.
Ist denn eine Normalisierung zwingend notwendig?
Sie hat sich bisher als äußerst schwierig herausgestellt.
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

netGuy wrote:Ist denn eine Normalisierung zwingend notwendig?
Je nach Aktivierungsfunktion können Inputs und Outputs bei deaktivierter Normalisierung nur einen Wertebereich von [0..1] bzww. [-1..1] verarbeiten.
Legt man höhere Werte an, dann werden Sie auf diesen Bereich begrenzt (abgeschnitten). MemBrain (nicht die dll) erzeugt dabei auch eine Warnung, die man i.d.R. nicht ignorieren sollte.
Um dieses Problem zu lösen kann man entweder alle Daten selbst normalisieren (also auf einen passenden Wertebereich umrechnen) oder eben die Normalsierungsfunktion der Neuronen aktivieren und den gewünschten Werteberich für jedes Input- und Output-Neuron angeben.
netGuy wrote:Sie hat sich bisher als äußerst schwierig herausgestellt.
In wie fern denn? Welche Probleme gab es dabei?
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

In wie fern denn? Welche Probleme gab es dabei?
Es gestaltete sich insofern schwierig, dass sich die min-max-Bereiche im Verlauf der Simulation ändern können und ich vorab keinen genauen Wertebereich festlegen konnte.
Aber das erklärt die vielen 1-en als Ausgabewerte in den Trainingsdaten.
---
Es reicht wahrscheinlich nicht aus, nur das Ausgangsneuron zu normalisieren?
Reicht es die Eingangsneuronen auf 0...1 zu normalisieren?
Das könnte ich ja auch schon in der Simulation machen und die Werte dann einfach membrain übergeben.
Edit:
Ich müsste ja vor jedem Trainingsschritt alle Trainingsdatensätze durchlaufen und neu normalisieren - oder?
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

netGuy wrote:Es gestaltete sich insofern schwierig, dass sich die min-max-Bereiche im Verlauf der Simulation ändern können und ich vorab keinen genauen Wertebereich festlegen konnte.
Man muss dann eine Abschätzung durchführen, was der größte anzunehmende Wertebereich sein wird und diesen zur Normalisierung verwenden. Grundregel ist immer: Ausreichend groß, aber nicht unnötig groß.
Werte während des Betriebs umzunormalisieren ist keine gute Idee, nein.

Wichtig ist auch das Randomisieren der Netze vor dem ersten Training. Bei der Verwendung der dll geht das oft vergessen, da einen die dll ja nicht extra danach fragen kann, bevor man das Training beginnt, so wie MemBrain das tut.
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Man muss dann eine Abschätzung durchführen, was der größte anzunehmende Wertebereich sein wird und diesen zur Normalisierung verwenden. Grundregel ist immer: Ausreichend groß, aber nicht unnötig groß.
Check ;-)
Dann muss ich nur noch mal über die Abschätzung der maximalen Verweildauer nachdenken. Irgendwie muss ich ja ausreißer auch mit reinbringen. Wobei ich denke, dass ich die maximale Verweildauer mal auf 6 Minuten als Maximum 0 als Minimum normalisiere. 6 Minuten entsprechen ca. dem 3maligen Durchlauf von Loop 1. Das wäre dann ja schon sehr viel, könnte aber passieren.
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

So, ich hab die Normalisierung jetzt mal implementiert.
Ich normalisiere alle Werte inklusive des Augabeneurons mittels

Code: Select all

double normalizedValue = ((ceil_ - floor_) * (value - min)) / (max - min) + floor_;
auf das Intervall -1...1.
Mit den folgenden Werten:
min = 0
max: entsprechend der Abschätzung (hier muss ich glaube ich für die einzelnen Agenten bessere, also immer eigene, max-Werte für die Abschätzung der Verweildauer definiern).
ceil = 1
floor = -1
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by TJetter »

Warum nun doch die 'händische' Normalisierung aller Daten, anstatt die eingebaute Normalisierung der Input- und Output-Neuronen zu verwenden und die Daten stattdessen im Original zu belassen?
Das führt außerdem dazu, dass alle bereits existierenden Daten um-normalisiert werden müssen, sobald sich die Normalisierungsgrenzen mal ändern. Dass das Netz erneut (nach-)trainiert werden muss, ist in beiden Varianten der Fall, aber die Umrechnung aller bestehenden Daten entfiele, wenn die eingebaute Normalisierung verwendet würde.
Hinzu kommt, dass man für so eine 'Umnormalisierung' bestehender Daten immer auch noch wissen muss, wie die Normalsierungsgrenzen (Quelle und Ziel!) für jedes Neuron waren, zum Zeitpunkt als die Normalsierung durchgeführt wurde.

Außerdem wichtig: Die angegebene Normalisierungsberechnung führt zu einem normalsierten Wertebereich von [-1..+1]. Dieser passt so nur auf Eingangsneuronen mit Aktivierungsfunktion 'IDENTICAL', nicht aber 'IDENT 0 TO 1' und auf Ausgabeneuronen mit Aktivierungsfunktion TAN-H, nicht aber LOGISTIC. Die eingebaute Normalsisierung von MemBrain passt sich selbstverständlich korrekt an die jeweilig gewählte Aktivierungsfunktion an.
Thomas Jetter
netGuy
Posts: 21
Joined: Mon 11. Jan 2016, 09:05

Re: Optimierung des Straßenverkehrs durch Ampelschaltung

Post by netGuy »

Warum nun doch die 'händische' Normalisierung aller Daten, anstatt die eingebaute Normalisierung der Input- und Output-Neuronen zu verwenden und die Daten stattdessen im Original zu belassen?
Ok, macht Sinn. Dann müsste ich nur die Normalisierungsgrenzen dynamisch zur Laufzeit anpassen (für den Fall einer Änderung).
Aber zu Beginn kann ich sie ja erst mal in membrain direkt hinterlegen.
dass das Netz erneut (nach-)trainiert werden muss, ist in beiden Varianten der Fall, aber die Umrechnung aller bestehenden Daten entfiele, wenn die eingebaute Normalisierung verwendet würde.
Also muss ich das Netz dann nachtrainieren, sobald sich die Grenzen geändert haben?

Dann geb ich als min-max-Werte für das Range der normalization die entsprechenden min-max werte an, die sich aus den Eigenschaften der Neuronen ergeben`? ZB: Für Loop1 0...28
Post Reply