量子计算包kaiwu安装过程踩过的坑

目录

1 安装过程

2 官方代码测试

3 踩坑说明


首先,目前的kaiwu版本仅支持python3.8,所以必须要下载python3.8才能运行kaiwu

1 安装过程

step1: 在页面的SDK标签下,找到对应操作系统的kaiwu包。

step2: 下载python3.8到本地,可以选择如下链接:

Index of python-local/3.8.10 (huaweicloud.com)

step3: 打开pycharm,新建一个工程,为当前功能重新创建一个单独的环境

step4: 将之前下载的whl包解压到当前项目路径下,使用如下指令安装:

pip3 install kaiwu-0.9.3-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

step5: 然后在你的代码中,写入你的授权信息

直接点击复制,到你代码的第一行即可。

2 官方代码测试

代码来自:https://kaiwu-sdk-docs.qboson.com/zh/source/tsp.html

# Import numpy and kaiwu
import numpy as np
import kaiwu as kw
kw.license.init(user_id="你的ID", sdk_code="你的code")
# Import distance matrix
w = np.array([[ 0, 13, 11, 16,  8],
              [13,  0,  7, 14,  9],
              [11,  7,  0, 10,  9],
              [16, 14, 10,  0, 12],
              [ 8,  9,  9, 12,  0]])

# Get the number of nodes
n = w.shape[0]

# Create qubo variable matrix
x = kw.qubo.ndarray((n, n), "x", kw.qubo.Binary)

# Get sets of edge and non-edge pairs
edges = [(u, v) for u in range(n) for v in range(n) if w[u, v] != 0]
no_edges = [(u, v) for u in range(n) for v in range(n) if w[u, v] == 0]
# Node constraint: Each node must belong to exactly one position
sequence_cons = kw.qubo.quicksum([(1 - kw.qubo.quicksum([x[v, j] for j in range(n)])) ** 2 for v in range(n)])

# Position constraint: Each position can have only one node
node_cons = kw.qubo.quicksum([(1 - kw.qubo.quicksum([x[v, j] for v in range(n)])) ** 2 for j in range(n)])

# Edge constraint: Pairs without edges cannot appear in the path
connect_cons = kw.qubo.quicksum([kw.qubo.quicksum([x[u, j] * x[v, j + 1] for j in range(n - 1)]) + x[u, n - 1] * x[v, 0] for u, v in no_edges])

# Hamiltonian cycle constraint: Sum of the above three constraints
ham_cycle = sequence_cons + node_cons + connect_cons

# TSP path cost
path_cost = kw.qubo.quicksum([w[u, v] * (kw.qubo.quicksum([x[u, j] * x[v, j + 1] for j in range(n - 1)]) + x[u, n - 1] * x[v, 0]) for u, v in edges])

# Final objective function with penalty factor 100 for the Hamiltonian constraint
obj = 100 * ham_cycle + path_cost
# Parse QUBO
obj = kw.qubo.make(obj)

# Convert to Ising model
obj_ising = kw.qubo.qubo_model_to_ising_model(obj)

# Extract the Ising matrix
matrix = obj_ising.get_ising()["ising"]

# Perform calculation using CIM simulator
worker = kw.cim.SimulatedCIMOptimizer(
    pump=1.3,
    noise=0.2,
    laps=5000,
    delta_time=0.05,
    normalization=0.3,
    iterations=50
)
output = worker.solve(matrix)

# Sort the results
opt = kw.sampler.optimal_sampler(matrix, output, bias=0, negtail_ff=False)

# Select the best solution
cim_best = opt[0][0]

# If the linear term variable is -1, perform a flip
cim_best = cim_best * cim_best[-1]

print(cim_best)

# Get the list of variable names
vars = obj_ising.get_variables()

# Substitute the spin vector and obtain the result dictionary
sol_dict = kw.qubo.get_sol_dict(cim_best, vars)

# Check the hard constraints for validity and path length
seq_val = kw.qubo.get_val(sequence_cons, sol_dict)
node_val = kw.qubo.get_val(node_cons, sol_dict)
ham_val = kw.qubo.get_val(ham_cycle, sol_dict)
print('position cons: {}'.format(seq_val))
print('node_cons cons: {}'.format(node_val))
print('ham_cycle: {}'.format(ham_val))

# Calculate the path length using path_cost
path_val = kw.qubo.get_val(path_cost, sol_dict)
print('path_cost: {}'.format(path_val))

运行结果如下:

3 踩坑说明

坑1:程序每次运行都需要联网验证授权,如果你的网络不正常会报如下错误:

Traceback (most recent call last):
  File "F:\MyCode\kwproject\cdsss\tsp.py", line 4, in <module>
    kw.license.init(user_id="***", sdk_code="***")
  File "target\kaiwu\license\_license_utils.py", line 133, in target.kaiwu.license._license_utils.init
ValueError: License download failed, please log in to platform.qboson.com for support

坑2:创建新环境时,不要让pycharm自动下载python3.8,我使用默认下载的3.8.10,报了却SSL的问题,我报的错误时:

Can‘t connect to HTTPS URL because the SSL module is not available.

重新在网上下载之后,就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运筹码仓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值