2023 mindspore量子计算黑客马拉松初赛——量子组合优化赛道代码

环境配置

conda create -n env_name python=3.9
pip install mindspore==1.10.1 mindquantum networkx

缺少包qupack,未公开,只能在华为云平台上使用。

utils.py

read_graph(filename)

返回图g,以及QUBO问题对应的矩阵

  • g是nx中的图格式,G是csr格式的稀疏矩阵
Gij={12if xixj0if xixj

calc_subqubo(sub_index, x, J, h=None,C=0.0 )

sub_index是QAOA算法的15量子比特。 fix_index是不在QAOA算法的15量子比特的所有其他比特。 h_sub是一个有sub_index的解向量,目的是使得在仅修改15个节点的位置的情况下,记录该15个节点分到第二组比分到第一组的cut的变化,在哈密顿量中作为Z门的参数,参与QAOA算法优化,使得该哈密顿量为全局最优解。

check_degenerate(J_dict, h)

检查 Qbuild_ham(J_dict,h)UBO 问题是否存在退化情况,并对节点偏置进行修正。

build_ham(J_dict,h)

计算哈密顿量

QAOAsolver(J, h, C, depth = 2, tol=1e-4,info=True)

该函数使用 QAOA 方法求解 QUBO 问题的最优解,通过优化参数使得目标哈密顿量的期望值最小化,从而得到问题的解。

solve_QAOA(J_sub,h_sub,C_sub,sub_index,x,depth=2,tol=1e-4)

该函数通过调用 QAOAsolver 函数对子问题进行 QAOA 求解,利用优化得到的解向量更新原解向量,从而逐步求解整个问题。

calc_qubo_x(J,x,h=None,C=0)

计算QUBO问题的能量值,用于评估解的优劣程度

calc_cut_x(G, x)

计算解向量对应图的割大小

init_solution(n)

生成一个随机解向量作为初始解,作为算法起点。

solve_max_cut.py

  1. 随机初始化解向量(节点的分配方案)
  2. 利用QupackQAOA求解子问题,将解向量中的其中15个影响力最大的结点进行更新
  3. 更新后重新循环4次(循环次数由题目运行时间决定)

关键因素

  1. 一次QAOA的时间大概在1.25s,一张图需要跑20次结果。
    • 如果分数一样依据总运行时间进行排名
    • 程序总运行时间在1h内。(需调用qupack中的QAOA模拟器进行子问题求解) image.png|525
  2. 选取子问题求解的方式:在样例代码中,通过计算改变某节点分组后cut的delta值度量影响力,
  3. 如何在QAOA算法中修改Hp

解决方案:

给出较为优秀的初始解+更新影响力较大的15个点

修改

  1. 将影响力由一个点修改后的能量变化改为两个点的。——测试后变化不大
  2. 选取15个点,使得选取的每个点与未选取的每个点的边的连线最少
  3. 增加电路循环p——测试后影响不大
  4. 固定套路选择初始解——未找到合适的解法

想法

  1. 示例代码:依次翻转80个节点中其中一个节点的解,并记录翻转后cut的变化,选出15个cut增加最多的点进行QAOA算法优化解。一共做5轮。
    • 350分
    • 改为挑选图中度比较高的节点 - [x] 初步优化思路:按照1的方法挑选15个节点使用QAOA算法,不同的是挑选过的节点不能再被挑选,直到所有节点被挑选完毕。
    • 360分
    • 364分——随机更多次(10000)解,选取cut最大的作为初始解 - [ ] 将80个节点每15个进行分组,使得组与组之间的连线最少。分别在每个组内使用QAOA算法。
score:54,108,238,406,226,231
size:[40,80,40,80,80,80]=400
[[ 50.  51.  52.  52.  50.  52.  50.  51.  49.  51.  53.  54.  52.  49.
   51.  50.  53.  54.  52.  51.]
 [ 93.  96.  96.  93.  94.  93.  98.  98. 101.  99.  94.  92. 101.  96.
   97.  94.  93. 101.  93.  97.]
 [226. 219. 229. 230. 229. 234. 230. 232. 215. 230. 231. 227. 238. 218.
  227. 219. 210. 214. 231. 223.]
 [370. 357. 337. 376. 373. 380. 371. 367. 363. 363. 364. 353. 368. 374.
  373. 375. 364. 375. 373. 358.]
 [212. 200. 203. 198. 198. 202. 212. 204. 190. 204. 203. 208. 202. 203.
  191. 202. 205. 194. 209. 201.]
 [215. 207. 207. 209. 203. 202. 216. 192. 215. 203. 220. 199. 210. 211.
  217. 211. 203. 208. 205. 211.]]
满分400分

第一题测试

满分400分

score(对graph80-604 cut406) 备注
360.5 一轮遍历更新 +初始化解优化
363.2 两轮遍历更新 +初始化解优化
372.3 一轮遍历更新,一轮影响力更新+初始化解优化
376.5 一轮遍历更新,两轮影响力更新 +初始化解优化
379.45 两轮遍历更新,一轮影响力更新 +初始化解优化
score(对所有图) 备注
374.085 两轮遍历更新,一轮影响力更新
370.7 一轮遍历更新,一轮影响力更新
364 一轮遍历更新
333 随机初始解,不进行QAOA

第二题测试

越大越好

score (对graph80-604 cut406) 荒废 备注
45.5 示例代码
47.4 随机初始解次数增多并挑选
46 一轮遍历更新,一轮影响力更新+传入矩阵由G改为G_min
   
score (对graph40-60 cut54) 备注
24.8 ❓ 取影响力最大的节点+一轮遍历更新,一轮影响力更新
23.8 ❓ 取影响力最小的节点+一轮遍历更新,一轮影响力更新
28.86/27.5 示例代码
28.43 /28.6 ✅ 随机初始解次数增多并挑选
23.9 两轮遍历更新
27.16 /28.9 遍历更新+影响力更新
  • 分子图(可能耗时)
  • 让遍历更新取满

This line appears after every note.

Notes mentioning this note


Here are all the notes in this garden, along with their links, visualized as a graph.

Conda导出python环境加快访问github新闻稿实验1:ros入门实验3:自动驾驶实战实验4:ros2智能移动机器人实验5:ros1移动机器人动态避障(基于强化学习)实验6:轨迹跟踪仿真1最终实验自动驾驶辅助python函数Obsidian发布的免费替代方案Obsidian库解析TestYour first seedClip 串讲Nips'17 attention is all you needSigir'22 cret cross Modal retrieval transformer...Arxiv 2306’unifying large language models and...Arxiv'21 how much can clip benefit vision And...⭐ ⭐ ⭐ ⭐ ⭐ arxiv 2311' llmsurveychinese⭐⭐⭐⭐eccv'22 slip:self Supervision meets language...⭐⭐⭐⭐⭐clip:learning transferable visual models from...⭐⭐⭐⭐⭐icml'22 blip bootstrapping language Image pre...Arxiv'23 challenges and applications of large...Prl'20 retrieving quantum information with active...SIGIR'06 Laplacian Optimal Design for Image...Survey'09active learningTKDE'16Relevance Feedback Algorithms Inspired By...Improving interpretable embeddings for ad Hoc...Access'17...Artif. intell. rev.‘23 a survey on ensemble...Fcs'20 a survey on ensemble learningTpmai'04 asymmetric bagging and random subspace...⭐⭐⭐⭐access'22 a survey of ensemble learning进化集成学习算法综述《黑客与画家》 为什么书呆子不受欢迎《黑客与画家》《黑客与画家》——黑客与画家黑客伦理Avs检索流程Avs项目管理Avs speaker proposalAvs paper思路整理Presentation 思路整理Stable Diffusion检索流程2023avs交互使用flask快速构建浏览器实现图片交互Trecvid avs 个人感受2022交互情况统计2024avs交互情况统计Llm api测试Agi 比赛Lean(vs code)Agic TrickLlm相关论文Rtx 4090 部署大模型 20240306构建样题数据集调查开源大模型的数学能力想法计划231128调研Github下载Python调用javaVbs2024比赛复盘复现系统talkseeDiffusion扩散模型调研2023 mindspore量子计算黑客马拉松全国大赛热身题2023 mindspore量子计算黑客马拉松初赛——量子组合优化赛道代码集成进化算法Python使用Vscode使用Github问题Linux华为手机安装google框架工具推荐科研问题笔记本电脑视频生成调研20241002更换内存条(16g换到32g)24考研总结Reflection 大学四年的回顾及年终总结《周处除三害》观后感《奥本海默》观后感李沐讲座考研计划牛奶2023 mindspore量子计算黑客马拉松初赛——量子组合优化赛道排序融合动手学习深度学习算法笔记论文阅读模板2023 07 062023 08 30算法知识生活Paper ReadingProjects