2016-07-16 6 views
0

Ich mache ein Schulprojekt mit VRP. Das Problem, das ich lösen möchte, ist das Erzeugen von Routen mit mehreren Punkten, die jeweils in einem Zeitfenster ausgeführt werden müssen.Verwenden Sie Zeitfenster in Jsprit mit Datum

Mein Problem ist, wie die Daten (Unix Timestamp) in Zeitfenster in Jsprit zu übersetzen, da der Algorithmus bei 0 beginnt. Ändere ich einfach die Zeitintervalle, oder gibt es eine Best Practice, die ich vermisse?

Danke für jede Hilfe.

+0

jsprit ist Einheit Agnostiker. Sie können die Zeit in Minuten oder Sekunden definieren. Sie brauchen nur einen definierten Referenzpunkt (was ist die Zeit 0?), Nach dem Sie Ihre Konvertierung immer wieder in eine reale Datetime umwandeln können. Was "Ich drücke nur die Zeitintervalle aus" Ich bin mir nicht sicher, ob ich verstehe, was Sie fragen. – roganjosh

+0

Normalerweise ist die 0-Zeit unter Unix-Zeitstempel das Jahr 1970. Auf der Jsprit-Zeit 0 ist der Start des Algorithmus. Zeiteinheit ist nicht das Problem, das Problem ist die Lücke zwischen 0 und dem Zeitstempel, die eine große Zahl ist. Was ich mit Delta meine, ist, wenn ich den aktuellen Zeitstempel zu allen vorhandenen Zeitstempeln subtrahieren müsste, damit es keine Lücke gibt. –

+0

In diesem Fall stimmen wir dem zu. Sie müssen einen sinnvollen neuen Unix-Zeitstempel finden, um Null darzustellen, und dann haben Sie Ihre Zeitfenster als Offset von dieser Position definiert, so dass Sie sich noch immer darauf festlegen müssen, wie Sie die Zeiteinheit definieren möchten. Ich denke, du hast das in deinem Kopf zu kompliziert gemacht. Ich löse täglich, wobei 00:00 die Zeit Null ist und bis 1439 (Minuten) geht. Wenn ich für eine Woche 24-Stunden-Betrieb lösen wollte, beende ich auf 10080. Dann starten Sie einfach neu. – roganjosh

Antwort

1

Bearbeitet.

JSprit ist uneinheitlich. Sie wählen die Einheiten aus, mit denen Sie arbeiten möchten.

Ich könnte wählen, dass meine Woche von Montag bis Sonntag läuft, und ich Einheiten in Minuten definieren möchte. In diesem Fall ist es Montagmorgen 9 Uhr 540 (9 * 60). Oder ich könnte es in Sekunden definieren, in diesem Fall ist die gleiche Zeit 32400 (9 * 60 * 60). Es spielt keine Rolle, solange die Zeiteinheiten konsistent sind.

Ein Unix-Zeitstempel ist fast sicher überflüssig für das Problem. Sie führen eine Lösung zu einer festgelegten Zeit aus; Im Allgemeinen suchen Sie nach einer Lösung für ein eigenständiges Problem, und Sie werden den Algorithmus in festgelegten Intervallen ausführen. Dies gibt Ihnen immer einen Bezugspunkt, an dem die "abstrakte" Ausgabe von jsprit (z. B. kommt zur Zeit 678) in eine Datumszeit übernommen wird, die für das aktuelle Problem relevant ist.

Auf diese Weise könnte ich den Algorithmus am 19. Juli für w/c 25. Juli aber wissen, dass die Lösung der Ankunftszeit basiert auf 00:00 am 25. Juli ist "0" und dann fügen Sie einfach die Protokoll.

Endergebnis: JSprit tut nicht nehmen Sie die Zeit des Aufrufens einer Lösung als Zeit 0. Es dauert Zeit 0 als jeder Punkt, in dem Sie es in einem beliebigen System definieren; Mitternacht an einem Sonntag, die Einweihung von Papst Franziskus, alles im Grunde :)

Verwandte Themen