Tutorial: Solve an optimization problem using an Azure Quantum notebook
Note
Please note that Toshiba SQBM+ optimization solver will be deprecated and no longer available in the Azure Quantum service soon.
Learn how to use Azure Quantum optimization solvers to solve a simple binary optimization problem. This tutorial uses free hosted notebooks in the Azure Quantum portal.
Prerequisites
To complete this tutorial, you need
- An Azure account with an active subscription. If you don’t have an Azure account, register for free and sign up for a pay-as-you-go subscription.
- An Azure Quantum workspace with the Toshiba SQBM+ provider enabled. For more information, see Create an Azure Quantum workspace.
Create a new Notebook in your workspace
- Log in to the Azure portal and select the workspace you created in the previous step.
- In the left blade, select Notebooks.
- Click My Notebooks and click Add New.
- In Kernel Type, select IPython.
- Type a name for the file, for example SimpleOptimization.ipynb, and click Create file.
When your new Notebook opens, it automatically creates the code for the first cell, based on your subscription and workspace information.
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = <your subscription ID>,
resource_group = <your resource group>,
name = <your workspace name>,
location = <your location>
)
You'll need to import two additional modules. Click + Code to add a new cell and add the following lines:
from typing import List
from azure.quantum.optimization import Term
Express a simple problem
Click + Code to add another new cell and add the following lines:
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.pubo)
This code creates an instance of a Problem
and sets the problem_type
to ProblemType.pubo
. For more information, see ProblemType
.
Next, add another cell to 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 a problem, and not all terms must be added at once.
Apply an optimization solver
For the Toshiba SQBM+ provider, we'll use the Ising solver, namely SimulatedBifurcationMachine
. You can find documentation on this solver in the Toshiba SQBM+ provider reference.
Add another cell with the following code that opens the solver, submits the problem, and displays the result:
from azure.quantum.target.toshiba import SimulatedBifurcationMachine
solver = SimulatedBifurcationMachine(workspace)
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 Notebook:
{... 'solutions': [{'cost': -14.0, 'configuration': {'0': 1, '1': 1, '2': 0, '3': 1}...}
For more information about solver results, see Interpreting solver results.
Note
If you run into an error while working with Azure Quantum, you can check our list of common issues.
Next steps
Feedback
Submit and view feedback for