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

 

mana
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2016, 16:46     Titel: Fmincon
  Antworten mit Zitat      
Hallo

ich versuche grade ein Minimierungsproblem zu lösen.

Hierzu arbeite ich mit fmincon was auch ganz gut soweit funktioniert.

Ich habe meine Startwerte in einem Vektor x0
und meine Grenzen in den Vektoren x_lb und x_ub.

Soweit passt auch alles.

Wie kann ich fmincon aber sagen, dass z.B. als Lösung x2 < x3 gelten muss?
wenn das nicht einfach über die Grenzen angepasst werden kann, weil die Wertebereiche sich überschneiden?

Vielen Dank für eure Hilfe

Viele Grüße
mana
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

als lineare Ungleichung:
1*x2 - 1*x3 < 0

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2016, 11:26     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank, das hat mich sehr weitergebracht.


Viele Grüße
Timo
Private Nachricht senden Benutzer-Profile anzeigen
 
mana
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2016, 15:13     Titel:
  Antworten mit Zitat      
ich hätte nochmals eine kurze Frage zu den Inequalities.

Mittlerweile habe ich 2 Bedingungen.

Meine Vektoren A und B sehen wie im Folgenden dargestellt aus.

Code:
A = [
    0 0 0 0 0 0 -2 0 0 0 0 0 0 1 0 0 0 0 0;
    0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0
     ];
b = [0;
     0];


Das Problem ist, dass eine Bedingung eingehalten wird und die andere nicht.

Kann ich irgendwie erzwingen, dass beide Inequalities eingehalten werden müssen?

Was ich mathematisch übergeben möchte ist im Prinzip folgendes
Code:
x(7) < x(14) < 2*x(7)


Vielen Dank schonmal

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

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.12.2016, 15:28     Titel:
  Antworten mit Zitat      
Hallo,

es sollten immer alle Nebenbedingungen eingehalten werden.
Was ist denn die Statusmeldung von fmincon (im Command Window, bzw. das dritte Rückgabeargument exitflag)?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2016, 16:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

das exitflag ist auf 2 gesetzt.

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

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.12.2016, 16:23     Titel:
  Antworten mit Zitat      
Hallo,

das bedeutet an sich, dass alle Bedingungen erfüllt sind.
Was ist das Ergebnis von
Code:
wobei x_opt die Lösung durch fmincon ist?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2016, 16:46     Titel:
  Antworten mit Zitat      
Hi Harald,

ich habe das Problem gefunden.

Weiß aber leider grade nicht wie ich das Lösen soll.

Und zwar normiere ich meinen Startvektor auf x0 auf [1, 1, 1, 1, 1, ....]
sodass ich am Ende einfach x_neu * x_norm rechnen muss um auf die Lösung zu kommen.

Das mache ich aus dem Grund, da meine Startwerte eine sehr hohe range haben z.B. x(1) = 4000 und x(2) = 2e-6 und ich gelesen habe, dass der Wertebereich ungefähr gleich bleiben soll.

Daher sind meine Inequalities natürlich unwirksam.

Da in meinem Fall wenn x(7) = x(14) = 1 automatisch auch
-2*x(7)+x(14) < 0 immer gilt.

Ich hoffe es wurde verständlich was das Problem ist.

Hast du eine Idee, wie ich das mit der Normierung lösen kann?

Oder bin ich falsch informiert und so eine Normierung ist gar nicht notwendig?

Viele Grüße
Timo
Private Nachricht senden Benutzer-Profile anzeigen
 
mana
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 08.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2016, 17:47     Titel:
  Antworten mit Zitat      
Hallo

ich habe jetzt den Vektor A einfach mit x_norm multipliziert.

Das scheint zu funktionieren.

Dennoch würde mich interessieren ob so eine Normierung sinnvoll ist oder ob dieser Schritt unnötig ist.

Vielen Dank
Timo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

eine Normierung ist in dem Fall definitiv sinnvoll.

Wenn du die Transformation händisch machst, dann ist es wichtig, alle beteiligten Informationen entsprechend zu anzupassen.

Alternativ kannst du die Option 'TypicalX' über optimoptions angeben. Da brauchst du weniger anzupassen und solltest den gleichen Effekt erzielen.

Grüße,
Harald
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 - 2025 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.