nach etlichen Versuchen, hoffe ich, dass ihr mir weiterhelfen könnt. Keine Angst, ich erwarte nicht, dass ihr mir alles vorkaut, aber vielleicht habt ihr eine viel bessere Herangehensweise als ich. Mein Problem:
Ich habe einen Speicher und eine Preisliste (für jede Stunde). Der Speicher entlädt sich kontinuierlich. Bevor der Speicher leer ist, muss ich ihn füllen. Dies kostet Geld (in Preisliste ersichtlich). Ich will den Speicher so kostengünstig wie möglich füllen.
Meine Herangehensweise:
- berechnen, wie lange der Speicher noch hält
- innerhalb dieser Zeit den günstigsten Preis finden
- zu diesem Preis Speicher füllen
Das Schwierige daran:
Angenommen der Speicher reicht noch 50 Stunden. Innerhalb dieser 50 Stunden ist der Preis bei Stunde 40 am niedrigsten. Jedoch ist der Preis bei Stunde 60 noch günstiger. Ich fülle den Speicher mit dem Preis von Stunde 40 also nur so voll, dass er bis Stunde 60 reicht.
Könnt ihr mich in eine Richtung schubsen, was ein guter Ansatz wäre?
Habe es mit dutzenden for-Schleifen und if-Bedingungen probiert. Habe die Befehle sort und find probiert... es klappt nicht
% Suche nach niedrigstem Preis innerhalb Reichweite if x + reichweite(x) < length(speicher) if x > 1 if minpreis_alt < minpreis
[minpreis pos_minpreis] = min(preis(x : x + reichweite(x)-1));
pos_minpreis = pos_minpreis+x-1;
pos_minpreis2 = find(preis==minpreis); %alternativ
disp(sprintf('%d. First Wert: %f, Position: %d %d',x-1,minpreis,pos_minpreis,pos_minpreis2));
minpreis_alt = minpreis;
end end end
% Gibt es irgendwann günstigeren Preis?
if x > pos_minpreis
if next_minpreis_alt < next_minpreis
[next_minpreis pos_next_minpreis] = min(preis(x + reichweite(x)-1 : end));
pos_next_minpreis = find(preis==next_minpreis);
disp(sprintf('%d. Next Wert: %f, Position: %d',x,next_minpreis,pos_next_minpreis));
next_minpreis = next_minpreis_alt;
end end
% Speicher füllen if x > 1
speicher(pos_minpreis) = speicher(pos_minpreis) + ely_max;
end plot(speicher, 'r');
zwischen = speicher(x);
end
Mit dieser Variante habe ich 2 Probleme:
1. im Abschnitt, wo der nächstgünstigere Preis gefunden wird, wird der Index nicht richtig bestimmt. Ich habe mir anderweitig beholfen und suche den richtigen Index mit
2. die "intelligente" Speicherfüllung fehlt noch, sprich, dass er den Speicher zu einem günstigen Zeitpunkt nur so weit füllt, dass es bis zu einem (ggf.) noch günstigeren Zeitpunkt reicht.
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
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.