WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit quadprog

 

FilzFranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2010, 09:53     Titel: Problem mit quadprog
  Antworten mit Zitat      
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)

die Optimierung starte ich dann durch

> [xopt fval] = quadprog(H,q,[],[],A,b);

Es wäre super, wenn jemand eine Idee hätte!

lg, Franzi


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 09:59     Titel:
  Antworten mit Zitat      
Hallo,

Code:
opts = optimset('Display', 'iter');
[xopt fval] = quadprog(H,q,[],[],A,b, [], [], [], opts);

Es könnte helfen, soweit bekannt einen Startwert (statt des letzten [])anzugeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 13:11     Titel:
  Antworten mit Zitat      
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...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 14:18     Titel:
  Antworten mit Zitat      
Hallo,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 16:20     Titel:
  Antworten mit Zitat      
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?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2010, 17:00     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 17:49     Titel:
  Antworten mit Zitat      
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.

output.jpg
 Beschreibung:

Download
 Dateiname:  output.jpg
 Dateigröße:  54.57 KB
 Heruntergeladen:  708 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.06.2010, 10:10     Titel:
  Antworten mit Zitat      
Hmm... merkwürdig... einziger Rat, den ich da habe, ist: versuchs mit einer neueren Version von MATLAB...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2010, 12:12     Titel:
  Antworten mit Zitat      
hmm, trotzdem danke!
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 29.06.2010, 13:16     Titel:
  Antworten mit Zitat      
Hallo,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2010, 10:11     Titel:
  Antworten mit Zitat      
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 Sad
 
Filzfranzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2010, 11:00     Titel:
  Antworten mit Zitat      
Jetzt kam folgende Fehlermeldung:

>> [xopt_m,fval,exitflag,Koeff_m,q,nb,b]= fleten_opt_jahr(quotes,0.01,peak,2009,hpfc09_jahresprofil)

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.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.