lieben Dank für deine Unterstützung!
Wir haben uns nun entschieden, das Problem als linear zu vereinfachen - sollte in unserem Falle keine Auswirkungen haben. Jetzt möchte ich eine lineare Bedingung definieren, die von der Entscheidungsvariablen abhängt. Ist das möglich?
Von der Formulierung c(x) = 0 möchte ich ja nun eine Formulierung nach A*x <= b oder Aeq*x = beq.
Wie kann ich das in die Nebenbedingungen für z.B. den CPLEX Solver einbauen? Ich tue mich leider immer noch wahnsinnig schwer mit der Syntax der Optimierungsprobleme in Matlab.
Die Matrix A würde etwa so aussehen:
[1 0 0 0... 0
1 1 0 0 ... 0
1 1 1 0 ... 0
1 1 1 1 1 1 ... 1]
und das zweimal untereinander.
Dann ist das Problem für linprog geeignet. Nach CPLEX zu gehen dürfte das eher verkomplizieren.
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 ;)
mit patternsearch habe ich leider kein sinnvolles Ergebnis gewinnen können. Da gibt es nur 6 Entlade bzw. Ladevorgänge innerhalb eines Jahres.
fmincon konnte ich leider noch nicht auf einer fähigeren Maschine probieren. Warum würde es CPLEX komplizierter machen? Ist die Problemstruktur für diesen Solver nicht die gleiche - so sieht es für mich momentan aus?
In diesem Forschungsfeld scheint CPLEX eine Art Standard zu sein. Es scheint, als solle ich mich daran halten...und als Masterstudent mit wenig eigener Erfahrung in der Optimierung vermag ich hier wenig entgegenzusetzen.
Lieder verstehe ich die Matrix A nicht. Wieso sieht die Formulierung für den Speicher so aus? Bzw. wie sieht dann b aus?
Ich weiß, ich habe dich schon viel zu sehr beansprucht und bin dir für jede Hilfe unendlich dankbar!
mit patternsearch habe ich leider kein sinnvolles Ergebnis gewinnen können. Da gibt es nur 6 Entlade bzw. Ladevorgänge innerhalb eines Jahres.
patternsearch versucht globale Optimierung. Das ist aber in einem 8760-D Raum schwierig. Wenn du bessere Startwerte kennst, die die NB erfüllen, verwende sie. Dann wird patternsearch auch bessere Ergebnisse liefern.
Zitat:
Warum würde es CPLEX komplizierter machen?
Weil es ein externer Löser ist und du dich erst mit Aufrufsyntax etc. vertraut machen musst.
Zitat:
In diesem Forschungsfeld scheint CPLEX eine Art Standard zu sein.
Ich würde eher die Methodik (lineare Programmierung) als den Standard ansehen als den Anbieter. Wenn man so einen Standard hat, dann sollte man sich darüber klar werden, bevor man viel eigene Zeit (und die anderer) investiert.
Zitat:
Lieder verstehe ich die Matrix A nicht. Wieso sieht die Formulierung für den Speicher so aus? Bzw. wie sieht dann b aus?
Multipliziere mal A*x aus, dann dürfte es klar werden. Ebenso, was b sein muss.
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 ;)
es tut mir wirklich leid, wenn ich deine Zeit unrechtmäßigerweise bzw. aufgrund mangelnder Vorbereitung meinerseits verschwendet habe. So sehe ich es allerdings nicht, denn ich habe auf diesem Weg und durch dich eine Menge lernen können.
Leider verstehe ich die Formulierung für A noch immer nicht. Ich schätze deinen didaktischen Ansatz sehr. Aber da wir nicht nebeneinander sitzen können und so kein Hin- und Her aus Frage und Antwort entstehen kann, verlängert es den Prozess des Verstehens meinerseits und den Prozess des Erklärens deinerseits. Meinst du nicht?
Konkret verstehe ich nicht, wie der Ladezustand der Batterie zur vorherigen Stunde durch eine solche Formulierung integriert wird. Ich will doch letztlich zwei Nebenbedingungen formulieren:
wichtig ist immer, die Bedingúngen ausschließlich in Abhängigkeit der Variablen hinzuschreiben. S(t-1) ist ja auch von E abhängig, und nach meinem Verständnis waren die Gleichungen
Das sollte die Struktur von A erklären. Der untere Teil muss allerdings mit -1 multipliziert werden.
b setzt sich dann aus -b_1 und b_2 zusammen, jeweils mehrfach untereinander kopiert.
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 ;)
Nur ein Problem bleibt:
Wie sage ich ihm, dass alle E > 0 mit n multipliziert werden?
Das geht bei linearer Optimierung nicht. Dadurch wird das Problem nichtlinear.
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 ;)
Mein Problem ist nur, dass ich diese Funktion nicht so ohne Weiteres in die A-Matrix bzw. den b-Vektor bekomme. Denn hier steht x ja selbst in der Funktion. Und x ließe sich dort wohl nur numerisch herauslösen zu einer Form A*x <= b.
Kann ich dem Solver diese Gleichung in anderer Form mitteilen? Ggf. ähnlich zur nonlin Funktion?
P.S.: Der fmincon läuft! Besten Dank dafür. Er ist leider - zumindest auf meiner Maschine - sehr langsam. Der Vollständigkeit halber möchte ich es jedoch auch mit dem linprog bzw. cplex lösen können.
durch den tanh(-50x) wird es dann aber doch wieder nichtlinear.
Es gibt da wirklich nur linear oder nichtlinear und nichts dazwischen.
Schön, dass du es mit fmincon geschafft hast. Aus Neugierde: was hast du da noch geändert?
Dass das mit fmincon ein Weilchen dauert, ist bei 8760 Variablen kein Wunder. Abhilfe schaffen kann höchstens analytische Ableitungen, sofern du das nicht schon machst.
Ich habe selbst nie mit CPLEX gearbeitet und kann da somit nicht weiterhelfen.
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 ;)
linprog funktioniert ausschließlich für lineare Probleme.
CPLEX besteht meines Wissens aus mehreren Solvern. Ob es einen speziell für diese Problemart gibt, kann ich nicht sagen.
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 ;)
auf den ersten Blick scheint die Änderung ein anderer Startwert zu sein?
linprog funktioniert ausschließlich für lineare Probleme.
CPLEX besteht meines Wissens aus mehreren Solvern. Ob es einen speziell für diese Problemart gibt, kann ich nicht sagen.
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 ;)
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
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.