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

fmincon optimiert nicht richtig?

 

Röderich
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 05.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2019, 17:29     Titel: fmincon optimiert nicht richtig?
  Antworten mit Zitat      
Hallo Zusammen!

Habe eine Aufgabe in der ich die Wandstärken und Maße eines Trägers optimieren soll (so leicht wie möglich), welcher auf drei Lastfälle ausgelegt sein soll, welche jedoch nicht gleichzeitig auftreten, sondern einzeln.

Wenn ich jetzt jeweils nur einen Lastfall mit fmincon betrachte (1. & 2. Lastfall: 3 Ungleichungen als Nebenbed./ 3. Lastfall: 4 Ungleichungen) kommen genau die für den gesuchten Lastfall optimalen Ergebnisse raus, geprüft durch mein FEM Programm.

Wenn ich jetzt aber alle Nebenbed. über einen FUN mitgebe d.h. selbe function, nur 10 Ungleichungen statt 3/4 (Habe zum Testen die nicht benötigten Lastfälle nur mit % lahmgelegt) stimmen die Ergebnisse nicht mit den Erwartungen überein, d.h. bspw für einen Lastfall viel zu hohe Werte, für den nächsten Lastfall aber dann viel zu niedrig (mindestens eine NB nicht mehr erfüllt?)! D.h. die errechneten optimalen Maße sind auf einmal alles andere als optimal.

Verändern der Grenzen/Startwerte wie lb,ub,x0 bringt keine Veränderung! Ich sitze vermutlich nicht in einem lokalen Minimum.

Hat jemand mit so etwas schonmal Bekanntschaft gemacht? Würde mich sehr über Hilfe freuen!
Muss ich fmincon evtl für jeden Lastfall einzeln betrachten und bspw. über eine/zwei geeignete Schleifen kombinieren?


Meinen Code sende ich euch gerne per DM, da mein Prof. ziemlich streng bewertet würde ich den Code nur ungern allen öffentlich zugänglich machen. Im Bezug auf "möglichen Betrug" (Abschreiben) versteht der Herr keinen Spaß.

Vielen Dank im Voraus! Smile
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: 05.09.2019, 22:01     Titel:
  Antworten mit Zitat      
Hallo,

Da sind leider zu viele Unklarheiten um weiterhelfen zu können.
Wichtigste Frage: was ist denn in den Fällen mit nicht erwarteten Ergebnissen die Rückmeldung von fmincon?

Zitat:
Wenn ich jetzt aber alle Nebenbed. über einen FUN mitgebe

Bedeutet was? Konkreter: als welches Argument werden die Nebenbed. übergeben?

Zitat:
nur mit % lahmgelegt

Bedeutet was?

Zitat:
Verändern der Grenzen/Startwerte wie lb,ub,x0 bringt keine Veränderung!

Hast du testhalber mal versucht, das erwartete Extremum als Startwert anzugeben?

Zitat:
Ich sitze vermutlich nicht in einem lokalen Minimum.

Wie kommst du zu der Vermutung?

Zitat:
Muss ich fmincon evtl für jeden Lastfall einzeln betrachten und bspw. über eine/zwei geeignete Schleifen kombinieren?

Das musst du abhängig von der Anwendung entscheiden. Wenn eine Konfiguration für verschiedene Fälle geeignet sein soll, dann muss auch alles auf einmal als Nebenbed. übergeben werden.

Falls das nicht weiterhilft, wäre meine Empfehlung, sich an den Prof. oder einen seiner Assistenten zu wenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Röderich
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 05.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2019, 13:42     Titel:
  Antworten mit Zitat      
Hallo!
Danke für die Rückmeldung, ich versuche mal mein Problem etwas zu spezifizieren:

Zitat:

Da sind leider zu viele Unklarheiten um weiterhelfen zu können.
Wichtigste Frage: was ist denn in den Fällen mit nicht erwarteten Ergebnissen die Rückmeldung von fmincon?


Rückmeldung ist in allen Fällen die selbe:
Code:


Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the optimality tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.

<stopping criteria details>
 


Zitat:

Bedeutet was? Konkreter: als welches Argument werden die Nebenbed. übergeben?


Nebenbed. habe ich als eigene function, übergeben als function handle:
Code:

options = optimoptions(@fmincon,'Display','iter','Algorithm','interior-point');
[x,A]  = fmincon(@Zielfkt,x0,[],[],[],[],ug,og,@Nebenbed,options); %x(1)=b,x(2)=h,x(3)=t1,x(4)=t2
 


Mit " durch % lahmgelegt" meinte ich das ich alle NBs von Anfang an in die function für die NBs gepackt habe, für die Fehlersuche habe ich jeweils die einzelnen Lastfälle in Kommentare verwandelt.

Zitat:

Hast du testhalber mal versucht, das erwartete Extremum als Startwert anzugeben?


Ja habe ich versucht, ohne Veränderung des Ergebnisses. Auf die Vermutung das ich nicht in einem lokalen Minima sitze komme ich, da ich die Grenzen deutlich variiert habe, sowie versuchte von beiden Richtungen an mein gesuchtes Minima heranzurücken (über veränderte Startwerte), oder kennen Sie hierzu eine bessere Lösungsstrategie?
Wie man vermutlich herausließt würde ich mich in den Bereich des fortgeschrittenen Anfängers einordnen.

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Röderich
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 05.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2019, 14:14     Titel:
  Antworten mit Zitat      
UPDATE

Problem wurde gelöst! Habe zwei Zeilen Code nochmal ausführlicher geschrieben, muss irgendwo eine Verwechslung mit einer variablen gegeben habe, welche wohl erst zum Tragen kam als ich alle Nebenbed. zum optimieren in meiner function hatte!

Vielen Dank für die Hilfe! Problem gelöst!

tl;dr: Ich war zu doof zum abschreiben
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: 06.09.2019, 16:24     Titel:
  Antworten mit Zitat      
Hallo,

schön, dass jetzt alles klappt.

Für dich und auch andere, die ggf. auf den Thread stoßen:
- Wenn die Meldung besagt, dass ein lokales Minimum gefunden wurde, dann ist das in aller Regel auch so. Oft ist man allerdings an einem globalen Minimum interessiert. Da helfen ausreichend gute Startwerte oder Strategien für globale Optimierung (z.B. for-Schleife über verschiedene Startpunkte oder Global Optimization Toolbox)
- Wenn man ein lokales Minimum als Startpunkt angibt, wird fmincon in aller Regel nicht aus diesem herauslaufen (Ausnahme eher akademischer Natur: es ist ein lokales Minimum mit sehr kleinem "Einzugsgebiet).
- Wenn nicht explizit die Meldung kommt, dass Nebenbedingungen verletzt werden, dann werden sie meiner Erfahrung nach immer eingehalten. Meist wurden die Nebenbedingungen dann falsch angegeben (z.B. in der Form Ax >= b statt Ax <= b).

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Röderich
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 05.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2019, 11:09     Titel:
  Antworten mit Zitat      
Zitat:

Für dich und auch andere, die ggf. auf den Thread stoßen:
- Wenn die Meldung besagt, dass ein lokales Minimum gefunden wurde, dann ist das in aller Regel auch so. Oft ist man allerdings an einem globalen Minimum interessiert. Da helfen ausreichend gute Startwerte oder Strategien für globale Optimierung (z.B. for-Schleife über verschiedene Startpunkte oder Global Optimization Toolbox)
- Wenn man ein lokales Minimum als Startpunkt angibt, wird fmincon in aller Regel nicht aus diesem herauslaufen (Ausnahme eher akademischer Natur: es ist ein lokales Minimum mit sehr kleinem "Einzugsgebiet).
- Wenn nicht explizit die Meldung kommt, dass Nebenbedingungen verletzt werden, dann werden sie meiner Erfahrung nach immer eingehalten. Meist wurden die Nebenbedingungen dann falsch angegeben (z.B. in der Form Ax >= b statt Ax <= b).


Danke für die Info! Räumt doch einige Unklarheiten aus dem Weg. In die globale Optimierung muss ich mich mal noch reinlesen.

Grüsse
Carlo
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: 07.09.2019, 13:47     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Global Optimization Toolbox hast, gibt diese Seite m.E. hilfreiche Empfehlungen, wann man welchen Solver einsetzen sollte:
https://www.mathworks.com/help/gads.....osing-another-solver.html

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
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.