Dwave量子模拟器qbsolv安装使用
Dwave量子模拟器qbsolv安装使用
本文参阅dwave官方使用手册
可参阅GitHub开源
1.背景
就当前的量子计算机技术水平来讲,要正确使用它还是需要极高的专业知识才可以,这就会是大多数普通人望而却步。为解决此问题,D-Wave发布了一款名为Qbsolv的软件,开发人员借助它可以在无需掌握相关量子物理知识的情况下为D-Wave的量子计算机编写程序。
D-ware量子计算机公司官网
Qbsolv目前是一款开源软件,D-Wave希望围绕这个平台建立量子计算的开源社区/生态系统。但由于D-Wave与众不同的算法与传统量子计算机和经典计算机都不一样,所以Qbsolv写的程序目前只能在D-Wave的机器上跑。类似的还有D-Wave资助开发的Qmasm.
2.安装qbsolv
python
若想通过python调用,在linux系统中可直接通过以下命令安装
pip install dwave-qbsolv
若无法安装,可直接从源下载再安装
pip install -r python/requirements.txt
pip install cython==0.27
python setup.py install
(上述方法前两步可通过直接下载GitHub中的qbsolv文件包,再运行第三条命令)
无法下载时可更换pip源
pip源的选择
很多时候,比如网络不给力,连接超时、防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源,推荐使用豆瓣源,速度不错。
使用方法:
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow
需要注意的是,除了最后的pillow用你所期望的库名替代外,前面的参数都是固定写法,包括参数顺序。
C编译
在qbsolv的目录下进行以下操作

mkdir build; cd build
cmake .. 否则这一步无法make,报错缺少cmakelists.txt
make -j20
要构建命令行界面,请打开cmake选项QBSOLV_BUILD_CMD。cmake的命令行选项是-DQBSOLV_BUILD_CMD = ON。要构建测试,请打开cmake选项QBSOLV_BUILD_TESTS。cmake的命令行选项为-DQBSOLV_BUILD_TESTS = ON。
此时可通过ls显示当前目录

其中绿色的便是可执行文件
3.命令行用法
qbsolv -i infile [-o outfile] [-m] [-T] [-n] [-S SubMatrix] [-w]
[-h] [-a algorithm] [-v verbosityLevel] [-V] [-q] [-t seconds]
qbsolv执行文件中表示的二次无约束二进制优化QUBO)问题。它返回比特向量结果,该结果最小化或者可选地最大化由曲波表示的目标函数值。问题由QUBO(5)文件格式表示
QUBO输入问题并不受图的大小或采样器的连通性的限制。
Options
-i infile:输入QUBO的文件名,这个选项是强制性的
-o outfile:可选的输出的文件名,默认是标准输出
-a algorithm:外部循环算法的可选选项,默认为 o, ‘o’是原始qbsolve方法,基于能量变化的子矩阵。‘p’表示重新链接路径。基于解的差异的子矩阵。
-m:表示最优化找最大值而不是最小值的可选选项
-T target:目标函数的可选目标参数值,当到达此值则停止
-t timeout:可选超时值,当CPU时间大于等于该时间时停止执行,超时时间仅在主循环完成后检查,其他暂停值如 ‘target’ ‘repeats’都在timeout之前,默认值是2592000.0
-n repeats:算法主循环重复的可选次数,若在停止前发现最优值则没有变化。默认为50
-S subproblemSize:QUBO剖分为子问题的大小,若没有-S 0 或-S出现,使用在DW设置的工作空间中找到的嵌入文件中指定的大小。如果没有建立DW仓库环境,则默认值为47,并在子问题上使用禁忌tabu求解器。如果指定了一个值,基于该大小的子问题将使用禁忌求解器进行求解。
-w :若出现,则QUBO矩阵和结果打印为.csv格式
-h:若出现,打印help或qbsolv使用方法,并不执行退出
-v verbosityLevel:输出详细程度的可选设置。默认的verbosityLevel为0,输出解中的位数、解和解的能量。VerbosiTypeLevel 1将为可能找到的多个解输出同0相同的信息。verbosityLevel 2还会在算法的每一步输出更详细的信息。详细程度直到4级时。
-V:若出现,输出版本号
-q:若出现,输出QUBO文件的格式
-r seed :使用-r重置随机数生成器的种子
qbsolv QUBO输入文件的格式
.qubo文件包含描述无约束二次二进制优化问题的数据。它是一个由四种类型的行组成的ASCII文件:
1.第一列由c定义的语句为注释
2.第一列中由“p”定义的程序行。单个程序行必须是文件中的第一个非注释行。程序行有六个由空格分隔的必填字段,如下例所示:
p qubo topology maxNodes nNodes nCouplers
p 问题行标志
qubo 文件类型定义
topology 标识问题拓扑和特定问题类型的字符串。对于无约束问题,目标为“0”或“unconstrained”在未来的实现中,有效的字符串可能包括“chimera128”或“chimera512”(等等)。
maxNodes:topology中节点数目
nNodes:问题中的节点数,(nNodes <= maxNodes)每个点必须在{0-(maxNodes-1)}中有一个唯一的值,重复的节点号是不允许的。节点号不必是有序的,也不必是连续的。
nCouplers:问题中的耦合数,每一个耦合是两个节点间的唯一连接,耦合最大值是nNodes^2,重复的耦合是不允许的。
3.nNodes子句。每个子句由三个数字组成,由一个或多个空格分隔。前两个数字必须是整数,并且是该节点的数字(重复)。节点号必须在范围{0,(maxNodes-1)}内。第三个值是与节点关联的权重。权重可以是整数或浮点数,可以采用任何正值或负值,也可以设置为零。
4.nCouplers子句。每个子句由三个数字组成,用一个或多个空格隔开。前两个数字(I和j)是该耦合器的节点号,必须是不同的整数,其中(i < j)。每个数字都必须是nNodes有效节点数之一(因此在范围{0,(maxNodes-1)})。第三个值是与耦合器相关的强度。强度可以是整数或浮点数,可以是任何正值或负值,但不能是零。每个节点必须与至少一个其他节点连接(因此必须至少有一个耦合器与之连接)。
若直接在命令行输入qbsolv无法调用,可把相关可执行文件放到usr目录下,或直接在对应目录下运行
./qbsolv
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)