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

Hilfe bei der Anwendung von fmincon - fminsearch

 

Matmarv
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 23.04.2013, 11:45     Titel: Hilfe bei der Anwendung von fmincon - fminsearch
  Antworten mit Zitat      
Hallo,

ich habe versucht mit "fminsearch-X = fminsearch(FUN,X0)" eine Optimierung durchzuführen. Dabei werden die Parameter jedoch negativ. Dies ergibt jedoch keinen Sinn.
Aus diesem Grund bin ich auf die Funktion fmincon gestoßen, da man dort Grenzen definieren kann.

X = fmincon(FUN,X0,A,B)

Kann mir jemand erklären wie ich die Grenzen festlege und wozu ich A und B brauche?

Gruß Marvin
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

steht an sich in der Dokumentation. A und b sind lineare Ungleichungen, untere und obere Schranken sind erst spätere Argumente.
Wenn die anderen Argumente nicht benötigt werden, können sie auf [] gesetzt werden.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 23.04.2013, 18:43     Titel:
  Antworten mit Zitat      
hey,

also könnte ich schreiben:

[code]p0= fmincon(para_opt,p0,[],[],[],[],lb,hb)

lb= untere grenzvektor
hb= obere grenzvektor

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

sollte gehen, ja. Hast du's denn mal versucht?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 23.04.2013, 19:54     Titel:
  Antworten mit Zitat      
Hi,

jepp habe ich gerade getan.
Ich bekomme folgende Meldung:


Warning: Trust-region-reflective algorithm does not solve
this type of problem, using active-set algorithm. You could
also try the interior-point or sqp algorithms: set the
Algorithm option to 'interior-point' or 'sqp' and rerun.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2013, 20:17     Titel:
  Antworten mit Zitat      
Hallo,

diese Meldung ist nicht weiter ungewöhnlich. Wenn die Ergebnisse passen, kannst du sie getrost ignorieren. Wie sie behoben werden kann, steht ja dort. Das Setzen der Optionen erfolgt mit optimset.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 23.04.2013, 20:22     Titel:
  Antworten mit Zitat      
oki super,

ich werde die Ergebnisse morgen untersuchen und mich dann nochmal melden =)
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 08:26     Titel:
  Antworten mit Zitat      
Hallo,

leider erhalte ich folgende Meldung:

Warning: To use the default trust-region-reflective algorithm you must supply the
gradient in the objective function and set the GradObj option to 'on'. FMINCON will use
the active-set algorithm instead. For information on applicable algorithms, see
Choosing the Algorithm in the documentation.
> In fmincon at 520
In fmincon_test at 176
Warning: Your current settings will run a different algorithm (interior-point) in a
future release.
> In fmincon at 525
In fmincon_test at 176

Local minimum possible. Constraints satisfied.

fmincon stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
are satisfied to within the default value of the constraint tolerance.

<stopping criteria details>

No active inequalities.


Ich habe die Grenzen extrem Groß gemacht und der Fehler kommt immer noch. Vllt wisst ihr ja was man da machen kann!?

Liebe Grüße
Marvin
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

ich bin mit den Ergebnissen der Optimierung noch nicht zufrieden.
Vielleicht gibt die Funktion "para_opt" das Falsche an fmincon zurück.

Meine jetzige LÖsung:

Code:
[p,fval,exit]=fmincon(@para_opt,p0,[],[],[],[],lb,hb,[],options);

%Der Ruckgabewert:
%ks_temp_speicher enthält das Ergebnis meiner Simulation
%ks_verlauf_tetta enthält die Messwerte

output_args=norm(ks_temp_speicher1-ks_verlauf_tetta)

 


Gebe ich so die Fehlerquadratsumme zurück ?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

sieht auf den ersten Blick gut aus. Für kleinste Quadrate ist oft lsqnonlin besser.
Vermutlich läuft fmincon in ein lokales Minimum. Da helfen bessere Startwerte bzw. Iterieren über verschiedene Startwerte.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 19:25     Titel:
  Antworten mit Zitat      
Wie geht das mit dem Interieren ?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 20:01     Titel:
  Antworten mit Zitat      
Ich habe noch ne Frage.

Man kann sich ja Fval ausgeben lassen.
Der Wert liegt um die 300.
Sollte der nicht gegen 0 gehen wenn man ein minimum hat?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 20:12     Titel:
  Antworten mit Zitat      
Ich nochmal,

das Ergebnis hängt auch super stark von der Gewichtung ab.
Das Problem ist, dass ich für den verlauf eines Wertes 15000 punkte habe und für die anderen jeweils nur einen stationären Wert. Ich habe deshalb die norm(x-x2)/1000 (x und x2 sind die 15000 werte) geteilt damit die einzelnen werte mehr ins Gewicht fallen.

Wie man das am besten gewichtet weiß auch niemand oder?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 24.04.2013, 21:24     Titel:
  Antworten mit Zitat      
Ich habe noch ne Frage.

Ich hatte einen kleinen fehler im Programm.
Jetzt braucht die optimierung ewig. Wie lang kann es dauern wenn 30 parameter angepasst werden?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.04.2013, 21:43     Titel:
  Antworten mit Zitat      
Hallo,

bitte stelle deine Fragen möglichst zusammenhängend.
Den Beitrag von 8:26 hatte ich übersehen - das ist eine ganz normale Statusmeldung von fmincon, keine Fehlermeldung.

Zitat:
Wie geht das mit dem Interieren ?

Pseudocode:
Code:

for ...
Startwert wählen
fmincon anwenden
Ergebnis mit vorherigen vergleichen und schauen, ob es besser ist
end


Zitat:
Der Wert liegt um die 300.
Sollte der nicht gegen 0 gehen wenn man ein minimum hat?

Das hängt sehr von deinen Daten ab. Möglich ist wie gesagt, dass du ein lokales Minimum gefunden hast.

Zitat:
Ich habe deshalb die norm(x-x2)/1000 (x und x2 sind die 15000 werte) geteilt damit die einzelnen werte mehr ins Gewicht fallen.

Was haben x und x2 mit den zuvor genannten Variablen zu tun? Eine reine Skalierung der gesamten Zielfunktion sollte zu keiner Änderung führen.

Zitat:
Wie man das am besten gewichtet weiß auch niemand oder?

Dazu müsste man erst mal verstehen, was du genau gegeben hast und was du damit erreichen willst. Ich sehe hier jedenfalls nur Bruchstücke.

Zitat:
Jetzt braucht die optimierung ewig. Wie lang kann es dauern wenn 30 parameter angepasst werden?

Zwischen Sekundenbruchteilen und Monaten kann ich mir da alles vorstellen - sorry, pauschale Frage --> pauschale Antwort.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.