QCloudNoiseModel
QCloudNoiseModel 表示用于云端量子模拟的噪声模型。它封装了噪声类型及其关联的单量子比特门和双量子比特门参数。
签名
python
QCloudNoiseModel()
QCloudNoiseModel(NOISE_MODEL, list[float], list[float])参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| model | NOISE_MODEL | 必填 | 噪声模型类型 |
| single_p | list[float] | 必填 | 单量子比特门噪声参数 |
| double_p | list[float] | 必填 | 双量子比特门噪声参数 |
默认构造函数创建一个禁用的噪声模型(不施加噪声)。
NOTE
仅接受位置参数
三参数构造函数仅接受位置参数(positional-only),不支持关键字参数。 参数必须按顺序传递,不能使用参数名称:
python
# 正确:仅使用位置参数
QCloudNoiseModel(NOISE_MODEL.DEPOLARIZING_KRAUS_OPERATOR, [0.001], [0.01])
# 错误 -- 会抛出 TypeError:
QCloudNoiseModel(model=NOISE_MODEL.DEPOLARIZING_KRAUS_OPERATOR, single_p=[0.001], double_p=[0.01])参数指南
每种噪声模型类型的推荐参数个数:
| 模型 | single_p 长度 | double_p 长度 |
|---|---|---|
DECOHERENCE_KRAUS_OPERATOR | 3 个 | 3 个 |
| 其他所有模型 | 1 个 | 1 个 |
对于 DECOHERENCE_KRAUS_OPERATOR,三个参数通常分别表示 T1 弛豫时间、T2 退相干时间和门时间。客户端在构造时不会强制校验; 服务器可能会拒绝无效的配置。
方法
get_noise_model
python
get_noise_model() -> str返回噪声模型类型的字符串表示。
返回值: 噪声模型名称字符串。
get_single_params
python
get_single_params() -> list[float]返回单量子比特门噪声参数。
返回值: 单量子比特门的浮点数噪声参数列表。
set_single_params
python
set_single_params(single: list[float]) -> None设置单量子比特门噪声参数。
| 参数 | 类型 | 描述 |
|---|---|---|
| single | list[float] | 单量子比特噪声参数 |
get_double_params
python
get_double_params() -> list[float]返回双量子比特门噪声参数。
返回值: 双量子比特门的浮点数噪声参数列表。
set_double_params
python
set_double_params(double_p: list[float]) -> None设置双量子比特门噪声参数。
| 参数 | 类型 | 描述 |
|---|---|---|
| double_p | list[float] | 双量子比特噪声参数 |
is_enabled
python
is_enabled() -> bool检查噪声模型是否已启用(即单量子比特和双量子比特参数列表均非空)。
返回值: 如果两个参数列表均非空则返回 True,否则返回 False。
print
python
print() -> None将噪声模型类型及其参数打印到标准输出。
运算符
| 运算符 | 描述 |
|---|---|
== | 比较两个 QCloudNoiseModel 对象是否相等 |
!= | 比较两个 QCloudNoiseModel 对象是否不相等 |
示例
python
from pyqpanda3.qcloud import QCloudNoiseModel, NOISE_MODEL, QCloudService
from pyqpanda3.core import QProg, QCircuit, H, CNOT, measure
# Create a default (disabled) noise model
no_noise = QCloudNoiseModel()
print("Enabled:", no_noise.is_enabled()) # False
# Create a depolarizing noise model (positional args only)
noise = QCloudNoiseModel(
NOISE_MODEL.DEPOLARIZING_KRAUS_OPERATOR,
[0.001], # Single-qubit depolarizing probability
[0.01] # Two-qubit depolarizing probability
)
print("Enabled:", noise.is_enabled()) # True
print("Model:", noise.get_noise_model()) # DEPOLARIZING_KRAUS_OPERATOR
# Use the noise model with a backend
# 注意:QCloudNoiseModel 目前仅支持 full_amplitude 模拟器后端。
# 真实芯片后端(如 WK_C180_2)不接受 backend.run() 中的 noise_model 参数。
service = QCloudService(api_key="your_api_key")
backend = service.backend("full_amplitude")
prog = QProg()
circ = QCircuit(2)
circ << H(0) << CNOT(0, 1)
prog << circ << measure([0, 1], [0, 1])
job = backend.run(prog, shots=1000, model=noise)
result = job.result()
print(result.get_probs())
# Modify noise parameters
noise.set_single_params([0.002])
noise.set_double_params([0.02])
noise.print()
# Output:
# Noise Model: DEPOLARIZING_KRAUS_OPERATOR
# Single Qubit Noise Parameters: 0.002
# Double Qubit Noise Parameters: 0.02另见
- NOISE_MODEL -- 可用的噪声模型类型
- QCloudService -- 用于使用噪声模型运行的云服务和后端