Skip to content

QCloudNoiseModel ​

QCloudNoiseModel 表示用于云端量子模拟的噪声模型。它封装了噪声类型及其关联的单量子比特门和双量子比特门参数。

签名 ​

python
QCloudNoiseModel()
QCloudNoiseModel(NOISE_MODEL, list[float], list[float])

参数 ​

参数类型默认值描述
modelNOISE_MODEL必填噪声模型类型
single_plist[float]必填单量子比特门噪声参数
double_plist[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_OPERATOR3 个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

设置单量子比特门噪声参数。

参数类型描述
singlelist[float]单量子比特噪声参数

get_double_params ​

python
get_double_params() -> list[float]

返回双量子比特门噪声参数。

返回值: 双量子比特门的浮点数噪声参数列表。

set_double_params ​

python
set_double_params(double_p: list[float]) -> None

设置双量子比特门噪声参数。

参数类型描述
double_plist[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

另见 ​

Released under the MIT License.