你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 Azure Quantum 笔记本解决优化问题

了解如何使用 Azure Quantum 优化求解器来解决简单的二进制优化问题。 此过程使用 Azure Quantum 门户中的笔记本。

先决条件

如果要完成此过程,需要

在工作区中创建一个新笔记本

  1. 登录到 Azure 门户并选择在上一步中创建的工作区。
  2. 在左侧边栏选项卡中,选择“笔记本”。
  3. 单击“我的笔记本”,然后单击“新增”。
  4. 在“内核类型”中选择“IPython”。
  5. 为该文件键入一个名称,例如 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}]}

先决条件

如果要完成此过程,需要

在工作区中创建一个新笔记本

  1. 登录到 Azure 门户并选择在上一步中创建的工作区。
  2. 在左侧边栏选项卡中,选择“笔记本”。
  3. 单击“我的笔记本”,然后单击“新增”。
  4. 在“内核类型”中选择“IPython”。
  5. 为该文件键入一个名称,例如 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}]}

先决条件

若要完成本教程,需要

在工作区中创建一个新笔记本

  1. 登录到 Azure 门户并选择在上一步中创建的工作区。
  2. 在左侧边栏选项卡中,选择“笔记本”。
  3. 单击“我的笔记本”,然后单击“新增”。
  4. 在“内核类型”中选择“IPython”。
  5. 为该文件键入一个名称,例如 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>中收到错误,则可以查阅优化求解器中的常见用户错误列表

后续步骤

文档

示例和端到端学习