|
|
fmincon Nebenbedingung o. Gl.-Sys. mit beliebigen Variablen? |
|
seppl265 |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 25.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2010, 10:03
Titel: fmincon Nebenbedingung o. Gl.-Sys. mit beliebigen Variablen?
|
|
Hallo,
Ich habe ein Optimierungsproblem in Matlab mit 2 Designvariablen (x(1) & x(2)) was über fmincon gelöst werden soll. Als Ergebniss soll eine der Designvariablen über die Zielbedingung minimiert werden. Zusätzlich müssen Ergebnisse die wiederum von den Designvariablen abhängig sind in bestimmten Intervallen liegen. Mein Problem ist derzeit, dass ich über die Nebenbedingung bzw. über die Angabe eines Ungleichungsystems in der Optimierung dafür nur die Designvariablen verwenden kann und nicht die Ergebnisvariablen. Die Berücksichtigung der Grenzen mit in der Zielbedingung über eine geeignete Funktion bringt nicht die erwünschten Ergebnisse.
Über ein paar Tips bzw. eine Lösung wäre ich sehr dankbar.
Viele Grüße
Sebastian[/b]
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.02.2010, 15:42
Titel:
|
|
Hallo,
die Ergebnisvariablen sind doch die (optimierten) Designvariablen?
Es macht vieles einfacher, wenn man mal versucht, das ganze formal (und in dem von fmincon gegegeben Framework mit Nebenbedingungen, linearen Gleichungen und Ungleichungen sowie nichtlinearen Nebenbedingungen) niederzuschreiben.
Und wenn es um ein Problem mit bestimmtem Code geht, dann bitte den Code(-ausschnitt) zur Verfügung stellen.
Grüße,
Harald
|
|
|
seppl265 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 25.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.02.2010, 09:14
Titel:
|
|
|
|
|
Hallo
Ich verstehe die obige Antwort nicht so ganz, versuche aber alles noch einmal genauer zu bschreiben.
Ich habe meine zwei Designvariablen, die im Laufe der Optimierung variabel sind und die es zu optimieren gilt. Diese Designvariablen gehen als Eingangsgrößen in ein Skript, dass wiederum Outputvariablen liefert. Diese Outputvariablen müssen vorgegebene Grenzen unterschreiten. Dieses wüde ich gerne über eine Nebenbedingung realisieren oder über die Angabe eines Ungleichungsystem (Angabe A,B in fmincon). Die Angabe eines Ungleichungsystem bezieht sich aber immer auf die Designvariablen und nicht auf mögliche Outputvariablen. Gleiches gilt für die Nebenbedingung ich bekomme in die function der Nebenbedingung nur die Designvariablem integriert und nicht die Outputvariablen.
Eine der Designvariablen soll zusätzlich möglichst große Werte Annehmen. Realiesierung über Zielbedingung des Optimierers möglich.
Wie kann die Einhaltung der Grenzen für die Outputvariablen erzielt werden? Eine unterbringung in der Zielbedingung führt nicht zum gewünschten Erfolg.
Gruß
Sebastian
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.02.2010, 11:33
Titel:
|
|
Hallo,
Formeln sind manchmal einfacher als Text.
"Diese Designvariablen gehen als Eingangsgrößen in ein Skript, dass wiederum Outputvariablen M(x) liefert" (x dabei als Vektor von x(1) und x(2)). Sagen wir also M(x) < N. Dann musst du das lediglich als nichtlineare Nebenbedingung angeben und dazu das vorgegebene Interface verwenden:
http://www.mathworks.com/access/hel.....rhkghv-11.html#brhkghv-16
In etwa so:
und dann @nebenbed als nonlin. constraint angeben
Zitat: |
Eine der Designvariablen soll zusätzlich möglichst große Werte Annehmen. |
Das müsste dann in die Zielfunktion mit aufgenommen werden.
Grüße,
Harald
|
|
|
seppl265 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 25.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.02.2010, 16:55
Titel:
|
|
Hallo, und Vielen Dank für die Antworten.
Aber genau so hatte ich es vorher ja auch schon mal probiert.
Wenn ich die Outputvariablen (M(x)) dort eigebe bekomme ich die Meldung das er diese nicht kennt.
Setze ich die Outputvariable als input mit in die Nebenbedingung funktioniert dieses auch nicht.
function [c,ceq]=nebenbed(x, M(x))
Wie bekomme ich hin das er die Outputvariable in der function der Nebenbedingung zurn Verfügung hat. Habe es auch schon mit global versucht brachte aber auch keinen Erfolg.
Viele Grüße
Sebastian
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.02.2010, 17:18
Titel:
|
|
Hallo,
du musst den Aufruf einer "Outputvariablen" in die Nebenbedingungsfunktion aufnehmen. Mit anderen Worten, in der Nebenbedingungsfunktion muss die Vorschrift, wie diese Outputvariablen berechnet werden, (als Funktionsaufruf) auftauchen.
Klarer kann ich es leider wirklich nicht ausdrücken.
Grüße,
Harald
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 26.02.2010, 20:23
Titel:
|
|
Hallo,
ein Beispiel zum Beispiel: Die Nebenbedingung lautet M(x) <= Schranke. Du hast ein "Skript" M_fun.m, das aus den Designvariablen x eine "Outputvariable" M berechnet. Jetzt ist es wichtig, dass es sich bei dem Skript um eine function handelt:
Die kannst Du jetzt in der Nebenbedingung verwenden:
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Verschoben: 26.02.2010, 20:24 Uhr von Bijick Von Programmierung nach Toolboxen |
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.02.2010, 09:25
Titel:
|
|
Jetzt ist klar. Werde ich am Montag mal ausprobieren und mich melden.
Danke vielmals
|
|
|
NeuInMatlab |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.05.2016, 20:23
Titel: Schranke nicht fest
|
|
Um das Thema wieder aus dem Morast des Internets auszugraben:
Was mache ich wenn ich die Schranke nicht fest sondern flexibel habe?
Kann ich meiner Funktion 'nebenbed' auch noch einen Wert für meine Schranke mitgeben?
Viele Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.05.2016, 21:26
Titel:
|
|
Hallo,
ja. Mit derselben Vorgehensweise, mit der man flexible Werte auch an Zielfunktionen übergeben kann.
[url]de.mathworks.com/help/optim/ug/passing-extra-parameters.html[/url]
(am besten über Anonymous Functions)
Grüße,
Harald
P.S.: Anstatt zu hoffen, dass auf einen so alten, beantworteten Thread noch reagiert wird, ist es meist besser, einen neuen zu starten.
|
|
|
Spilo |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016a/b und R2017a
|
|
|
|
|
|
Verfasst am: 22.12.2017, 07:43
Titel:
|
|
Nocheinmal ausgraben,
ich möchte eine Funktion f(x) mit drei Eingangsparameter (x1,x2,x3) optimieren, d.h. diese drei sollen optimiert werden.
Darüberhinaus sollen folgende Bedingungen gelten:
1. x1>0, x2>0, x3>0
2. x2>x3
3. Die Funktion darf nach der Optimierung maximal 10% Überschwingen, d.h. f(xopti)<=1.1*f(xalt)
Nun stellt sich die Frage, wie ich diese Nebenbedingungen fmincon mitteilen kann.
Gruß
Spilo
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.12.2017, 11:37
Titel:
|
|
Hallo,
1. Argument lb
2. lineare Ungleichung
3. verstehe ich nicht. Was soll xalt sein?
Und so nebenbei... das Ausgraben eines alten Threads bringt nur etwas, wenn das neue Thema direkt mit dem alten zu tun hat.
Wenn man nun einen alten Thread ausgräbt, würde ich erwarten, dass man sich zumindest die Mühe macht, diesen zu lesen. Und was steht da?
Zitat: |
Anstatt zu hoffen, dass auf einen so alten, beantworteten Thread noch reagiert wird, ist es meist besser, einen neuen zu starten. |
Grüße,
Harald
|
|
|
Spilo |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016a/b und R2017a
|
|
|
|
|
|
Verfasst am: 22.12.2017, 13:10
Titel:
|
|
Hallo,
danke für die Antwort.
Fragen 1 und 2, habe ich bereits gelöst. An der 3. hänge ich noch fest.
xalt=alte Funktionswerte vor der Optimierung.
xneu die neuen Funktionswerte sollen maximal 1.1*xalt sein.
Gruß
Spilo
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.487
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.12.2017, 14:34
Titel:
|
|
Hallo,
ich gehe davon aus, dass f minimiert werden soll.
Meinst du jetzt xneu < 1.1*xalt oder f(xneu) < 1.1*f(xalt) ?
Das erste wäre eine Schrankenbedingung, das zweite dürfte sich automatisch über die Optimierung ergeben.
Grüße,
Harald
|
|
|
Spilo |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016a/b und R2017a
|
|
|
|
|
|
Verfasst am: 08.01.2018, 07:39
Titel:
|
|
Hallo,
xalt soll ein Vektor sein, der die alten Regelgröße beinhaltet und xneu eben die neuen. verlangt ist, aber dass die neue (optimierte Regelung) maximal 10% überschwinger haben soll.
Ich habe mein Problem unter Regelungstechnik-Rubrik auch formuliert mit meinem Code-Ansatz, aber es wurde noch nicht kommentiert, deshalb hab ich hier nochmal gepostet, bitte ärgern
Gruß Spilo
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|