El problema de la mochila es un problema de optimización bien conocido. Se encuentra, por ejemplo, al embalar contenedores de transporte. Un contenedor de envío tiene una capacidad de peso que puede contener. Dada una colección de artículos a enviar, donde cada artículo tiene un valor y un peso, el problema es seleccionar los artículos óptimos para empacar en el contenedor de envío. Este problema de optimización se puede definir como un objetivo con una restricción:
Este ejemplo resuelve dicho problema de mochila reformulándolo como un modelo cuadrático restringido (CQM) y enviándolo a un solucionador CQM híbrido de Leap.
Para ejecutar la demostración predeterminada, ingrese el comando:
python knapsack.py
Para ver las opciones disponibles, ingrese el comando:
python knapsack.py --help
Los argumentos de la línea de comandos le permiten seleccionar uno de varios conjuntos de datos (en la carpeta /data
) y establecer la capacidad de carga. Los archivos de datos se formulan como filas de elementos, cada uno definido como un par de peso y valor.
El código en knapsack.py
incluye tres funciones principales:
build_knapsack_cqm()
crea un CQM estableciendo un objetivo y una restricción de la siguiente manera:
parse_inputs()
es una función de utilidad que lee datos de los archivos de ejemplo.
parse_solution()
analiza y muestra los resultados devueltos por el solucionador.
Publicado bajo la licencia Apache 2.0. Ver archivo de LICENCIA.