Simulator zur Berechnung der optimalen Verteilung von Hardware (inkl. Gesamtnutzen) in X Transportern
Die Releases (also .EXE Datei als Programm zum Ausführen) sind hier zu finden: Releases
- Die neuste Version auf der Releases-Seite herunterladen und entpacken.
- CodingChallenge.exe starten (eventuell mit Administrationsrechten & deaktiviertem Antivirus-Programm (Aufgrund von NuGet-Packages wird dieses manchmal getriggert)).
- JSON Datei auswählen (oben rechts), welche die Daten für Hardware und Transporter enthält (befindet sich im Release-Ordner).
- Die Daten sind nun geladen und können in der Tabelle eingesehen werden.
Sollte es Probleme geben, einfach per E-Mail anschreiben oder auf GITHub ein Issue erstellen.
Für die Lösung des Problems, der optimalen Verteilung der Hardware, habe ich mich für den Ansatz des Rucksackproblems
(engl. Knapsack Problem, https://de.wikipedia.org/wiki/Rucksackproblem) entschieden, da dieses passend auf die Aufgabe zutrifft, ein Raum mit bestimmter Größe soll optimal mit passenden Elementen von bestimmter Größe gefüllt werden. Hier bei wird der sogenannte Greedy-Algorithmus
angewandt (https://de.wikipedia.org/wiki/Greedy-Algorithmus). Diesen habe ich benutzt um, wie auf Wikipedia beschrieben, das beste Ergebnis
zu erreichen. Kurz erklärt, der Algorithmus versucht durch eine Bewertungsfunktion
, schnellst möglich und optimal das beste Ergebnis zu erzielen.
Die Nutzer in Bonn benötigen die verschiedenen Notebooks, Telefone und Tablets mit unterschiedlicher Dringlichkeit. Daher ist für jeden Gerätetyp ein Nutzwert ermittelt worden. Ziel ist es, mit der Auslieferung der ersten Fahrt einen möglichst hohen kumulierten Nutzen zu erzielen.
Für die Fahrt an den Bonner Standort stehen Dir 2 Transporter zur Verfügung. Entwickle einen Algorithmus, um die beiden Transporter optimal für die erste (einmalige) Fahrt zu beladen. Beachte hierbei die Ladekapazität der Transporter sowie die unterschiedlichen Gewichte der Hardware und den Bedarf am Standort Bonn. Ergebnis soll eine optimale Ladeliste sein.