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

news2024/11/13 13:05:43

目录

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.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全文检索ElasticSearch到底是什么?

学习ElasticSearch之前&#xff0c;我们先来了解一下搜索 1 搜索是什么 ① 概念&#xff1a;用户输入想要的关键词&#xff0c;返回含有该关键词的所有信息。 ② 场景&#xff1a; ​ 1互联网搜索&#xff1a;谷歌、百度、各种新闻首页&#xff1b; ​ 2 站内搜索&#xff…

海鲜特写镜头视频素材去哪找 热门视频素材网站分享

作为美食自媒体创作者&#xff0c;海鲜特写镜头的视频素材无疑是提升内容吸引力和质量的重要利器。无论你想展示新鲜的海鲜原料、精美的烹饪过程&#xff0c;还是诱人的餐桌美食&#xff0c;精致的海鲜特写镜头都能极大地吸引观众的注意力。那么&#xff0c;问题来了&#xff1…

Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称

常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文&#xff0c;数字&#xff0c;英文进行识别&#xff0c;同样数量的汉字和同样数量的英文像素长度是不一样的&#xff0c;当我们限定固定长度后&#xff0c;在界面上的排版不够美观 痛点2…

SH3001姿态解算

姿态角&#xff0c;机体坐标系相对于参考坐标系的角度 旋转的非交换性 姿态角指的是载体坐标系与参考系之间的关系&#xff0c; 欧拉角是描述物体与某个轴(X,Y,Z)的关系&#xff0c;欧拉角属于姿态角的一种常见描述形式&#xff0c;另外两种描述形式就是四元数和和旋转矩阵 飞…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-19

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

【C/C++】memcpy函数的使用

零.导言 当我们学习了strcpy和strncpy函数后&#xff0c;也许会疑惑整形数组要如何拷贝&#xff0c;而今天我将讲解的memcpy函数便可以拷贝整形数组。 一.memcpy函数的使用 memcpy函数是一种C语言内存函数&#xff0c;可以按字节拷贝任意类型的数组&#xff0c;比如整形数组。 …

【数据分享】1901-2023年我国省市县镇四级的逐年降水数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月降水栅格数据和Shp和Excel格式的省市县四级逐月降水数据&#xff0c;原始的逐月降水栅格数据来源于彭守璋学者在国家青藏高原科学数据中心平台上分享的数据&#xff01;基于逐月数据我们采用求年累计值的方法得到逐年降水栅格数据&#…

【Qt问题】解决 Cannot retrieve debugging output

【Qt问题】解决 Cannot retrieve debugging output Chapter1 【Qt问题】解决 Cannot retrieve debugging output方案1 关闭其他Qt工程实例&#xff08;等于没说&#xff09;方案2 在PRO文件中&#xff0c;加上CONFIG console Chapter1 【Qt问题】解决 Cannot retrieve debuggi…

软考中级 软件设计师 上午考试内容笔记(个人向)Part.3

软考上午考试内容 7. 网络安全 威胁名称描述恶意攻击&#xff08;ARP&#xff09;所截获的合法通信数据拷贝&#xff0c;出于非法的目的而被重新发送。拒绝服务&#xff08;DOS&#xff09;对信息或其它资源的合法访问被无条件地阻止。窃听用户可利用合法或非法的手段窃取系统中…

第四十章 Vue之使用ESLint修正代码规范

目录 一、引言 二、前端开发规范 三、ESLint规范工具 四、ESLint规范错误解决方式 4.1. 手动修正 4.2. 自动修正 JavaScript Standard Style 规范说明地址&#xff1a; https://standardjs.com/rules-zhcn.html 一、引言 在我们实际项目的开发过程中&#xff0c;统一标…

力扣题目解析--删除链表的倒数第n个节点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…

web实操5——http数据详解,request对象功能

http请求数据 现在我们浏览器f12的那些是浏览器给http格式数据整理之后便于我们阅读的。 原始的http格式信息&#xff1a; 就是按照一定格式和符号的字符串&#xff1a; 请求行&#xff1a;格式如下图 请求头&#xff1a;一个个key&#xff0c;value数据&#xff0c;用,分割…

大语言模型LLMs在医学领域的最新进展总结

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 相比其他学科&#xff0c;医学AI&#xff0c;是发表学术成果最多的领域。 医学数据的多样性和复杂性&#xff08;包括文本、图像、基因组数据等&#xff09;&#xff0c;使得…

React的概念以及发展前景如何?

React是一个由Facebook开发的用于构建用户界面的的开源JavaScript库&#xff0c;它主要用于构建大型、动态的Web应用程序。React的主要特点是使用VirtualDOM&#xff08;虚拟DOM&#xff09;来优化性能&#xff0c;并使用声明式的编程方式来编写UI。 React的主要概念包括&#…

计算机课程管理:Spring Boot与工程认证的协同

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【Linux系列】命令行中的文本处理:从中划线到下划线与大写转换

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

不一样的CSS(一)

目录 前言&#xff1a; 一、规则图形 1.介绍&#xff1a; 2.正方形与长方形&#xff08;实心与空心&#xff09; 2.1正方形&#xff1a; 2.2长方形 3.圆形与椭圆形&#xff08;空心与实心&#xff09; 3.1圆形与椭圆形 4.不同方向的三角形 4.1原理 4.2边框属性 5.四…

HPM6750EVK2开发板程序烧录测试

对于HPM6750EVK2开发板&#xff0c;官方板子上没有板载调试器&#xff0c;从淘宝上购买了一个&#xff0c;据说配套的调试器&#xff0c;进行测试&#xff0c;仅此进行记录。 开发板HPM6750EVK2 openocd调试器图片 openocd调试器&#xff0c;淘宝链接 http://e.tb.cn/h.TZH7b…