Containerterminal: Planen
Im Hafen stehen die Container in Stapeln. Der Kran kommt immer nur an den obersten Container eines Stapels heran – jeder Stapel ist also ein Stapel im Sinne der Informatik. Du bist die Disponentin oder der Disponent: Du entscheidest, wohin der Kran die Container setzt. Und jede Kranbewegung kostet Geld.
Preisliste des Kranbetriebs
| Kranbewegung | Preis |
|---|---|
| Container auf einen Lkw verladen | 20 Euro |
| Container vom Schiff auf einen Stapel einlagern | 20 Euro |
| Container auf einen anderen Stapel umsetzen | 50 Euro |
| Container auf die Freifläche stellen oder von dort zurückholen | 80 Euro |
Die Stapel 1 bis 3 tragen höchstens vier Container. Die Freifläche liegt weiter weg, dafür passt dort beliebig viel hin.
Aufgabe 1: Der erste Tag
Heute holen nacheinander drei Lkw Container ab: zuerst 4711, dann 1234, dann 0815. Klicke auf einen Stapel, um seinen obersten Container an den Kran zu hängen. Klicke dann auf einen anderen Stapel – oder auf „Auf den Lkw“.
a) Wende für den ersten Lkw die folgende Abfolge an und ermittle die Kosten:
- 2001 auf die Freifläche stellen,
- 4711 auf den Lkw verladen,
- 2001 zurück auf Stapel 1 stellen.
b) Entwickle einen Ablauf für den ganzen Auftrag, der möglichst wenig kostet. Beschreibe deine Strategie in einem Satz: Wohin stellst du einen Container, der im Weg steht? Gib die Gesamtkosten an.
Tipp zu c)
Schau auf die Reihe der Lkw: Von welchem Stapel wird heute gar nichts abgeholt?
Aufgabe 2: Die Strategie als Struktogramm
Damit der Kran deine Strategie ohne dich ausführen kann, muss sie als Algorithmus dastehen – so genau, dass jemand anderes sie Schritt für Schritt abarbeiten kann, ohne nachzufragen. Dafür stehen dir die Befehle des Krans zur Verfügung – die meisten kennst du schon von der Seite Der Kran. Neu ist naechsteAbholung. Die Stapel heißen 1, 2 und 3, die Freifläche heißt 0.
Die Befehle des Krans
| Befehl | Bedeutung | Kosten |
|---|---|---|
finde(pNummer) |
Stapel, in dem der Container steht: 1 bis 3, 0 = Freifläche, -1 = nicht im Terminal | – |
oben(s) |
der oberste Container auf Stapel s, null bei einem leeren Stapel |
– |
istVoll(s) |
Stehen auf Stapel s schon vier Container? |
– |
naechsteAbholung(s) |
Wann wird von Stapel s als Nächstes etwas abgeholt? 1 = vom ersten Lkw des Auftrags, 2 = vom zweiten …, 0 = nie |
– |
umsetzen(pVon, pNach) |
setzt den obersten Container um | 50 / 80 |
verladen(s) |
verlädt den obersten Container auf den Lkw | 20 |
Die Nummer eines Containers liefert oben(s).getNummer(). Was sich nicht mit einem Befehl sagen lässt, darfst du in Worten schreiben – aber eindeutig.
Wählt eine Strategie aus:
- A – Freifläche: Alles, was über dem gesuchten Container steht, kommt auf die Freifläche. Nach dem Verladen kommt es zurück.
- B – Nachbarstapel: Ein Container, der im Weg steht, kommt auf einen anderen Stapel mit Platz. Nur wenn keiner Platz hat, kommt er auf die Freifläche.
a) Entwickelt zu eurer Strategie einen Algorithmus hole(pNummer), der einen Container verlädt, und stellt ihn als Struktogramm dar. Bedenkt die Grenzfälle: Der Container steht schon oben. Der Container ist gar nicht im Terminal.
b) Kran-Test: Wendet den Algorithmus in der Visualisierung an.
Tipp 1: Das Gerüst
Jede der zwei Strategien hat dasselbe Gerüst: Stapel suchen – solange oben nicht der gesuchte Container steht, den obersten wegsetzen – verladen. Die Strategien unterscheiden sich nur darin, wohin der Kran den Container setzt. Strategie A braucht danach noch eine zweite Schleife.
Tipp 2: Wohin damit?
- A: immer Stapel 0.
- B: Für die Stapel 1, 2, 3 liefert
s % 3 + 1den nächsten Stapel „im Kreis“: aus 1 wird 2, aus 2 wird 3, aus 3 wird 1. Ist er voll, nimm den übernächsten. Sind beide voll, bleibt nur 0.
Aufgabe 3: Der zweite Tag
Am nächsten Morgen sieht das Terminal anders aus – und Stapel 3 ist voll. Die Lkw wollen 6002, 6004, 6008 und 6001.
a) Führt euer Struktogramm aus Aufgabe 2 hier aus und gebt die Kosten an.
b) Betrachte deinen Ablauf aus der 1b. Intuitiv wählt man eine bessere Strategie, als die, die ihr umgesetzt habt. Erstelle ein Struktogramm zur Strategie aus 1b.
Eigene Containerkonfigurationen
Trage in eigene Startaufstellung deine gewünschten Werte ein.