author | description | ms.author | ms.date | ms.service | ms.subservice | ms.topic | title | uid |
---|---|---|---|---|---|---|---|---|
anraman |
This document provides a basic installation and usage overview of the Python SDK for optimization. |
anraman |
02/01/2021 |
azure-quantum |
optimization |
article |
Install and use the Python SDK for optimization |
microsoft.quantum.optimization.install-sdk |
This guide provides a basic overview of how to install and use the Python SDK for optimization.
- An Azure Quantum workspace created in your Azure subscription. To create a workspace, see Create an Azure Quantum workspace.
The Python SDK is distributed as the azure-quantum
PyPI
package. To install the package you will need to follow the steps below:
-
Install Python 3.6 or later.
-
Install PIP, the Python Package Installer, and ensure you have version 19.2 or higher
-
Install the
azure-quantum
Python package:pip install azure-quantum
You can also choose to interact with Azure Quantum optimization using Jupyter Notebooks. In order to do this, you will need to:
-
Install the Python SDK for optimization (as described in the previous section)
-
In your terminal of choice, use the following command to launch a new Jupyter Notebook:
jupyter notebook
This will launch a new browser window (or a new tab) showing the Notebook Dashboard, a sort of control panel that allows you (among other things) to select which notebook to open.
-
In the browser view, select the dropdown button on the right hand top corner and select
Python 3
from the list. This should create a new notebook.
Whether you choose to solve optimization problems using Jupyter Notebooks or a Python script, once you have installed the prerequisites from the previous sections you can follow the instructions below to run a test problem.
A Workspace
represents the Azure Quantum workspace you previously created and is the main interface for interacting with the service.
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")
)
workspace.login()
When you run the command workspace.login()
for the first time, you will see the following displayed in your console:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code [RANDOM-CODE] to authenticate.
Once you sign into your Azure account, your credentials will be cached so that you do not have to repeat this process for future runs.
To express a simple problem to be solved, create an instance of a Problem
and set the problem_type
to either ProblemType.ising
or ProblemType.pubo
. For more information, see ProblemType
.
from azure.quantum.optimization import Problem, ProblemType, Term, ParallelTempering
problem = Problem(name="My First Problem", problem_type=ProblemType.ising)
Next, create an array of Term
objects and add them to the 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)
Note
There are multiple ways to supply terms to the problem, and not all terms must be added at once.
Next, we're ready to apply a solver. In this example we'll use a parameter-free version of parallel tempering. You can find documentation on this solver and the other available solvers in the Microsoft QIO provider reference.
solver = ParallelTempering(workspace, timeout=100)
result = solver.optimize(problem)
print(result)
This method will submit the problem to Azure Quantum for optimization and synchronously wait for it to be solved. You'll see output like the following in your terminal window or Jupyter Notebook:
{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}
- Solver overview
- Expressing problems & supplying terms
- Interpreting solver results
- Job management
- Solve long-running problems (async problem submission)
- Reuse problem definitions
- Authenticating with a service principal
- Solvers reference for Microsoft QIO solvers
- QIO samples repo
- Getting started
- Ship loading sample problem
- Job shop scheduling sample problem