Wie ich am Anfang schon erwähnt habe dient dieses Modell zur Preisoptimierung. Da die Preise sich alle 15 Minuten ändern hat ein Jahr 35040 Preise. Das heißt auch gleichzeitig doppelt so viele Variable. Ich habe nun erst mit 1.000 Preisen versucht und das klappt wunderbar. Der nächste Schritt mit 10.000 hat leider nicht geklappt.
Der Plan für die Jahresberechnung ist nun in 4-Wochen Schritten, also 2880 Einheiten zu berechnen. Mit 2880 klappt es auch wunderbar. Ich werde also immer 28+2 Tage berechnen. Und im nächsten Schritt beim 29. Tag beginnen.
Meine Frage lautet nun wie kann ich manuell den aktuellen Füllstand, der in dem Modell immer bei 0 beginnt, manuell eingeben bei der 2. Berechnung? Es kann ja sein, dass mein Füllstand am Ende der 1. Berechnung (also bei Tag 2 nicht 0 ist.
Code:
M1 = zeros(2880, 5760);
M1(1, 1:2) = [0.5, -1];
for k = 2:2880
M1(k, :) = M1(k-1, :);
M1(k, 2*k-1:2*k) = [0.5,-1];
end
Meine zweite Frage. Die Preise sind ja bei Excel aufgelistet. In dem Fall habe ich nur 2880 geladen. Gibt es eine Möglichkeit, dass ich alle 35040 Preise in Matlab lade und den Befehl gebe, dass Matlab immer 28+2 berechnet und sich den Füllstand merkt und dann die nächsten 28+2 durchberechnet. Das hört sich sehr kompliziert und aufwendig an. Ich hoffe ich konnte mich richtig ausdrücken. Vielen Dank nochmals für deine Mühe.
zur ersten Frage: dazu musst du die rechte Seite der ersten Gleichung anpassen, also den ersten Eintrag von b1 bzw. b2.
So funktioniert es nicht. Mein b1 und b2 sind ja die Grenzen für den Füllstand. Wenn der zu dem Anfangszeitpunkt 2 ist könnte ich theoretisch den ersten Wert von b1 und b2 als 2 definieren. Der erste Wert ist aber der Füllstand nach den ersten 15 Minuten und nicht der Anfangswert.
Harald hat Folgendes geschrieben:
Hallo,
Zur 2. Frage: dazu musst du eine for-Schleife programmieren, etwa so:
Code:
for p = 1:n
currentRange = (p-1)*28 + 1 : p*28 + 2;
Nun dazu. Hab versucht das Beispiel für mein Modell anzuwenden. So sieht das ganze aus. Habe ich das Beispiel richtig verstanden und umgeschrieben? Wo muss die Schleife denn platziert werden?
Da ich die komplette Preisliste eingelesen habe, bekomme ich wieder die Fehlermeldung, dass mein A (also die Anzahl der Preise) größer ist als die Nebenbedingungen. Muss ich nun alles auf 35040 anpassen?
ich kenne das Modell nicht genau genug um zu sagen, ob das funktionieren würde:
wenn du eigentlich einen Stand zwischen 0 und 4 haben willst, anfangs aber 2 drin sind, dann könntest du sagen, dass du einen Stand zwischen -2 und 2 haben willst. Zusammen mit den anfangs vorhandenen 2 kommst du dann auf die richtigen Werte.
Sorry, dass immer so viel Zeit dazwischen vergeht. Aber ich arbeite an der Aufgabe nur nebenbei. Nochmal damit meine Frage verständlicher wird. Die Idee mit meine b-Vektoren zu ändern ist echt sinnvoll und müsste auch eigentlich genauso klappen. Wie gesagt erhalte ich die Fehlermeldung oben. Habe nun versucht die Vorzeichen bei M1 und M2 zu tauschen, sprich -0.5 und 1. Bei einigen Versuchen habe ich auch Ergebnisse bekommen, aber so dass -1 und -4 die Grenzen werden.
Meine Frage nun. Muss ich meine M´s komplett erneuern? Vielleicht siehst du ja etwas was ich als Laie nicht direkt sehe.
Code:
% M1 für kleiner 4 klappt so, M1 wird nun für kleiner 3 verwendet
M1 = zeros(2880, 5760);
M1(1, 1:2) = [0.5, -1];
for k = 2:2880
M1(k, :) = M1(k-1, :);
M1(k, 2*k-1:2*k) = [0.5,-1];
end
% M2 für größer 0 klappt so, M2 wird nun für größer -1 verwendet
M2 = zeros(2880, 5760);
M2(1, 1:2) = [-0.5, 1];
for k = 2:2880
M2(k, :) = M2(k-1, :);
M2(k, 2*k-1:2*k) = [-0.5, 1];
end
M=[M1;M2];
b1= Vektor mit 2880 4en, nun mit 3en
b2= Vektor mit 2880 0en, nun mit -1
... und dabei könnte ich dir bestenfalls helfen, wenn ich den kompletten Code inkl. Daten zur Verfügung hätte - und vielleicht nicht mal dann.
Zitat:
Habe nun versucht die Vorzeichen bei M1 und M2 zu tauschen, sprich -0.5 und 1. Bei einigen Versuchen habe ich auch Ergebnisse bekommen, aber so dass -1 und -4 die Grenzen werden.
Das ist zu erwarten, weil dann die Richtung der Ungleichung und das Vorzeichen der Grenzen vertauscht werden.
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.