|
|
Umsetzung einer Optimierungsnebenbedingung für Intlinprog |
|
Paul01 |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 30.06.23
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2023, 14:46
Titel: Umsetzung einer Optimierungsnebenbedingung für Intlinprog
|
|
|
|
|
Hallo liebe Mitglieder,
ich arbeite derzeit an einer Studienarbeit, welche sich mit der Optimierung einer Trinkwasserproduktion beschäftigt.
Konkret habe ich Probleme damit eine Nebenbedingung so zu formulieren, dass Intlinprog sie akzeptiert.
Es geht darum, dass der Füllstand eines Trinkwasserbehälters innerhalb eines Tages um einen Wert DeltaV schwanken soll.
Genauer gesagt soll gelten, dass Vmax-Vmin>=DeltaV sein soll.
V ist ein 25x1 Vektor, welcher die Füllstände des Behälters von V(0) bis V(24) enthält.
In Matlab habe ich V zunächst mittels optimvar implementiert.
Bei anderen Solvern konnte ich noch den Ansatz Vmax=max(V) und Vmin=min(V) anwenden, bei Intlinprog funktioniert das aber leider nicht mehr.
Ich habe auch vergeblich versucht eine Formulierung der Form A*V=b , A*V<=b oder A*V>=b (A als 24x25 Matrix) zu finden welche die Nebenbedingung umsetzt, jedoch vergeblich.
Deswegen nun meine Frage ist es überhaupt möglich diese Bedingung so zu formulieren, dass sie Intlinprog akzeptiert?
Falls ja, würde ich mich über Anregungen freuen, wie man es umsetzten könnte.
Wenn etwas unverständlich erklärt ist oder ihr ggf. weitere Informationen braucht, gebt Bescheid .
LG
Paul
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2023, 16:13
Titel:
|
|
Hallo,
soll die Schwankung mindestens oder höchstens DeltaV sein?
Ich kenne die Anwendung nicht im Detail, hätte aber höchstens gedacht? Deine Ungleichung besagt aber mindestens.
Vmax-Vmin<=DeltaV sollte sich mit Matrizen umsetzen lassen, da der Unterschied zwischen je zwei beliebigen V-Werten höchstens DeltaV sein darf. Bei Vmax-Vmin>=DeltaV sehe ich diese Möglichkeit leider nicht.
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 ;)
|
|
|
Paul01 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 30.06.23
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2023, 16:37
Titel:
|
|
Hallo Harald,
danke für deine Antwort
Du hast richtig gelesen, der Füllstand muss mindestens um DeltaV schwanken (absolut betrachtet).
Dann hat sich meine Vorahnung, dass es mit Matrizen nicht geht, leider bestätigt. Ich glaube mittels einer Funktion geht es auch nicht, weil es dann nicht mehr linear ist
LG
Paul
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2023, 18:56
Titel:
|
|
Hallo,
ich will nicht ausschließen, dass es geht, ich wüsste nur nicht wie.
Eine andere Möglichkeit kann sein, aus Erfahrung zu sagen, wo Minimum und Maximum in etwa liegen müssen. Diese dann festlegen, das Optimierungsproblem lösen, und dann eine Schleife über verschiedene Szenarien für Maximum und Minimum durchlaufen. Das kann besser sein als damit zu leben, dass das Problem nichtlinear wird.
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 ;)
|
|
|
Paul01 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 30.06.23
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2023, 19:39
Titel:
|
|
Hallo,
das habe ich sogar auch schon gemacht
Habe mittels randi() aus einem Intervall vormittags und abends jeweils einen Zeitpunkt erzeugen lassen, an welchem dann Vmax und Vmin sein sollen und die Schleife laufen lassen (also immer neue Kombinationen an Zeitpunkten) bis die Zielfunktion einen bestimmten Wert unterschritten hat.
Leider habe ich dann gemerkt, dass dieses Vorgehen das Optimierungsproblem recht "steif" macht, weil bei gewissen Anfangsfüllständen sowie manchen Abflussvektoren (also die Vektoren, in denen der Abfluss aus dem Behälter pro Stunde, drin steht) das Optimierungsproblem keine Lösung findet. Hab die Idee dann also wieder verworfen und hier gefragt, ob jemand eine Idee hat.
Vielleicht greife ich die Idee jetzt aber wieder auf und schau, ob ich mit etwas testen geeignetere Intervalle finde.
LG
Paul
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2023, 20:38
Titel:
|
|
Hallo,
zur Not alle Kombinationen durchprobieren. Bei 25*24 Möglichkeiten sollte es in max. ein paar Stunden durchlaufen.
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 ;)
|
|
|
|
|
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.
|
|