跳转至

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

from_dict

from_dict(data: Mapping[str, Any]) -> VQEStabilityConfig

从字典还原 VQEStabilityConfig。省略字段使用默认值,并重新检查窗口、最少迭代数和正容差。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。

from_json

from_json(text: str) -> VQEStabilityConfig

解析 JSON 对象并调用 from_dict(),返回 VQEStabilityConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。

to_dict

to_dict() -> dict[str, Any]

返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。

to_json

to_json(*, indent: int | None = None) -> str

返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。

stable_hash

stable_hash() -> str

返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。