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

[Optimization Toolbox] - Mixed Integer Programming

 

Kvothe
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2010, 12:14     Titel: [Optimization Toolbox] - Mixed Integer Programming
  Antworten mit Zitat      
Hallo zusammen,

und zwar geht es um eine Datei, die ich mir im File Exchange gezogen habe. Da die Optimization Toolbox nur wenig ausgeprägt ist bei der Behandlung von diskreten Designvariablen und meine Matlab-Version die Genetic Toolbox nicht implementiert hat, habe ich mir die Datei bnb gezogen, die mithilfe von Branch and Bound - Algorithmen gemischt ganzzahlige Optimierungsprobleme lösen soll.
Die bnb-Datei arbeitet mit dem fmincon-Solver zusammen. Mein Problem ist nun, dass sobald der fmincon-Solver seine Arbeit erledigt hat, Matlab mir eine Fehlermeldung bei der Auswertung des bnb-Codes ausgibt: Die Konvertierung von char zu struct sei nicht möglich.
Dabei habe ich das mitgelieferte Beispiel genommen und mich an die Beschreibung gehalten; ein Problem mit der mathematischen Formulierung des Optimierungsproblems ist also ausgeschlossen.
Die Datei wurde zuletzt 2003 aktualisiert, meine Version ist die R2007a. Das Problem könnte also damit zusammenhängen.
Kurzum, in der Hoffnung, dass jemand von euch die Datei auch mal verwendete, melde ich mich hier, um Hilfe zu bekommen. Wenn jemand einen besseren Algorithmus parat hat, der mit diskreten Variablen umgehen kann, wäre das auch toll.

Gruß Kvothe
Private Nachricht senden Benutzer-Profile anzeigen


Kvothe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2010, 15:06     Titel:
  Antworten mit Zitat      
Hallo,

habe mich von der gezogenen File verabschiedet. Hätte nun eine allgemeine Frage. Ist es mit Matlab möglich ein Optimierungsproblem folgender Art zu lösen (das tatsächliche Problem ist deutlich komplexer): Bild im Dateianhang.
Im Forum wurde schon geschrieben, dass auch die Genetic Toolbox und Direct Search Toolbox nicht in der Lage seien, diskrete Probleme zu lösen. The Mathworks stellt nun mit der Version 2010a neuerdings die Global Optimization Toolbox zur Verfügung. Ist es mit jener nun möglich, Probleme wie im angehängten Beispiel zu lösen?

Gruß

Optimierungsproblem.JPG
 Beschreibung:

Download
 Dateiname:  Optimierungsproblem.JPG
 Dateigröße:  10.6 KB
 Heruntergeladen:  1163 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ist es mit Matlab möglich ein Optimierungsproblem folgender Art zu lösen

Ja, mit Hilfe der Global Optimization Toolbox. Man muss allerdings selber etwas Arbeit reinstecken, um bei dem Genetischen Algorithmus eine geeignete creation, crossover und mutation function zu schreiben.

Zitat:
Im Forum wurde schon geschrieben, dass auch die Genetic Toolbox und Direct Search Toolbox nicht in der Lage seien, diskrete Probleme zu lösen.

Das ist so nicht zutreffend; bitte poste doch einen Link, damit ich auch dort einen entsprechenden Kommentar hinterlassen kann. Es erfordert lediglich etwas zusätzliche Arbeit, siehe oben. Ein Beispiel findet sich in der Doku im Contents Tab, unter Global Optimization Toolbox --> Demos --> Genetic Algorithm --> Custom Data Type Optimization [...]
Die Global Optimization Toolbox ist im übrigen der Nachfolger der Genetic Algorithm and Direct Search Toolbox und kein neues Produkt in dem Sinn.

Zitat:
The Mathworks stellt nun mit der Version 2010a neuerdings die Global Optimization Toolbox zur Verfügung. Ist es mit jener nun möglich, Probleme wie im angehängten Beispiel zu lösen?

Sollte mit obigen Antworten erfasst sein.

Wenn das Problem nicht ungleich aufwendiger als das vorgegebene ist, würde ich mir überlegen, brute force anzuwenden: alle Kombinationen der Reihe nach durchprobieren - schauen, welche die Nebenbedingung erfüllen - die Kombination mit dem besten Zielfunktionswert speichern.

Das dürfte auch bei Millionen von Kombinationen noch sinnvoll sein.

Um weiteren Rat geben zu können, müsste man mehr über das tatsächliche Problem wissen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2010, 16:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine schnelle Antwort. Zunächst entschuldige meinen Satz, dass der Vorgänger der neuen Toolbox, nicht in der Lage sei, das geschilderte Problem zu lösen. Hab' da wohl was falsch aufgeschnappt. Embarassed
Zu meinem tatsächlichen Problem kann ich noch nicht viel sagen. Ich weiß nur, dass die Zielfunktion nichtlinear ist und die Designvariablen Diskretheitsanforderungen unterliegen (genormte Werte mit diskreten Abstufungen). Die Restriktionen fallen auch nichtlinear aus.
Leider habe ich nur die Optimization Toolbox zur Verfgüng. Ich spielte schon mit dem Gedanken, mir die Vorgänger-Toolbox käuflich zu erwerben, leider sind für meine Studentenversion 2007a die AddOn-Produkte nicht mehr erwerbbar. Sad
Wichtig ist zunächst mal zu wissen, dass die Art Probleme zu lösen sind; obgleich ich keinen blassen Schimmer von naturanalogen Algorithmen habe. Ich schau mal, ob meine Hochschule eine Lizenz besorgen kann.

Gruß und schönen Abend.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das sind schon mal interessante Informationen; was mich jedoch mehr interessiert:
Wieviele unabhängige Variablen sind es?
Sind alle Variablen diskret?
Sind die Variablen nach unten/oben beschränkt?
Falls ja, wieviele diskrete Werte sind möglich?
Ist die Funktion gutartig in dem Sinn, dass kleine Störungen in den Variablen auch kleine Störungen in der Zielfunktion bewirken?

Ansonsten folgende Ideen:
- mit dem Debugger untersuchen, wie die Fehlermeldung in dem von File Exchange heruntergeladenen Programm zustandekommt.
- den Autor des Programms kontaktieren.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2010, 17:33     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich mehr weiß und das Problem explizit formuliert ist, melde ich mich. Schon mal vorab:
- Die Anzahl der Variablen ist gering, höchstens 5 oder 6.
- Es könnten durchaus einige Variablen kontiniuerlich sein.
- Die Variablen sind sowohl nach unten, als auch noch oben beschränkt.
- Zwischen 20 und 50 diskrete Werten sind etwa möglich, würde ich sagen.
- Ob die Funktion gutartig ist, kann ich noch nicht sagen.

Ich stehe noch ziemlich am Anfang. Vielleicht ändert sich das Problem auch insoweit, dass die diskrete Beschränktheit herausfliegt.
Jedenfalls danke ich dir für dein Engagement.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Kvothe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2010, 14:21     Titel:
  Antworten mit Zitat      
Hallo,

hab' ein mögliches Optimierungsproblem zusammengestellt (Anhang). Habe es auch mit fmincon lösen können, ohne natürlich die diskreten Beschränkungungen für x1 und x3 zu berücksichtigen. Die fixen Parameter sind alle positiv.

Edit:
x3 läuft natürlich bis 100 und nicht bis 20. Sorry.

Gruß

OP.jpg
 Beschreibung:

Download
 Dateiname:  OP.jpg
 Dateigröße:  192.67 KB
 Heruntergeladen:  1085 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.04.2010, 14:57     Titel:
  Antworten mit Zitat      
[bitte zu Ende lesen, bevor du loslegst]
Hallo,

das ist ein Problem, das ich etwas umformulieren würde, da es sonst recht schwierig zu lösen sein dürfte:

Die nichtlineare Gleichung nach x2 auflösen (sollte recht problemlos sein).
Das dann in die anderen Terme einsetzen (besser natürlich: eine Funktion schreiben, die dir x2 in Abh. von x1 und x3 gibt, und die immer aufrufen, wenn ich "einsetzen" schreibe).

Zielfunktion -> nur abhängig von x1 und x3, x2 wird eingesetzt
Bounds -> wie vorher, nur bound für x2 wird durch Einsetzen zu 2 nichtlinearen Ungleichungen (-x2 <= -5 und x2 <= 300)
Linear -> x2 einsetzen, dann wird es eine lineare Ungleichung
Nichtlineare Ungl. -> x2 einsetzen, andere nichtlineare Ungleichungen
Nichtlineare Gl. entfällt.

Das ganze würde ich brute force über x1 und x3 optimieren, etwa so:
Code:
bestesZiel = inf
for x1 = ...
for x3 = ...
if Ungleichungen(x1, x3) erfüllt % (&& statt & benutzen!!)
neuesZiel = Zielfunktion(x1, x3)
if neuesZiel < bestesZiel
bestesZiel = neuesZiel;
x1Opt = x1;
x3Opt = x3;
end
end


Edit: zur Kontrolle - ich würde erwarten, dass du ähnliche Ergebnisse wie im kontinuierlichen Fall bekommst.
Viel Erfolg,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kvothe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2010, 15:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

wie immer, schnell und zuverlässig. Hab' vielen Dank! Ich probiere es aus.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Kvothe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2010, 14:51     Titel:
  Antworten mit Zitat      
Hallo,

hat sehr gut funktioniert. Nochmals danke.

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

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.04.2010, 15:01     Titel:
  Antworten mit Zitat      
Freut mich zu lesen Smile

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 - 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.