Das Rucksackproblem ist ein bekanntes Optimierungsproblem. Es kommt beispielsweise beim Verpacken von Schiffscontainern vor. Ein Versandbehälter hat eine Gewichtskapazität, die er aufnehmen kann. Bei einer Sammlung von zu versendenden Artikeln, bei denen jeder Artikel einen Wert und ein Gewicht hat, besteht das Problem darin, die optimalen Artikel auszuwählen, die in den Versandbehälter gepackt werden sollen. Dieses Optimierungsproblem kann als Ziel mit einer Einschränkung definiert werden:
Dieses Beispiel löst ein solches Rucksackproblem, indem es als eingeschränktes quadratisches Modell (CQM) umformuliert und an einen Leap-Hybrid-CQM-Löser übermittelt wird.
Um die Standarddemo auszuführen, geben Sie den folgenden Befehl ein:
python knapsack.py
Geben Sie den folgenden Befehl ein, um die verfügbaren Optionen anzuzeigen:
python knapsack.py --help
Mit Befehlszeilenargumenten können Sie einen von mehreren Datensätzen (im Ordner /data
) auswählen und die Frachtkapazität festlegen. Die Datendateien sind als Zeilen mit Elementen formuliert, die jeweils als Gewichtungs- und Wertpaar definiert sind.
Der Code in knapsack.py
umfasst drei Hauptfunktionen:
build_knapsack_cqm()
erstellt ein CQM, indem ein Ziel und eine Einschränkung wie folgt festgelegt werden:
parse_inputs()
ist eine Hilfsfunktion, die Daten aus den Beispieldateien liest.
parse_solution()
analysiert die vom Solver zurückgegebenen Ergebnisse und zeigt sie an.
Veröffentlicht unter der Apache-Lizenz 2.0. Siehe LICENSE-Datei.