Autor |
Beitrag |
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 02.10.08 14:15
Moin,
ich abstrahiere mal ein wenig: Ich habe einen Wassertank mit bekanntem Inhalt und Größe. Der Tank verliert ständig Wasser, wieviel pro Stunde ist ebenfalls bekannt. Damit der Tank nicht leerläuft kommen ständig Lastzüge und pumpen ihren Inhalt in den Tank. Wann der Laster kommt und wieviel er dabei hat ist ebenfalls bekannt.
Damit kann ich schonmal eine Deadline berechnen, ab wann der Tank leerläuft. Um jetzt besser planen zu können, ab wann Laster mit welcher Größe eintreffen können, müsste ich halt wissen, ab wann wieviel Platz vorhanden ist. Denn wenn ein Laster mehr mitbringt, fällt der Rest weg, falls er über das Maximum betanken will. Als Ergebniss hätte ich gerne eine Auflistung ab wann wieviel Platz im Tank ist, unter Berücksichtigung der ankommenden Lieferungen.
Jemand eine Idee, wie man das am Besten umsetzen kann?
Danke,
Jan
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 02.10.08 14:44
Hi,
ist die Verlustrate abhängig vom Füllstand?
Und willst du nur eine Ausgabe, oder auch eine Minimierung der nötigen Fahrten bzw. ggf. eine Minimierung der Verluste?
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: Do 02.10.08 15:10
Thorsten83 hat folgendes geschrieben : | Hi,
ist die Verlustrate abhängig vom Füllstand? [..] |
Absolut, denn je mehr Wasser sich im Tank befindet, umso höher wird der Druck, der auf das Leck lastet. Also würde ich zuallererst die nötigen Funktionen aufstellen, um Aussagen machen zu können: In etwa Druck(Füllstand)-Funktion und Wasserverlust(Druck)-Funktion...
Gruß
--
_________________ Hallo Mutti
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 02.10.08 15:22
Calculon hat folgendes geschrieben : | Thorsten83 hat folgendes geschrieben : | Hi,
ist die Verlustrate abhängig vom Füllstand? [..] |
Absolut, denn je mehr Wasser sich im Tank befindet, umso höher wird der Druck, der auf das Leck lastet. Also würde ich zuallererst die nötigen Funktionen aufstellen, um Aussagen machen zu können: In etwa Druck(Füllstand)-Funktion und Wasserverlust(Druck)-Funktion...
Gruß
-- |
Wenn es denn wirklich um einen Wassertank geht
Angenommen der Verlust wäre proportional zum Füllstand käme man auf eine Differentialgleichung erster Ordnung und könnte dann halt auch den Füllstand in Abhängigkeit von der Zeit berechnen:
Mit f als Füllstand zur Zeit t, f0 dem Füllstand zur Zeit t0 (also z.B. wenn das letzte mal betankt wurde), und einer Zeitkonstante k für die Entleerung des Tanks:
f(t) = f0*(1-exp((t-t0)/k))
Andere Werte kriegt man dann ja durch Umstellungen hin, die Frage ist imho aber immer noch wie die Zielstellung genau aussieht...
|
|
ene 
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 02.10.08 17:46
Nein, die Verlustrate ist konstant.  Und ja Ziel ist es eine Minimierung der Fahrten hinzubekommen. Wobei einige Laster halt nicht so viel transportieren können und andere schon.
Mal als Beispiel. Der Tank fast 240.000 Liter und ich habe einen Verlust von 10.000 Litern pro Stunde. Der aktuelle Stand beträgt 180.000. Dann brauche ich keinen Laster mit 80.000 Litern loszuschicken, der innerhalb einer Stunde da ist. Ich glaube das hatte ich vergessen.
Ich möchte also herausfinden, ab wann, bei den derzeitigem Füllstand und Verlust, ich wie große Laster mit welcher Geschwindigkeit losschicken muss. Ich hab derzeit nur eine statische Aufnahme dieser Werte und möchte etwas mehr Dynamik reinbringen. Das größte Problem für mich ist derzeit:
Ich habe meine Deadline, die ich mit dem Füllstand, Verlust und bis zur Deadline ankommenden Lastern berechne. Das ist rekursiv, da mit jeder Lieferung sich ja die Deadline wieder verschiebt. Aber wenn ich weiß, dass in 3 Stunden 5 Lieferungen kommen, die den Füllstand wieder auf 75% heben, brauch ich zwischendurch nur kleinere Lieferungen, da ich sonst einen Überschuß habe, den ich nicht auffangen kann. Und hier fehlt mir im Moment ein brauchbarer Ansatz, sonst ist das ein Haufen an Annahmen, Berechnungen und Überprüfungen. 
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 02.10.08 18:08
Also wenn das so wäre wie beschrieben würde ich einfach alle 8 Stunden einen Laster mit 80.000 Litern losschicken
Gibt es denn sonst irgendwelche Probleme? Also am Sonn-oder Feiertage fahren keine Laster, etc.?
Oder musst du so viel holen dass du es nicht schaffst nur mit den größten Lastern auszukommen?
Zu der Rekursion:
Nehmen wir mal deine Zahlen, und in den nächsten 3 Stunden kommen 2 Laster mit je 10.000 Litern an, dann weißt du doch, dass in 3 Stunden 170.000 Liter im Tank sein werden, und kannst mit dem Wert weiterrechnen. (Und du weißt auch, dass der Tank in diesem Zeitraum nicht "übervoll" war...)
Und es muss natürlich t0-t heißen 
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Do 02.10.08 18:08
[OT]
Also ich als praktisch veranlagter Mensch würde einfach mal versuchen, das Leck zu flicken. Wenn der Wasserverlust technisch bedingt ist, würde ich mal über eine Wasserleitung und einer entsprechenden automatischen Nachfüllautomatik nachdenken. Ist einfacher als sich ein Programm zum automatischen Anfordern von Tanklastwagen zu programmieren, auf die Dauer wohl auch kostengünstiger.
[/OT]
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
ene 
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 02.10.08 18:35
@Dunkel Das Loch ist nicht zu stopfen  Siehs als Verbrauch oder so an, ist ja abstrahiert.
@Thorsten Sonntags-Fahrverbot gibt es nicht, aber die Laster sind nicht immer betankt oder verfügbar und auch sind die 80K nicht immer ausreichend. Ich weiß zwar, dass in 3 Stunden der Stand bei 170K ist und rechne damit weiter. Aber ab wann nehm ich die 5K-Laster, damit ich keinen Überschuss erzeuge, wenn danach ein 80K Laster unterwegs ist? Vielleicht mach ich mir das auch zu schwer 
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Do 02.10.08 18:49
Es kommt auf den Zeitfaktor (die Uhrzeit) an.
Angenommen um 18 Uhr (jetzt) ist die aktuelle Füllmenge 200.000 Liter.
Nun schickst du um 18 Uhr einen Lastwagen (LW) mit 30.000 Liter los, der 1 Stunde braucht.
Dann willst du den Füllstand um 19 Uhr berechnen.
NeueZeit: 19Uhr
AlteZeit: 18Uhr
Füllmenge(AZ): 200.000
Stundenverbrauch: 10.000
Laster(AKZ = 19Uhr): 30.000
Füllmenge(NeueZeit) = Füllmenge(AlteZeit) - ((NeueZeit - AlteZeit) * Stundenverbrauch) + (alle Laster Ankunftszeit < NeueZeit);
220.000(19Uhr) = 200.000(18Uhr) - ((19Uhr - 18Uhr = 1) * 10.000) + 30.000(AKZ = 19Uhr);
So in etwa könnte ich mir das vorstellen. 
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 02.10.08 18:51
Da war Chris mit der gleichen Idee wie ich schneller
Hallo Jan 
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 02.10.08 19:06
Weiß man denn welcher Lastern wann verfügbar ist?
Und unterscheiden sich die Fahrzeiten?
Problematisch wird's natürlich, wenn ich 12 Stunden berechnet hab und dann feststelle, dass ich dann keine Laster mehr zur Verfügung haben werde...
@Ene: geht's in die Richtung?
Ich durfte mal miterleben wie versucht wurde ein entfernt vergleichbares Problem per Backtracking zu lösen, ist schon erstaunlich was auch aktuelle Rechner so alles nicht hinkriegen :O
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Sa 04.10.08 12:59
Wie ist denn der Stand der Dinge? 
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: So 05.10.08 14:42
Gute Frage, ich denke mal dass wir uns einig sind dass die "triviale" Problemstellung recht einfach gelöst werden kann, es hakt halt an den kleinen Nebenbedingungen, aber imho haben wir nicht genug Infos um wirklich helfen zu können...
|
|
ene 
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 09.10.08 16:20
Ich war mal kurz im Urlaub...tststs
@Chris so ähnlich mache ich es schon, aber das geht ja dann immer schön rekursiv weiter. Bsp: Deadline 19:00 Lieferung kommt aber um 18:30, damit Deadline irgendwann danach, also neu berechnen und Array erneut durchlaufen, etc. Das habe ich so weit schon fertig.
Was mir noch fehlt ist so eine Art Forecast...also eine Auflistung: Wenn dein LKW 1h braucht, pack jetzt 5000 l rein. Wenn er 12h braucht, 25000 l. So wäre es Ideal. Jetzt deutlicher?
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 09.10.08 17:05
So in der Art:
Beladung = (Max. Füllstand - akt. Füllstand) + Fahrzeit * Verlustrate ?
Und wenn du dann die Fahrten reduzieren möchtest formst du die Formel so um dass du genau dann losfährst, wenn der Laster komplett voll sein wird...
Mich würde ja immer noch interessieren was hinter den Tanks, den Lastern und der konstanten Verlustrate steckt 
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Do 09.10.08 20:34
Hallo ene,
also ein TZ mit 80.000 Liter gibt es nicht. Max 23.000kg auf deutschen Strassen.
Jetzt mal aus dem wirklichen Leben: Also wenn Du einen 2 Max. Bestand festlegst der unter dem Fassungsvermögen des
Tanks liegen sollte, weiter legst Du ein 2 min. Bestand an nennen wir in mal eisernern Bestand, der über den Leer
Bestand liegt. Von diesen beiden Beständen nimmst Du den Mittelwert, das ist der ideale Bestand (nicht für einen
Kaufmann, aber für den Verantwortlichen für das Tanklager). Idealer Weise ist der 2 Max. Bestand so ausgelegt das
Du immer einen großen TZ noch entladen kannst. Der Eiserne Bestand sollte so ausgelegt sein das, wenn alles schief
läuft trotzdem der Tank nicht leer wird. Der ideale Bestand mist die Messgröße ist mehr da soll kein TZ mehr
losgeschickt werden, ist er unterschritten sollen solange TZ kommen bis er erreicht worden ist.
Bis bald Chemiker
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 09.10.08 20:52
Es kommt ja immer noch auf die Rahmenbedingungen an...
Angenommen die Laster würden kein Wasser sondern Benzin transportieren...
Dann würde ich als Tankstellenbesitzer z.B. vor Ferienbeginn zusehen dass meine Tanks randvoll sind, und ich müsste auch gucken ob ich den Tank am letzten Liefertermin vor Ferienbeginn randvoll krieg, oder ob ich schon früher anfangen muss mehr zu ordern um die Tanks allmählich auf den Maximalstand zu bringen...
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Do 09.10.08 21:10
Hallo Thorsten83,
das sollte mit dem Eisernen Bestand abgedeckt werden. In Deinem Beispiel ist der Abgang aber nicht linear, wie im Beispiel beschrieben, sondern unterliegt gewissen Schwankungen nach oben und unten. Wenn die Konkurrenz-Tankstelle auf der anderen Straßenseite, aber 0,05 € billiger ist, verkauftst Du trotz Ferienbeginn nichts.
Bis bald Chemiker
|
|
Thorsten83
      
Beiträge: 191
Erhaltene Danke: 1
|
Verfasst: Do 09.10.08 21:50
@Chemiker: Erzähl das der Yachttankstelle in Strande zur Kieler Woche
Aber letztendlich läuft es halt darauf hinaus dass man die "einfache" Kalkulation mit einer Excel-Tabelle lösen kann, sobald irgendwelche Randbedingungen reinkommen wird es eklig, und man muss sich diese Randbedingungen sehr genau angucken wenn man wirklich was optimieren will.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Do 09.10.08 22:17
Hallo Thorsten83,
genau, man kann nicht alles bis ins Detail berechnen, dafür gibt es zu viele Unbekannte. Deshalb ist der Mensch in solchen Dingen auch besser als jeder Computer, weil er in der Lage ist, auch Unschärfen zu beurteilen und eine Entscheidung zu treffen.
Bis bald Chemiker
|
|
|