Mathematik: Optimale Steuerung bzw. Neuronales Netz mit variablen Gewichten - ein Beispiel
Released by matroid on Mi. 06. Januar 2021 19:41:41 [Statistics]
Written by Delastelle - 217 x read [Outline] Printable version Printer-friendly version -  Choose language   
Mathematik

\(\begingroup\) Im Artikel berechne ich die Lösung eines Problems der Optimalen Steuerung. Die Steuerungen u kann man auch als Gewichte w eines Neuronalen Netzes mit variablen Gewichten sehen. Gelöst wird das Achtproblem - hier mit 4 gewöhnlichen Differentialgleichungen. Zur Lösung werden Fortran und Matlab/Octave eingesetzt.

Problembeschreibung

Es geht um das Lernen (Approximieren) einer Kurve. Es werden dabei Anfangswertprobleme gelöst. Die rechten Seiten der Differentialgleichungen sehen so aus: dx(1)= (-x(1)+atan(u(1)*x(1)+u(2)*x(2))) dx(2)= (-x(2)+atan(u(3)*x(1)+u(4)*x(2))) pi = 3.1415926535d0 pi_12 = pi * 12.0d0 d1 = 1.0d0/2.0d0+(9.0d0 / 20.0d0) * sin(2.0d0 * t) d2 = 1.0d0+(9.0d0 / 10.0d0) * sin(t) Für eine gewisse Zeit (Einschwingzeit bis t1) gibt es keine Forderung dann soll eine Acht im ersten Quadranten gelernt werden. Die 3.Differentialgleichung sammelt die Summe der Quadrate der Abweichungen von der Acht ein. if (t.lt.t1) then dx(3) = 0.0d0 else dx(3) = ( (x(1) - d1) * (x(1) - d1) * + (x(2) - d2) * (x(2) - d2) ) endif Die 4 Differentialgleichung sammelt die Quadrate der Steuerungen ein. Dies dient der Stabilisierung des Problems. Es soll die Acht gelernt werden, aber mit wenig Energie der Steuerungen. dx(4) = dgl_alpha * (u(1)*u(1)+u(2)*u(2)+u(3)*u(3)+u(4)*u(4)) Die Startwerte der Anfangswertprobleme sind 1, 1, 0, 0. Also 1; 1 für das Lernen der Acht bzw. 0 und 0 für die Aufsummierung der Fehler. Die Zielfunktion ist der Zustand x(3) + x(4) am Ende des Integrationsintervalls, also die Summe aus den Abweichungen von der Acht plus der Energie der Steuerungen. Die Steuerungen u(1) bis u(4) sind unterteilt in 50 Intervalle in t. Die Steuerungen werden als stückweise konstant oder linear zwischen den Intervallen gewählt. Zu Beginn der Optimierung sind die Steuerungen zufällig gewählt oder gleich 0. Bei mir immer 0 zu Beginn. alpha für Differentialgleichung 4 wurde immer auf 0,01 gesetzt. Die Zeit t läuft von 0 bis 12 Pi.

Lösung in Fortran

Steuerungen u1,u2,u3,u4 am Ende der Rechnung
Zustand x1, x2, x3, x4 am Ende der Rechnung Für nichtlineare Optimierungsprobleme wie das gegebene kann man SQP-Verfahren einsetzen. (SQP - Sequentiell Quadratic Programming). Weiterhin kann man zum Lösen der Differentialgleichungen ode45 einsetzen - ein Löser mit variabler Schrittweite und Fehlerkontrolle. Bei dem vorliegenden Programm wurde eine ältere Routine OPRQP zur Lösung des Nichtlinearen Optimierungsproblems verwendet. Weiterhin wurde ein Runge-Kutta-Verfahren 4.Ordnung zur Integration verwendet. Während der Rechnung werden die Integrationsintervalle verkleinert. Die Zustände x wurden immer auch an Gitterpunkten (z.B. 51 pro Differentialgleichung) berechnet und gespeichert. Zu Beginn sind die Steuerungen 0. Zuerst rechnet das Programm 200 Iterationen mit 50 Intervallen (ndiskret = 51, inter = 1). Dann 200 Iterationen mit 100 Intervallen (ndiskret = 51, inter = 2). Dann 200 Iterationen mit 200 Intervallen (ndiskret = 51, inter = 4). Zuletzt 10 Iterationen mit 600 Intervallen (ndiskret = 51, inter = 12). Die Rechenzeit beträgt ca. 15 Sekunden auf einem 4 GHz Laptop. Der Fehler beträgt am Ende der Rechnung etwa 0,31. Die Steuerungen sind jetzt an ndisket Stellen gegeben. Für die Rechnung wurden sie linear interpoliert. Das Programm zur Rechnung "kreishochdi2.for" findet sich in meinem Matheplanet-Notizbuch. Wie komme ich auf den Dateinamen? Es geht um das Kreis- und Achtproblem und es wird im schnellsten Programm "hochdiskretisiert".

Lösung in Matlab/Octave

Bild 1: Steuerungen u1 bis u4, Bild 2: x3, Bild 3: Zustand x1 und Bild 4: Zustand x2 nach 100 Iterationen Es wird dasselbe Problem wie eben gelöst. Das nichtlineare Problem wird mit einem einfachen Gradientenverfahren gelöst. (Ich hatte zeitweise auch mit einem SQP-Verfahren gerechnet, aber momentan kein Matlab zur Verfügung. In Octave sind die Aufrufe für das SQP-Verfahren anders.) Diesmal wird ode45 in Octave genutzt. Zu Beginn sind die Steuerungen 0. Es werden diesmal 100 Iterationen ausgeführt. Die Rechenzeit beträgt 27257 Sekunden auf einem 4 GHz Laptop. Der Funktionswert beträgt am Ende 0,62 und würde bei weiterer Rechnung noch etwas fallen. Das Programm "Acht2.m" und die Hilfsprogramme finden sich in meinem Matheplanet-Notizbuch. Mit SQP-Verfahren und ode45 ist das Achtproblem in Matlab lösbar - leider ziemlich langsam (auch beim Gradientenverfahren und ode45 in Octave).

Ergänzungen

Steuerungen u am Ende der Rechnung (ndiskret = 1501)
Zustand x am Ende der Rechnung (ndiskret = 1501) (a) In Fortran habe ich auch einmal mit ndiskret = 1501 und inter = 1 gerechnet. alpha war wie immer 0,01. Siehe Bilder. (b) Unter Octave habe ich mit kleinerem ndiskret experimentiert. Für n = 11 (bzw. ndiskret) und n = 21 findet man keine vernünftige Approximation der Acht. (c) Das Achtproblem ist mit konstanten u's nicht zu lösen. Es gibt einen Kreuzungspunkt. Dort müssen die rechten Seiten der zugehörigen Differentialgleichungen verschiedene Werte haben. (d) Wenn man zu einer "atan()"-Differentialgleichung am Ende noch einen Input addiert, hat man ein Input-Neuron eines Neuronalen Netzes mit variablen Gewichten.
(e) Als Aktivierungsfunktion des Neuronalen Netzes wurde atan gewählt - eine sigmoide (s-Förmige) Funktion (siehe Bild). (f) Ein Kurzvideo zum Achtproblem findet sich auch in meinem Matheplanet-Notizbuch.

Ende

In meinem Matheplanet-Notizbuch finden sich ein Fortran-Programm und mehrere Matlab/Octave-Files und extra auch ein Kurzvideo zur "Acht". fav.php?uname=Delastelle Viele Grüße Ronald
\(\endgroup\)
Get link to this article Get link to this article  Printable version Printer-friendly version -  Choose language     Kommentare zeigen Comments  
pdfFür diesen Artikel gibt es keine pdf-Datei


Arbeitsgruppe Alexandria Dieser Artikel ist nicht im Verzeichnis der Arbeitsgruppe Alexandria eingetragen.
[Die Arbeitsgruppe Alexandria katalogisiert die Artikel auf dem Matheplaneten]

 
 
Aufrufzähler 217
 
Aufrufstatistik des Artikels
Insgesamt 5 externe Seitenaufrufe zwischen 2021.02 und 2021.10 [Anzeigen]
DomainAnzahlProz
https://google.com120%20 %
https://duckduckgo.com240%40 %
https://www.ecosia.org120%20 %
https://www.bing.com120%20 %

Aufrufer der letzten 5 Tage im Einzelnen
Insgesamt 1 Aufruf in den letzten 5 Tagen. [Anzeigen]
DatumAufrufer-URL
2021.10.26 08:14https://google.com/

[Top of page]

"Mathematik: Optimale Steuerung bzw. Neuronales Netz mit variablen Gewichten - ein Beispiel" | 0 Comments
The authors of the comments are responsible for the content.

 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]