Verfasst am: 23.06.2010, 08:53
Titel: Problem mit quadprog
Hallo,
ich sitze schon eine Weile an einem quadratischen Optimierungsproblem und hatte eigentlich auch schon die Lösung mittels quadprog gefunden... Allerdings scheint das nicht immer zu funktionieren.
Das MatLab fordert mit immer auf MaxPCGIter zu erhöhen, das hab ich jetzt auch schon ein paar mal gemacht, aber es kommt einfach zu keinem Ergebnis. Kann mir jemand sagen, wie ich herausfinden kann, ob mein Restriktionsbereich beschränkt oder unbeschränkt ist?
Ist es möglich Zwischenschritte der Optimierung ausgeben zu lassen? So dass ich sehe, ob die Lösung konvergiert?
Mein Problem sieht wie folgt aus:
min (1/2)*x^T*H*x+q^T*x
mit A*x=b
Die Matrizen haben folgende Formate
x - zu optimierender Spaltenvektor (8760 x 1)
H - (8760 x 8760)
q - (8760 x 1)
Nebenbedingungen:
A - (24 x 8760)
b - (24 x 1)
Es könnte helfen, soweit bekannt einen Startwert (statt des letzten [])anzugeben.
Grüße,
Harald
Filzfranzi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.06.2010, 12:11
Titel:
hey Harald,
danke für deine Antwort.
Hab leider schon versucht Display auf Iter zu setzen, aber das funktioniert nicht. Da steht auch in der Hilfe, das diese Option nicht möglich ist. Liegt das vielleicht an meiner MatLab-Version? Ich hab die 7. Funktioniert Iter bei dir??
Einen Startwert hab ich leider nicht.
Aber es muss doch irgenwie möglich sein, irgendetwas ausgeben zulassen, was ich dann als neuen Startwert verwenden kann...
stimmt, display iter geht hier nicht.
Bekommst du bei einem Abbruch nicht die letzte Lösung?
Inwiefern funktioniert es nicht, wenn man PCGIter höher setzt? Gleiches Resultat nach längerer Wartezeit, oder überhaupt keine Änderung?
Grüße,
Harald
Filzfranzi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.06.2010, 15:20
Titel:
nein, es gibt eben gar nix zuürck.
Ich habe 8760 Variablen und habe maxPCGIter schon auf 100.000 gesetzt. Hat dann 2 stunden gedauert, aber es gab wieder nur die Meldung, dass ich maxPCGIter erhöhen soll.
Ich weiß nicht, ob es sinnvoll ist, noch wieter zu erhöhen. Normalerweise sagt man doch 10mal so viele Iterationen wie Variablen sollten reichen, oder?
Weißt du vielleicht, wie ich rausfinden kann, ob meine Aufgabe überhaupt konvergiert?
So gut sind meine Theoriekenntnisse leider nicht. Aber ich muss da nochmal nachhaken:
Bekommst du eine Fehlermeldung (in rot) oder eine Statusnachricht?
Vor allem in letzterem Fall: hat xopt im Workspace einen Wert? Wenn ja, sollte das eben der letzte Punkt sein.
Grüße,
Harald
Filzfranzi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.06.2010, 16:49
Titel:
xopt wird zwar angelegt, enthält aber nur NaN.
Es kommt kein Fehler, aber die optimierung endet halt nicht.
Ich häng mal ein Bild vom Output an.
eine wirkliche Lösung habe ich auch nicht. Höchstens den Versuch, statt quadprog mit einem nichtlinearen Löser, sprich fmincon es zu versuchen. Die Zielfunktion kann man ja direkt in H und x und q hinschreiben ...
Titus
Filzfranzi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.07.2010, 09:11
Titel:
danke für den Vorschlag.
Ich hab es gestern probiert und dann nach 5 Stunden abgebrochen.
Ich lass es grad nochmal laufen, aber es sieht nicht so aus, als wöllte es zu einer Lösung kommen
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In fmincon at 260
In fleten_opt_jahr at 141
??? Error using ==> ctranspose
Out of memory. Type HELP MEMORY for your options.
Error in ==> optim\private\nlconst at 682
HESS = (HESS + HESS')*0.5;
Error in ==> fmincon at 498
[X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in ==> fleten_opt_jahr at 141
xopt=fmincon(@(x) 1/2*x'*Koeff_m*x+q'*x,zeros(8760,1),nb,b);
fmincon wird in der Funktion fleten_opt_jahr aufgerufen.
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.