你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure Quantum 笔记本解决优化问题
了解如何使用 Azure Quantum 优化求解器来解决简单的二进制优化问题。 此过程使用 Azure Quantum 门户中的笔记本。
先决条件
如果要完成此过程,需要
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 启用了 Microsoft QIO 提供程序的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在工作区中创建一个新笔记本
- 登录到 Azure 门户并选择在上一步中创建的工作区。
- 在左侧边栏选项卡中,选择“笔记本”。
- 单击“我的笔记本”,然后单击“新增”。
- 在“内核类型”中选择“IPython”。
- 为该文件键入一个名称,例如 SimpleOptimization. ipynb,然后单击“创建文件”。
打开新的笔记本时,它会自动根据订阅和工作区信息为第一个单元格创建代码。
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = <your subscription ID>,
resource_group = <your resource group>,
name = <your workspace name>,
location = <your location>
)
需要导入两个其他模块。 单击“+ 代码”添加新的单元格并添加以下行:
from typing import List
from azure.quantum.optimization import Term
表达简单的问题
单击“+ 代码”添加另一个新单元格并添加以下行:
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.ising)
此代码将创建 Problem 的实例,并将 problem_type设为 ProblemType.ising。 有关详细信息,请参阅 ProblemType。
接下来,添加另一个单元格以创建 Term 对象数组并将它们添加到 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)
注意
有多种方法可以为问题提供术语,并且不需要一次添加完所有术语。
应用优化求解器
对于 Microsoft QIO 提供程序,将使用无参数版并行回火算法。 有关并行调节求解器和其他 Microsoft QIO 求解器的详细信息,请参阅 QIO 提供程序参考。
添加另一个单元格,其中包含以下用于打开求解器,提交问题并显示结果的代码:
from azure.quantum.optimization import ParallelTempering
solver = ParallelTempering(workspace, timeout=100)
result = solver.optimize(problem)
print(result)
此方法会将问题提交给 Azure Quantum 以进行优化,并以同步方式等待它得以解决。
单击“全部运行”,将在笔记本中看到类似于以下内容的输出:
......{'version': '1.0', 'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0, 'parameters': {'all_betas': [0.05263157894736842, 0.08483446830185856, 0.13674085322912188, 0.22040641399786567, 0.05263157894736842, 0.06507156662728714, 0.0804518668832599, 0.09946745130748995, 0.12297755481503365, 0.15204450088433905, 0.18798170352254984, 0.2324130149640922, 0.2873461007774075, 0.05263157894736842, 0.06032292374035997, 0.0691382474431204, 0.0792418033330163, 0.09082184793061673, 0.1040941487268661, 0.11930600451390022, 0.13674085322912186, 0.1567235531691094, 0.1796264359766303, 0.20587624418424752, 0.23596208257968374, 0.27044453154834486, 0.3099660921991755, 0.05263157894736842, 0.05819611133264724, 0.06434896011059557, 0.07115232568798963, 0.07867498467898539, 0.08699298518197843, 0.09619041556538521, 0.10636025453415848, 0.11760531107053311, 0.13003926375105576, 0.14378780994656645, 0.1589899365226302, 0.17579932488618855, 0.19438590458233618, 0.2149375711468486, 0.23766208558058496, 0.2627891746479403, 0.29057285323169424, 0.32129399222141625, 0.05263157894736842, 0.05699027110239624, 0.061709929006167785, 0.06682044609165143, 0.0723541914209791, 0.07834621470504914, 0.08483446830185858, 0.09186004759966065, 0.09946745130749, 0.10770486330168681, 0.1166244578135835, 0.1262827298913559, 0.1367408532291219, 0.14806506762971203, 0.16032709855522653, 0.17360461142273625, 0.18798170352255, 0.20354943667476758, 0.22040641399786576, 0.23865940444246173, 0.25842401904593415, 0.27982544319117336, 0.3029992295074498, 0.3280921564354881], 'replicas': 70, 'sweeps': 600}, 'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}
先决条件
如果要完成此过程,需要
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 启用了 1Qbit 提供程序的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在工作区中创建一个新笔记本
- 登录到 Azure 门户并选择在上一步中创建的工作区。
- 在左侧边栏选项卡中,选择“笔记本”。
- 单击“我的笔记本”,然后单击“新增”。
- 在“内核类型”中选择“IPython”。
- 为该文件键入一个名称,例如 SimpleOptimization. ipynb,然后单击“创建文件”。
打开新的笔记本时,它会自动根据订阅和工作区信息为第一个单元格创建代码。
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = <your subscription ID>,
resource_group = <your resource group>,
name = <your workspace name>,
location = <your location>
)
需要导入两个其他模块。 单击“+ 代码”添加新的单元格并添加以下行:
from typing import List
from azure.quantum.optimization import Term
表达简单的问题
单击“+ 代码”添加另一个新单元格并添加以下行:
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.ising)
此代码将创建 Problem 的实例,并将 problem_type设为 ProblemType.ising。 有关详细信息,请参阅 ProblemType。
接下来,添加另一个单元格以创建 Term 对象数组并将它们添加到 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)
注意
有多种方法可以为问题提供术语,并且不需要一次添加完所有术语。
应用优化求解器
对于 1QBit 提供程序,你将使用路径重链接求解器。 有关路径重新链接求解器和其他 1QBit 求解器的详细信息,请参阅 1QBit 提供程序参考。
添加另一个单元格,其中包含以下用于打开求解器,提交问题并显示结果的代码:
from azure.quantum.target.oneqbit import PathRelinkingSolver
solver = PathRelinkingSolver(workspace)
result = solver.optimize(problem)
print(result)
此方法会将问题提交给 Azure Quantum 以进行优化,并以同步方式等待它得以解决。
单击“全部运行”,将在笔记本中看到类似于以下内容的输出:
......{'version': '1.0', 'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0, 'parameters': {'all_betas': [0.05263157894736842, 0.08483446830185856, 0.13674085322912188, 0.22040641399786567, 0.05263157894736842, 0.06507156662728714, 0.0804518668832599, 0.09946745130748995, 0.12297755481503365, 0.15204450088433905, 0.18798170352254984, 0.2324130149640922, 0.2873461007774075, 0.05263157894736842, 0.06032292374035997, 0.0691382474431204, 0.0792418033330163, 0.09082184793061673, 0.1040941487268661, 0.11930600451390022, 0.13674085322912186, 0.1567235531691094, 0.1796264359766303, 0.20587624418424752, 0.23596208257968374, 0.27044453154834486, 0.3099660921991755, 0.05263157894736842, 0.05819611133264724, 0.06434896011059557, 0.07115232568798963, 0.07867498467898539, 0.08699298518197843, 0.09619041556538521, 0.10636025453415848, 0.11760531107053311, 0.13003926375105576, 0.14378780994656645, 0.1589899365226302, 0.17579932488618855, 0.19438590458233618, 0.2149375711468486, 0.23766208558058496, 0.2627891746479403, 0.29057285323169424, 0.32129399222141625, 0.05263157894736842, 0.05699027110239624, 0.061709929006167785, 0.06682044609165143, 0.0723541914209791, 0.07834621470504914, 0.08483446830185858, 0.09186004759966065, 0.09946745130749, 0.10770486330168681, 0.1166244578135835, 0.1262827298913559, 0.1367408532291219, 0.14806506762971203, 0.16032709855522653, 0.17360461142273625, 0.18798170352255, 0.20354943667476758, 0.22040641399786576, 0.23865940444246173, 0.25842401904593415, 0.27982544319117336, 0.3029992295074498, 0.3280921564354881], 'replicas': 70, 'sweeps': 600}, 'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}
先决条件
若要完成本教程,需要
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 启用了 Toshiba SQBM+ 提供程序的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在工作区中创建一个新笔记本
- 登录到 Azure 门户并选择在上一步中创建的工作区。
- 在左侧边栏选项卡中,选择“笔记本”。
- 单击“我的笔记本”,然后单击“新增”。
- 在“内核类型”中选择“IPython”。
- 为该文件键入一个名称,例如 SimpleOptimization. ipynb,然后单击“创建文件”。
打开新的笔记本时,它会自动根据订阅和工作区信息为第一个单元格创建代码。
from azure.quantum import Workspace
workspace = Workspace (
subscription_id = <your subscription ID>,
resource_group = <your resource group>,
name = <your workspace name>,
location = <your location>
)
需要导入两个其他模块。 单击“+ 代码”添加新的单元格并添加以下行:
from typing import List
from azure.quantum.optimization import Term
表达简单的问题
单击“+ 代码”添加另一个新单元格并添加以下行:
from azure.quantum.optimization import Problem, ProblemType, Term
problem = Problem(name="My First Problem", problem_type=ProblemType.pubo)
此代码将创建 Problem 的实例,并将 problem_type设为 ProblemType.pubo。 有关详细信息,请参阅 ProblemType。
接下来,添加另一个单元格以创建 Term 对象数组并将它们添加到 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)
注意
有多种方法可以为问题提供术语,并且不需要一次添加完所有术语。
应用优化求解器
对于 Toshiba SQBM+ 提供程序,我们将使用 Ising 求解器,即 SimulatedBifurcationMachine。 你可以在 Toshiba SQBM+ 提供程序参考中找到有关此求解器的文档。
添加另一个单元格,其中包含以下用于打开求解器,提交问题并显示结果的代码:
from azure.quantum.target.toshiba import SimulatedBifurcationMachine
solver = SimulatedBifurcationMachine(workspace)
result = solver.optimize(problem)
print(result)
此方法会将问题提交给 Azure Quantum 进行优化,并以同步方式等待问题得到解决。 你会在 Notebook 中看到如下输出:
{... 'solutions': [{'cost': -14.0, 'configuration': {'0': 1, '1': 1, '2': 0, '3': 1}...}
有关求解器结果的详细信息,请参阅解释求解器结果。
注意
如果在使用 Azure Quantum 时遇到错误,你可以查阅常见问题列表。 此外,如果你使用的是优化求解器,而你在窗体 <AZQxxx>中收到错误,则可以查阅优化求解器中的常见用户错误列表。
后续步骤
文档
- 求解器概述
- 表达问题并提供项
- 解释求解器结果
- 作业管理
- 解决长时间运行的问题(异步问题提交)
- 重复使用问题定义
- 使用服务主体进行身份验证
- Microsoft QIO 求解器的求解器参考
- 1QBit 求解器的求解器参考
示例和端到端学习
- QIO 示例存储库
- 入门
- 货船装载示例问题
- 车间作业调度示例问题