VQEStabilityConfig¶
from cascaqit import VQEStabilityConfig
VQEStabilityConfig ¶
VQEStabilityConfig(
window_size: int = 3,
min_iterations: int = 3,
objective_range_tolerance: float = 0.001,
update_norm_tolerance: float = 0.001,
gradient_norm_tolerance: float = 0.01,
sampled_standard_error_tolerance: float = 0.05,
schema_version: str = VQE_STABILITY_SCHEMA_VERSION,
)
配置原生 SPSA VQE 的事后稳定性诊断,传给 VariationalResult.diagnose_stability()。它读取已经保存的记录,不改变运行中的停止条件,也不增加采样。在线停止规则应使用 SPSAStoppingConfig。
window_size 与 min_iterations 均为正整数,后者不能小于前者;与在线停止配置不同,这里允许 window_size=1。所有容差必须有限且为正。
| 容差 | 检查内容 |
|---|---|
| objective_range_tolerance | 最近 window_size 轮正负目标中点代理值,加上最终中心估计,共 window_size+1 个值的极差 |
| update_norm_tolerance | 末尾窗口最大实际更新范数 |
| gradient_norm_tolerance | 末尾窗口最大估计梯度范数 |
| sampled_standard_error_tolerance | 采样路径下,窗口内正负估计及最终估计的最大合并标准误差;精确路径不加此项 |
迭代不足或所需不确定度缺失时为 insufficient_evidence;证据齐全但有检查失败时为 unstable,全部通过时为 stable。stable 只描述所选窗口与阈值,不证明算法收敛或达到最优。
from cascaqit import HamiltonianTerm, OptimizerConfig, PauliHamiltonian, PauliZ, VQE
vqe = VQE(PauliHamiltonian("z", (HamiltonianTerm("z", 1.0, PauliZ("q0")),),
logical_order=("q0",)))
result = vqe.run(optimizer=OptimizerConfig(method="SPSA", max_iterations=2, seed=7),
initial_parameters=(0.4, 0.2), final_shots=16)
from cascaqit import VQEStabilityConfig
config = VQEStabilityConfig(window_size=3, min_iterations=3)
diagnostic = result.diagnose_stability(config)
assert diagnostic.status == "insufficient_evidence"
assert diagnostic.source_result_hash == result.stable_hash()
assert VQEStabilityConfig.from_json(config.to_json()) == config
从字典还原 VQEStabilityConfig。省略字段使用默认值,并重新检查窗口、最少迭代数和正容差。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 VQEStabilityConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。