Informatik

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:

  1. 2001 auf die Freifläche stellen,
  2. 4711 auf den Lkw verladen,
  3. 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 + 1 den 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.

Containerterminal: Planen

Teilbare URL erstellen

Abschnitte auswählen