Verfasst am: 27.06.2013, 12:15
Titel: fmincon problem
Hallo,
vielleicht könnt ihr mir bei meinem Problem weiterhelfen!
Ich habe eine Optimierungsaufgabe bei dem "P" maximiert werden soll. Die Nebenbedingung N(P) ist abhägig von P und muss bei jedem Optimierungsschritt über eine Funktion (nichtlinear) berechnet werden. Es werden mehrere Optimierungen hintereinander durchgeführt. Manchmal passiert es, dass P zu groß ist und keine Nebenbedingung N(P) existiert. Das hat einen Error zur Folge. Es sind zwar Grenzen für P definiert, jedoch werden diese bei den Optimierungsschritten nicht eingehalten.
Ich habe probiert der Nebenbedingung Werte (0,inf,NaN) von der berechnenden Funktion auszugeben die dem fmincon sagen hier gehts nicht weiter. Ohne Erfolg.
Meine Frage:
-Kann man fmincon sagen dass Optimierungsschritte bei denen keine Nebenbdinungen N existieren nicht werten soll, und es mit anderen P's nochmal probieren soll?
-Bzw. kann ich die Optimierung abbrechen, ohne Fehlermeldung, damit die weiteren Optimierungen fortlaufen können?
Ich habe probiert der Nebenbedingung Werte (0,inf,NaN) von der berechnenden Funktion auszugeben die dem fmincon sagen hier gehts nicht weiter. Ohne Erfolg.
Diesen Satz verstehe ich nicht. Wie hat sich die Erfolglosigkeit geäußert?
Ich würde bei der nichtlinearen Nebenbedingung 1 zurückgeben. Eine nichtlineare NB gilt ja als erfüllt, wenn sie <= 0 bzw. nahe bei 0 ist, und das ist dann ja nicht der Fall.
Zitat:
Kann man fmincon sagen dass Optimierungsschritte bei denen keine Nebenbdinungen N existieren nicht werten soll, und es mit anderen P's nochmal probieren soll?
Das sollte durch das auf-1-setzen gelöst sein.
Zitat:
Bzw. kann ich die Optimierung abbrechen, ohne Fehlermeldung, damit die weiteren Optimierungen fortlaufen können?
Theoretisch kann man mit try-catch arbeiten. Um beurteilen zu können, inwieweit das sinnvoll ist, müsstest du aber die Struktur deiner Anwendung genauer erklären.
Grüße,
Harald
Roberto
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.06.2013, 11:29
Titel:
Danke für die schnelle Antwort Harald! ich werde versuchen mein Problem zu konkretisieren.
Und die Funktion mit der die Nebenbed. berrechnet wird. Das ist jetzt nur der Part bei dem der Fehlerfall eintritt, dass keine Nebenbedingungen existieren:
in der Nebenbedingung sind die Grenzen definiert, das i_un nicht größer als ith werden darf und das Un zwischen 90 und 112 ist. wenn ich nun einfach als rückgabewert für i_un=ith*1.1 und Un=120 kommt es zu dem selben Fehler.
Falls nun keine existieren erscheint folgender Error:
P_mat =
3.0000
3.0000
3.0000
P_mat =
-7.9118
-6.3690
3.0000
Fehler:
Fehler: E 3101: Lastfluss: keine Konvergenz, Abbruch nach 10 Iterationen
P_mat =
-7.9118
-6.3690
3.0000
Error using .*
Matrix dimensions must agree.
Error in nlconst (line 764)
MERIT = f + sum(OLDLAMBDA.*(ga>0).*ga);
Error in fmincon (line 837)
[X,FVAL,LAMBDA,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in OPT_Doppelleitung_P2G_neu_N1Sicherheit (line 407)
[x,fx,exit] = fmincon(@(P) FUNC_OPT_Doppelleitung_P2GWind(P),startwert, ...
P_mat sind die Werte aus dem die Nebenbedingung errechnet wird.
P.S.: Der interior-point - Algorithmus dauert länger und ich kann gerade nicht sagen ob er funktioniert da ich gerade nicht am simulationrechner bin. sobald ich kann werde ich das natürlich austesten.
meine Vermutung ist, dass Un und i_un normalerweise Vektoren sind. Du musst im Fehlerfall auch Nullvektoren der entsprechenden Dimensionen zurückgeben, damit die Dimensionen weiterhin zusammenpassen.
Grüße,
Harald
Roberto
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.07.2013, 10:02
Titel:
Hallo,
danke für den Hinweis! Die Dimension passte nicht! Ich hoffe das die Optimierung so funktionieren wird.
Vielen dank Harald!
LG Robert
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
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.