# HIC
**Repository Path**: mangrovecoder/hic
## Basic Information
- **Project Name**: HIC
- **Description**: HIQ Ising Challenge
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-10-09
- **Last Updated**: 2025-05-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# HIQ Ising Challenge
## 背景/价值
纵览业界各个量子平台
它山之石,可以攻玉
**痛点**
数据集介绍不多,使用不够友好
没有最优解
算法、求解器与数据的联系不够
**价值**
现在类似的graph/ising/QUCO数据库全部是海外的,
国内本源、玻色、图灵等友商,还没有做类似的模块
吸引更多的人使用MinQuantum,推动启发式算法的落地应用
## 数据集
**可参考的友商**
Gset 业界比较认可的数据集,2003年就提出;提供了71种Gset图,缺少最优解,基本没有维护更新
MQLib 提供3296个案例,开源了37种启发式算法的C++实现求解器代码,评估启发式算法对不同问题的适应性
QPLIB 提供8164个案例,比较崭新,案例种类全面,介绍详尽,有最优解
Pennylane 设计漂亮,提供化学分子、自旋模型等数据,引导用户使用pennylane调用数据
data
| problem | dataset | count | nodes | reference |
| ------- | -------------------- | ----- | ------- | ------------------------------------------------------------ |
| maxcut | Random graph | | 10~1w | networkx |
| | Full-connected graph | | 10~1100 | |
| | Bitpartite graph | | | |
| | GSet | | | |
| | QPlib | | | [url](https://qplib.zib.de/qplib/QPLIB_0032.qplib) |
| | | | | |
| QUBO | GridDiscreteS28 | | | |
| | 黑客松-QAOA | | | [黑客松](https://competition.huaweicloud.com/information/1000042022/html10) |
| | 黑客松-QAIA | | | |
| | bqp | | | [url](https://people.brunel.ac.uk/~mastjjb/jeb/orlib/files/?C=S;O=D) |
格式
数据格式提供两种
一种是hiq自己的格式,无格式/txt
黑客松提供的是ising模型的数据格式
$$H(\sigma)=-\sum \limits_{i j} J_{ij}\sigma_{i}\sigma_{j}-\mu\sum\limits_j h_j\sigma_j$$
一种是业界比较通用的格式
## 结构目录
- data 数据模块,存储包括graph和ising格式的数据集
- src 计算模块,量子启发式算法求解器
- utils 工具模块,包括生成数据,使用数据的代码
## 如何使用
生成数据
```python
# 生成随机图、全连接图
# 可参考 utils/test_generate_data.py 中的样例,设置图的节点、边稀疏或密集,权值,是否保存
from generate_data import Generate
gen = Generate(node=i)
gen.generate_rgraph(type="sparse",weight= 1,save=True)
# 将quco中的mimoset数据集转换成ising格式
# 可参考 data/quco/mimoset/read_mimo.py 中的样例
dataset = []
filelist = ["MLD_data\\0.pickle"]
data = pickle.load(open(filename, "rb"))
dataset.append(
[
data["H"],
data["y"],
data["bits"],
data["num_bits_per_symbol"],
data["SNR"],
]
)
mimo = Mimo(dataset)
mimo.save_ising(ising_generator, name=0)
```
使用数据
```python
# 可参考 utils/test_solver.py 的样例,读取数据集
G = read_maxcut("../data/maxcut/gset/G1")
# G = read_maxcut("../data/maxcut/fgraph/fgraph_200")
# G = read_maxcut("../data/maxcut/rgraph/rgraph_dense_100")
J, H = read_quco("../data/quco/mimoset/mimo_ising_0.json")
```
## 页面
搭建简易的页面
做演示
## 日志
20241008
SB等算法跑通数据
20240930
整理qubo数据
读写数据的模块
20240927
mqlib的数据难以处理,借鉴QPLIB的数据
换数据集,原来的spinclass等是02年的,比较旧 [1](https://github.com/MQLib/MQLib/blob/master/hhdata/BURER2002.rf), [2](https://github.com/MQLib/MQLib/blob/master/hhdata/PALUBECKIS2004bMST1.rf)
20240926
快速出demo
可以放在gitee上
先生成一版的数据
自己生成的数据好弄,比较麻烦的就是提取其他的数据