Задача о рюкзаке — хорошо известная оптимизационная задача. Встречается, например, при упаковке морских контейнеров. Транспортный контейнер имеет грузоподъемность, которую он может выдержать. Учитывая набор предметов, подлежащих отправке, где каждый предмет имеет стоимость и вес, проблема состоит в том, чтобы выбрать оптимальные предметы для упаковки в транспортный контейнер. Эту задачу оптимизации можно определить как цель с ограничением:
В этом примере решается такая задача о рюкзаке, переформулируя ее как квадратичную модель с ограничениями (CQM) и отправляя ее в гибридный решатель CQM Leap.
Чтобы запустить демо-версию по умолчанию, введите команду:
python knapsack.py
Чтобы просмотреть доступные параметры, введите команду:
python knapsack.py --help
Аргументы командной строки позволяют выбрать один из нескольких наборов данных (в папке /data
) и установить грузоподъемность. Файлы данных представляют собой строки элементов, каждый из которых определяется как пара веса и стоимости.
Код в knapsack.py
включает три основные функции:
build_knapsack_cqm()
создает CQM, устанавливая цель и ограничение следующим образом:
parse_inputs()
— это служебная функция, которая считывает данные из файлов примеров.
parse_solution()
анализирует и отображает результаты, полученные решателем.
Выпущено по лицензии Apache 2.0. См. файл ЛИЦЕНЗИИ.