OpenAI-Gym-Umgebungen

Reinforcement Learning mit Simulink-Modellen

Maschinelles Lernen fasst viele Methoden zusammen, die mit der Generierung von Wissen aus Erfahrung verbunden sind. Überwachtes Lernen befasst sich mit der Erstellung von Modellen, die auf Daten basieren. Unüberwachtes Lernen beschäftigt sich mit der Identifizierung von Strukturen in Daten. Beim bestärkenden Lernen, dem sogenannten Reinforcement Learning, das manchmal als Unterkategorie des überwachten Lernens gesehen wird, geht es um eine Strategie, die durch Ausprobieren gelernt wird und die zu einer maximalen Belohnung führt. Die Belohnungsfunktion muss dabei für jeden Anwendungsfall definiert werden.
  • init() – Hier werden die Parameter gesetzt, mit denen die Umgebung arbeitet, z.B. die Dimensionen der Ein- und Ausgänge.
  • reset() – Wie der Name schon sagt, wird mit dieser Funktion die gesamte Simulation zurückgesetzt.
  • step() – Diese Funktion wird aufgerufen, wenn ein Simulationsschritt ausgeführt werden soll.
  • seed() – Diese Funktion wird für die Neuparametrisierung des Zufallsgenerators verwendet.
  • render() – Diese Funktion erzeugt eine grafische Abbildung der Umgebung.

Von diesen Funktionen sind aber nur init(), step() und reset() für einen Lernprozess notwendig. Die anderen Funktionen müssen nicht verwendet werden. Eine Simulation wird unabhängig von ihrer Visualisierung (die render()-Funktion) durchgeführt. Wichtig sind noch die Eingangs- und Ausgangsvariablen für die Step-Funktion. Eingang ist die auszuführende Aktion und Ausgänge sind: der geänderte Zustand der Umgebung, die Belohnung und, falls das Problem eine endliche Zeithorizont hat, die Erreichung des Zielzustandes.

Dateistruktur mit Namen und Referenz

Eine selbstgeschriebene OpenAI-Gym-Umgebung muss, wie bereits erwähnt, eine gewisse Dateistruktur besitzen. Die sogenannte PIP-Package-Struktur beinhaltet eine Namens- und Referenzierungskonvention, die einfach zu generieren ist. Eine OpenAI-Gym-Umgebung, die eine Simulink-Simulation beinhaltet, soll innerhalb der Methoden mit Matlab über die Matlab Python Interface oder mit kompilierten Simulink-Modellen über deren Schnittstelle kommunizieren. So werden komplexe Simulink-Modelle zu OpenAI-Gym-Umgebungen. Ein OpenAI-Gym-Umgebungsgenerator soll die zur Verfügung stehenden Informationen aus dem Simulink-Modell auslesen und damit den Quellcode, basierend auf einem Template, generieren. Das Template besteht aus Python-Quellcode, bei dem an den Stellen, an denen Änderungen notwendig sind einfach erkennbare Platzhalter stehen, die mit aus den Simulink-Modell ausgelesenen Informationen befüllt werden. Der Generator entpackt die Simulink-Datei (.slx) und kann aus der resultierenden XML-Datei die wichtigen Informationen herauslesen. Dazu gehören die Ein- und Ausgänge (Inputs und Outputs) sowie die zusätzlich benötigten Informationen. Dies wird dann in der OpenAI-Gym-Dateistruktur abgespeichert und kann als gewöhnliche Umgebung verwendet werden.

  • Eingänge: Die Agenten der RL-Algorithmen müssen bestimmte Aktionen ausführen können. Bei dem Beispiel eines invertierten Pendels wären die Aktionen das Hin- und Herfahren des unteren Wagens. Diese Aktionen werden vom Agenten an die Umgebung weitergegeben. Der Wrapper gibt diese Aktionen an Simulink weiter. Da die die Python-Interface die Simulink Input-Blöcke in der aktuellen Matlab-Version nicht mit Werte befüllen kann, werden diese temporär ersetzt.
  • Ausgänge: Nachdem die Eingänge gesetzt wurden, simuliert das Modell nun einen Zeitschritt und die Output-Blöcke der Simulink-Simulation werden mit neuen Werte gesetzt. Dieser Output wird von dem Wrapper abgegriffen und wieder zurück an den RL-Algorithmus gesendet.

Zusätzlich benötigte Informationen: Ergänzend zu den Ein- und Ausgängen benötigt eine Umgebung die Belohnungsfunktion. Sie kann zusätzlich zum Modell im Simulink implementiert werden und die Belohnung wird vom Wrapper abgegriffen bzw. weitergeleitet.

Matlab-Python-Schnittstelle

Nachdem die wichtigen Informationen aus der XML-Datei entnommen wurden und der Umgebungs-Quellcode in Python generiert wurde, muss die Verbindung zwischen Python und Matlab erzeugt werden. Mit der Matlab Python Interface kann die Simulation gestartet, pausiert und fortgeführt werden. Bei einem Simulationsschritt ist es möglich, die (umgewandelten) Inputs zu schreiben und die Outputs zu lesen. In die aktuelle Matlab-Version einen Simulationsschritt zu integrieren ist nur durch Umwege (mit eingebautem Stop/Pause-Block) möglich.

Verwendung des Umgebungsgenerators

Um den Simulink-OpenAI-Gym-Umgebungsgenerator zu verwenden, muss die Generatorfunktion mit dem Pfad der Simulink-Datei ausgeführt werden. Danach erstellt der Generator die Python-Quellcodedateien und die Dateistruktur. Sobald dies abgeschlossen ist, ist die Umgebung durch die PIP-Anwendung als OpenAI-Gym-Umgebung registriert und verwendbar. Selbstverständlich muss Matlab installiert sein, um die Umgebung verwenden zu können. Dies hat auch den Vorteil, dass es im Gegensatz zur Verwendung von vorkompilierten Modellen einfache Experimente in der bekannten Simulink-Umgebung erlaubt.

Seiten: 1 2 3Auf einer Seite lesen

ISW Institut für Steuerungstechnik der

Das könnte Sie auch Interessieren

Weitere Beiträge

Bild: KEB Automation KG
Bild: KEB Automation KG
Edge Devices als Basis für das IIoT im Maschinenbau

Edge Devices als Basis für das IIoT im Maschinenbau

Datenverarbeitung am Rand des Netzwerks: Edge Computing findet direkt an oder nahe einer bestimmten Datenquelle statt, um eine schnelle Analyse und Reaktion zu ermöglichen. Diese dezentrale Ergänzung zum Cloud Computing ermöglicht schnelle Reaktionszeiten für industrielle Anwendungen in der Fertigung oder Robotik. Durch Edge Computing werden Entscheidungen in Echtzeit sowie eine bessere Steuerung von Maschinen und Prozessen möglich.

mehr lesen
Bild: Insevis GmbH
Bild: Insevis GmbH
Von der S7 in die Cloud

Von der S7 in die Cloud

Insevis ist für seine Ergänzungen zur Siemens-Welt bekannt. Die Produktfamilien umfassen eigene Hutschienensteuerungen mit S7-CPUs mit und ohne Onboard-I/Os, S7-Panels ohne Windows und Verbindungen von beiden als Kompaktsysteme sowie Anbindungen an die IT-Ebene per MQTT und OPC UA.

mehr lesen

Simatic Automation Workstation

Die neue Siemens Simatic Automation Workstation ermöglicht es Herstellern, eine hardwarebasierte speicherprogrammierbare Steuerung (SPS), ein herkömmliches HMI und ein Edge-Gerät durch eine einzige, softwarebasierte Workstation zu ersetzen.

mehr lesen