|
|
[Optimization Toolbox] - Mixed Integer Programming |
|
Kvothe |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.04.2010, 12:14
Titel: [Optimization Toolbox] - Mixed Integer Programming
|
|
|
|
|
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
|
|
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.04.2010, 15:06
Titel:
|
|
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ß
Beschreibung: |
|
Download |
Dateiname: |
Optimierungsproblem.JPG |
Dateigröße: |
10.6 KB |
Heruntergeladen: |
1163 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.04.2010, 15:30
Titel:
|
|
|
|
|
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
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.04.2010, 16:13
Titel:
|
|
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.
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.
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.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.04.2010, 16:58
Titel:
|
|
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
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.04.2010, 17:33
Titel:
|
|
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ß
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 14:21
Titel:
|
|
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ß
Beschreibung: |
|
Download |
Dateiname: |
OP.jpg |
Dateigröße: |
192.67 KB |
Heruntergeladen: |
1085 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.04.2010, 14:57
Titel:
|
|
[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:
Edit: zur Kontrolle - ich würde erwarten, dass du ähnliche Ergebnisse wie im kontinuierlichen Fall bekommst.
Viel Erfolg,
Harald
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 15:15
Titel:
|
|
Hallo Harald,
wie immer, schnell und zuverlässig. Hab' vielen Dank! Ich probiere es aus.
Gruß
|
|
|
Kvothe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 20.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2010, 14:51
Titel:
|
|
Hallo,
hat sehr gut funktioniert. Nochmals danke.
Gruß
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2010, 15:01
Titel:
|
|
Freut mich zu lesen
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|