Inicio rápido: Solución de un problema de optimización en Azure Quantum
Obtenga información sobre cómo usar los solucionadores de optimización en Azure Quantum para solucionar un sencillo problema de optimización binaria.
Prerrequisitos
- Para completar este tutorial, necesitará una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Creación de un área de trabajo de Azure Quantum
Para usar Azure Quantum, agregue un recurso de área de trabajo de Azure Quantum a su suscripción de Azure en Azure Portal. Un recurso de área de trabajo de Azure Quantum, o área de trabajo para abreviar, es una colección de recursos asociados a aplicaciones de optimización o cuánticas en ejecución.
Para abrir Azure Portal, vaya a https://portal.azure.com y siga los pasos que se detallan a continuación:
Haga clic en Crear un recurso y, después, busque Azure Quantum. En la página de resultados, debería ver un icono para el servicio Azure Quantum (versión preliminar).

Haga clic en Azure Quantum (versión preliminar) y, después, en Crear. Se abrirá un formulario para crear un área de trabajo.

Rellene los detalles del área de trabajo:
- Suscripción: la suscripción que desea asociar a esta área de trabajo.
- Grupo de recursos: el grupo de recursos al que desea asignar esta área de trabajo.
- Nombre: el nombre del área de trabajo.
- Región: la región del área de trabajo.
- Cuenta de almacenamiento: la cuenta de almacenamiento de Azure para almacenar los trabajos y resultados. Si no tiene una cuenta de almacenamiento, haga clic en Crear una nueva cuenta de almacenamiento y rellene los campos necesarios. Para esta versión preliminar, se recomienda usar los valores predeterminados.

Nota
Debe ser propietario del grupo de recursos seleccionado para crear una nueva cuenta de almacenamiento. Para obtener más información sobre cómo funcionan los grupos de recursos en Azure, consulte Control y organización de los recursos de Azure con Azure Resource Manager.
Una vez rellenada la información, haga clic en la pestaña Proveedores para agregar proveedores al área de trabajo. Un proveedor proporciona acceso a un servicio cuántico, que puede ser un hardware cuántico, un simulador cuántico o un servicio de optimización.

Nota
De forma predeterminada, el servicio Azure Quantum agrega el proveedor Microsoft QIO a cada área de trabajo.
Asegúrese de que el proveedor Microsoft QIO está habilitado (lo está de forma predeterminada) y, a continuación, haga clic en Revisar y crear.
Revise la configuración que ha seleccionado y, si todo es correcto, haga clic en Crear para crear el área de trabajo.
Nota
Los precios de Azure Quantum varían según el proveedor. Consulte la información de la pestaña de proveedores del área de trabajo de Azure Quantum en Azure Portal para obtener la información de precios más actualizada o visite la página Precios de Azure Quantum.
Instalación del paquete de Python para azure-quantum
Para implementar una solución, asegúrese primero de que tiene instalado el paquete de Python para azure-quantum en la máquina. Si todavía no lo tiene instalado, siga estos pasos:
Instale Python 3.6 o posterior en caso de que aún no lo haya hecho.
Instale PIP y asegúrese de que tiene la versión 19.2 o posterior.
Instale el paquete
azure-quantumde Python. Use la marca--upgradepara asegurarse de obtener la última versión.pip install --upgrade azure-quantum
Instalación de Jupyter Notebooks
También puede interactuar con la optimización de Azure Quantum mediante cuadernos de Jupyter Notebook. Para ello, deberá hacer lo siguiente:
Instale el paquete de Python para azure-quantum (tal y como se describe en la sección anterior).
En el terminal que prefiera, use el siguiente comando para iniciar una nueva instancia de Jupyter Notebook:
jupyter notebookSe abre una nueva ventana del explorador (o una nueva pestaña) que mostrará el panel de cuadernos, una especie de panel de control que permite seleccionar qué cuaderno se va a abrir (entre otras cosas).
En la vista del explorador, seleccione la lista desplegable de la esquina superior derecha y elija
Python 3en la lista. Esta acción debería crear un nuevo cuaderno.
Creación y conexión a un área de trabajo de Azure Quantum
Un elemento Workspace representa el área de trabajo de Azure Quantum y es la interfaz principal para interactuar con el servicio.
from typing import List
from azure.quantum.optimization import Term
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = "", # Add your subscription_id
resource_group = "", # Add your resource_group
name = "", # Add your workspace name
location = "" # Add your workspace location (for example, "westus")
)
La primera vez que ejecute un método que interactúe con el servicio de Azure, es posible que una ventana le pida sus credenciales en el explorador predeterminado.
Opcionalmente, puede pasar la credencial que se usará en la autenticación en la construcción del objeto Workspace o por medio de su propiedad credentials.
Para más información, consulte Área de trabajo de Quantum.
Nota
El método workspace.login() está en desuso y ya no es necesario. La primera vez que se llama al servicio, se intenta realizar una autenticación con las credenciales pasadas al constructor Workspace o a su propiedad credentials. Si no se han pasado credenciales, se intentan varios métodos de autenticación con DefaultAzureCredential.
Expresión de un problema simple
Para expresar un problema simple que se resolverá, cree una instancia de Problem establezca problem_type en ProblemType.ising o ProblemType.pubo. Para más información, consulte ProblemType.
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.ising)
A continuación, cree una matriz de objetos Term y agréguelos a Problem:
terms = [
Term(c=-9, indices=[0]),
Term(c=-3, indices=[1,0]),
Term(c=5, indices=[2,0]),
Term(c=9, indices=[2,1]),
Term(c=2, indices=[3,0]),
Term(c=-4, indices=[3,1]),
Term(c=4, indices=[3,2])
]
problem.add_terms(terms=terms)
Nota
Hay varias maneras de proporcionar términos al problema y no todos los términos deben agregarse al mismo tiempo.
Aplicación de un solucionador de optimización
Para el proveedor Microsoft QIO, usaremos una versión sin parámetros del templado paralelo. Puede consultar la documentación acerca de este solucionador y los otros disponibles en la referencia del proveedor de Microsoft QIO.
from azure.quantum.optimization import ParallelTempering
solver = ParallelTempering(workspace, timeout=100)
result = solver.optimize(problem)
print(result)
Este método envía el problema a Azure Quantum para la optimización y espera sincrónicamente a que se resuelva. Verá una salida similar a la siguiente en la ventana de terminal o en Jupyter Notebook:
{'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}
Prerrequisitos
- Para completar este tutorial, necesitará una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Creación de un área de trabajo de Azure Quantum
Para usar Azure Quantum, agregue un recurso de área de trabajo del servicio a su suscripción de Azure en Azure Portal. Un recurso de área de trabajo de Azure Quantum, o área de trabajo para abreviar, es una colección de recursos asociados a aplicaciones de optimización o cuánticas en ejecución.
Para abrir Azure Portal, vaya a https://portal.azure.com y siga los pasos que se detallan a continuación:
Haga clic en Crear un recurso y, después, busque Azure Quantum. En la página de resultados, debería ver un icono para el servicio Azure Quantum (versión preliminar).

Haga clic en Azure Quantum (versión preliminar) y, después, en Crear. Se abrirá un formulario para crear un área de trabajo.

Rellene los detalles del área de trabajo:
- Suscripción: la suscripción que desea asociar a esta área de trabajo.
- Grupo de recursos: el grupo de recursos al que desea asignar esta área de trabajo.
- Nombre: el nombre del área de trabajo.
- Región: la región del área de trabajo.
- Cuenta de almacenamiento: la cuenta de almacenamiento de Azure para almacenar los trabajos y resultados. Si no tiene una cuenta de almacenamiento, haga clic en Crear una nueva cuenta de almacenamiento y rellene los campos necesarios. Para esta versión preliminar, se recomienda usar los valores predeterminados.

Nota
Debe ser propietario del grupo de recursos seleccionado para crear una nueva cuenta de almacenamiento. Para obtener más información sobre cómo funcionan los grupos de recursos en Azure, consulte Control y organización de los recursos de Azure con Azure Resource Manager.
Una vez rellenada la información, haga clic en la pestaña Proveedores para agregar proveedores al área de trabajo. Un proveedor proporciona acceso a un servicio cuántico, que puede ser un hardware cuántico, un simulador cuántico o un servicio de optimización.

Nota
De forma predeterminada, el servicio Azure Quantum agrega el proveedor Microsoft QIO a cada área de trabajo.
Agregue al menos el proveedor 1Qloud Optimization Platform y, a continuación, haga clic en Revisar y crear.
Revise la configuración que ha seleccionado y, si todo es correcto, haga clic en Crear para crear el área de trabajo.

Nota
Los precios de Azure Quantum varían según el proveedor. Consulte la información de la pestaña de proveedores del área de trabajo de Azure Quantum en Azure Portal para obtener la información de precios más actualizada o visite la página Precios de Azure Quantum.
Instalación del paquete de Python para azure-quantum
Para implementar una solución, asegúrese primero de que tiene instalado el paquete de Python para azure-quantum en la máquina. Si todavía no lo tiene instalado, siga estos pasos:
Instale Python 3.6 o posterior en caso de que aún no lo haya hecho.
Instale PIP y asegúrese de que tiene la versión 19.2 o posterior.
Instale el paquete
azure-quantumde Python. Use la marca--upgradepara asegurarse de obtener la última versión.pip install --upgrade azure-quantum
Instalación de Jupyter Notebooks
También puede interactuar con la optimización de Azure Quantum mediante cuadernos de Jupyter Notebook. Para ello, deberá hacer lo siguiente:
Instale el paquete de Python para azure-quantum (tal y como se describe en la sección anterior).
En el terminal que prefiera, use el siguiente comando para iniciar una nueva instancia de Jupyter Notebook:
jupyter notebookSe abre una nueva ventana del explorador (o una nueva pestaña) que mostrará el panel de cuadernos, una especie de panel de control que permite seleccionar qué cuaderno se va a abrir (entre otras cosas).
En la vista del explorador, seleccione la lista desplegable de la esquina superior derecha y elija
Python 3en la lista. Esta acción debería crear un nuevo cuaderno.
Creación y conexión a un área de trabajo de Azure Quantum
Un elemento Workspace representa el área de trabajo de Azure Quantum y es la interfaz principal para interactuar con el servicio.
from typing import List
from azure.quantum.optimization import Term
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = "", # Add your subscription_id
resource_group = "", # Add your resource_group
name = "", # Add your workspace name
location = "" # Add your workspace location (for example, "westus")
)
La primera vez que ejecute un método que interactúe con el servicio de Azure, es posible que una ventana le pida sus credenciales en el explorador predeterminado.
Opcionalmente, puede pasar la credencial que se usará en la autenticación en la construcción del objeto Workspace o por medio de su propiedad credentials.
Para más información, consulte Área de trabajo de Quantum.
Nota
El método workspace.login() está en desuso y ya no es necesario. La primera vez que se llama al servicio, se intenta realizar una autenticación con las credenciales pasadas al constructor Workspace o a su propiedad credentials. Si no se han pasado credenciales, se intentan varios métodos de autenticación con DefaultAzureCredential.
Expresión de un problema simple
Para expresar un problema simple que se resolverá, cree una instancia de Problem establezca problem_type en ProblemType.ising o ProblemType.pubo. Para más información, consulte ProblemType.
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.ising)
A continuación, cree una matriz de objetos Term y agréguelos a Problem:
terms = [
Term(c=-9, indices=[0]),
Term(c=-3, indices=[1,0]),
Term(c=5, indices=[2,0]),
Term(c=9, indices=[2,1]),
Term(c=2, indices=[3,0]),
Term(c=-4, indices=[3,1]),
Term(c=4, indices=[3,2])
]
problem.add_terms(terms=terms)
Nota
Hay varias maneras de proporcionar términos al problema y no todos los términos deben agregarse al mismo tiempo.
Aplicación de un solucionador de optimización
Para el proveedor 1QBit, usaremos el solucionador de revinculación de ruta de acceso. Puede consultar la documentación acerca de este solucionador y otros disponibles en la referencia del proveedor 1QBit.
from azure.quantum.optimization.oneqbit import PathRelinkingSolver
solver = PathRelinkingSolver(workspace)
result = solver.optimize(problem)
print(result)
Este método envía el problema a Azure Quantum para la optimización y espera sincrónicamente a que se resuelva. Verá una salida similar a la siguiente en la ventana de terminal o en Jupyter Notebook:
{'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}
Nota
Si se produce un error al trabajar con Azure Quantum, puede consultar nuestra lista de problemas comunes. Además, si usa un solucionador de optimización y aparece un error con el formato <AZQxxx>, puede consultar nuestra lista de errores comunes de usuario en solucionadores de optimización.
Pasos siguientes
Documentación
- Introducción al solucionador
- Expresión de problemas y especificación de términos
- Interpretación de los resultados del solucionador
- Administración de trabajos
- Solución de problemas de larga duración (envío de problemas asincrónicos)
- Reutilización de definiciones de problemas
- Autenticación con una entidad de servicio
- Referencia del solucionador Microsoft QIO
- Referencia del solucionador 1QBit
Ejemplos y aprendizaje integral
- Repositorio de ejemplos de QIO
- Introducción
- Problema de ejemplo de carga de envío
- Problema de ejemplo de programación de una planta en un trabajo