|
|
GA Optimierung - Bedingungen an Fitnessfunktion |
|
student_2021 |
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 26.01.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.02.2021, 16:03
Titel: GA Optimierung - Bedingungen an Fitnessfunktion
|
|
|
|
|
Hallo,
ich hatte schon eine Frage zu meinem Problem gestellt, will es aber hier nochmal deutlicher formulieren.
Ich möchte eine Optimierung mittels ga durchführen. Das funktioniert auch alles soweit, jedoch sollen nun 2 Beschränkungen für die Fitnessfunktion gesetzt werden.
Mein Vektor für die 9 veränderlichen Variablen sieht folgendermaßen aus:
Für x0 habe ich jeweils obere und untere Grenze sowie lineare Abhängigkeiten mittels A und b formuliert (x0(1) < x0(2) etc). Im weiteren Verlauf des Funktionsskriptes werden mittels den variierten x0's verschiedene Größen berechnet, die in Matrizen "Geschwindigkeit" und "Weg" abgespeichert werden. Diese beiden Größen bilden dann auch meine Fitnessfunktion:
hier ist also kein x0 direkt mehr enthalten, sondern wurde vorher zum Erstellen von Geschwindigkeit und Weg verrechnet.
Nun möchte ich Bedingungen einführen, dass "Geschwindigkeit<20" und "Weg<10" sein soll.
Ich habe in meinen "variabel_Vektor" Geschwindigkeit und Weg mit aufgenommen,
A um "1-20" und "1-10" und b um zwei 0en ergänzt und die Anzahl der veränderlichen Variablen auf 11 erhöht, in der Hoffnung, dass ga so den beiden Größen in der Fitnessfunktion Beschränkungen zuordnen kann.
Leider klappt das nicht, direkt nach Aufrufen des Funktionsskriptes gibt es einen Fehler beim Definieren des "variabel_Vektor"...
Hat jemand eine Idee, wie ich meiner Fitnessfunktion die genannten Einschränkungen übermitteln kann? Ich bin für jeden Tipp dankbar!
Vielen Dank im Voraus :)
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.02.2021, 17:02
Titel:
|
|
Hallo,
da du in dem anderen Beitrag keine Folgefrage mehr gestellt hast, bin ich davon ausgegangen, dass es keine Frage mehr dazu gibt.
Wenn du Unterstützung bei einer Fehlermeldung möchtest, kopiere bitte den Fehler anstatt ihn zu übersetzen und poste den zusammenhängenden Code. Falls die Fehlermeldung "undefined variable" ist, dürfte das an verschiedenen Workspaces liegen. Aus deinen Code-Schnipsel kann man aber nicht erahnen, was in welchem Workspace ist.
Wenn Geschwindigkeit und Weg linear von x0 abhängen, kannst du das als lineare Ungleichung angeben. Ansonsten bleibt nur der Weg über eine nichtlineare Ungleichung. Den Weg über zusätzliche Variablen halte ich nicht für sinnvoll, da so wohl kaum der Zusammenhang zu x0 erhalten bleibt.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
student_2021 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 26.01.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.02.2021, 12:10
Titel:
|
|
|
|
|
Hallo Harald,
dankeschön für deine Antwort.
Zu meinem ersten Beitrag hatte ich auch keine Folgefrage, hier meinte ich einen neuen Beitrag den ich vor ein paar Tagen geschrieben aber durch diesen konkretisierten Beitrag ersetzt habe.
Die Fehlermeldung lautete "not enough input arguments".
Das Problem mit den verschiedenen Workspaces habe ich mittels evalin und assign im Griff, das funktioniert soweit alles.
Ich habe auf dein Anraten hin mal in meinem Funktionsskript die Berechnungen für die Fitnessfunktion so aufgeschlüsselt, dass das x0 noch darin enthalten ist. Im Wesentlichen sieht der Code wie folgt aus:
Der Wert der Fitnessfunktion kann vermutlich weiterhin so berechnet werden, da GA ja in den vorigen Berechnungen die Einschränkungen durch das x0 verwerten kann. (?)
Alle sonst verwendeten Variablen wie v0,mf, ... liegen als Zahlenwert vor.
Die Bedingungen sehen dann wie folgt aus:
Ich erhalte also mit dem Wurzelterm eine nichtlineare Ungleichung und für den Weg eine lineare Ungleichung. Und da sich das x0 ja immer auf den Index aus dem jeweiligen Schleifendurchlauf bezieht, kann ich auch keine "festen" Beziehungen, wie bereits in Matrix A enthalten, angeben... hier bin ich etwas ratlos.
Gibt es einen Weg, wie sich diese beiden Bedingungen an GA übergeben lassen?
Vielen Dank im Voraus für die Mühe!
Grüße
Daniel
|
|
|
student_2021 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 26.01.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.02.2021, 21:54
Titel:
|
|
ich habe noch eine Folgefrage hierzu: beim Aufstellen der linearen Bedingungen ergeben sich die Matrix A und Vektor b.
Die 9 unteren Einträge von A sind jeweils den 9 unteren Einträgen in Vektor b zugeordnet.
Die 9 unteren Einträge in b hängen als Zahlenwert aber von dem Parameter des Schleifendurchlaufes ab, siehe folgenden Code:
wenn ich die for-Schleife für b so im Command Window ausführe, bekomme ich b als "1x4 cell", siehe auch Anhang. Ist es dem genetischen Algorithmus so möglich, die linearen Randbedingungen zu verwenden und für die Berechnung der Fitnessfunkltion dies den Schleifendurchläufen S_1 zuzuordnen?
Wenn ich jedoch den Genetischen Algorithmus ausführen möchte, wird folgender Fehler ausgegeben:
wo liegt hier der Fehler? Etwas scheint evtl mit den Datenformaten nicht zu passen?
Beschreibung: |
|
Download |
Dateiname: |
b.mat |
Dateigröße: |
242 Bytes |
Heruntergeladen: |
272 mal |
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|