Skip to content

TanjaMaier/bwi_coding_challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

BWI Coding Challenge

Code für die Teilnahme an der BWI Coding Challenge (https://www.get-in-it.de/coding-challenge).

 

Requirements und Ausführung:

Requirements:

  • numpy
  • pulp

Die Requirements können über pip mit folgendem Befehl installiert werden:

pip3 install -r requirements.txt

Das Programm wird mit folgendem Befehl ausgeführt:

python3 opt_transport.py

(Getestet mit Python 3.9.1)

 

Algorithmus:

Für die Lösung des Problems wird auf Integer Linear Programming zurückgegriffen, da es sich hier um ein klassisches lineares Optimierungsproblem (Nutzenmaximierung) mit linearen Nebenbedingungen (begrenzte Anzahl an Einheiten, begrenztes Fassungsvermögen der Transporter, etc.) handelt, dessen Lösung ganzzahlig sein muss. Zum Modellieren und Lösen des Problems wird PuLP verwendet: https://pypi.org/project/PuLP/

Der Lösungsvektor x := [x1, x2, x3, ..., x19, x20] ist wie folgt definiert:

  x1 = Anzahl Notebook Büro 13" in Transporter 1
  x2 = Anzahl Notebook Büro 14" in Transporter 1
  ...
  x9 = Anzahl Tablet outdoor klein in Transporter 1
  x10 = Anzahl Tablet outdoor groß in Transporter 1
  x11 = Anzahl Notebook Büro 13" in Transporter 2
  x12 = Anzahl Notebook Büro 14" in Transporter 2
  ...
  x19 = Anzahl Tablet outdoor klein in Transporter 2
  x20 = Anzahl Tablet outdoor groß in Transporter 2

Die Nebenbedingungen für das jeweilige Ladegewicht der Transporter können wie folgt definiert werden:

  ∑i = 110 gi · xi ≤ 1100000 - 72400

und

  ∑i = 1120 gi-10 · xi ≤ 1100000 - 85700,

wobei gi das Gewicht von Gerät i pro Einheit in Gramm angibt, i = 1, ..., 10.

Zudem darf die Gesamtzahl für jedes Gerät die benötigte Anzahl ei an Einheiten nicht übersteigen.

  xi + xi+10 ≤ ei   ∀ i = 1, ..., 10.

 

Optimale Verteilung der Hardware:

Gesamtnutzen:   74660

Gesamtanzahl der jeweils transportierten Geräte:

Gerät Anzahl
Notebook Büro 13" 0
Notebook Büro 14" 0
Notebook outdoor 0
Mobiltelefon Büro 60
Mobiltelefon Outdoor 157
Mobiltelefon Heavy Duty 220
Tablet Büro klein 595
Tablet Büro groß 0
Tablet outdoor klein 4
Tablet outdoor groß 370

 

Anzahl der jeweils transportierten Geräte in Transporter 1:

Gerät Anzahl
Notebook Büro 13" 0
Notebook Büro 14" 0
Notebook outdoor 0
Mobiltelefon Büro 27
Mobiltelefon Outdoor 0
Mobiltelefon Heavy Duty 4
Tablet Büro klein 358
Tablet Büro groß 0
Tablet outdoor klein 2
Tablet outdoor groß 251

 

Anzahl der jeweils transportierten Geräte in Transporter 2:

Gerät Anzahl
Notebook Büro 13" 0
Notebook Büro 14" 0
Notebook outdoor 0
Mobiltelefon Büro 33
Mobiltelefon Outdoor 157
Mobiltelefon Heavy Duty 216
Tablet Büro klein 237
Tablet Büro groß 0
Tablet outdoor klein 2
Tablet outdoor groß 119

About

My submission for the BWI Coding Challenge (https://www.get-in-it.de/coding-challenge).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages