跳转至

VariationalResult

from cascaqit import VariationalResult

VariationalResult

VariationalResult(
    algorithm_run_id: str,
    algorithm_kind: AlgorithmKind,
    hamiltonian: PauliHamiltonian,
    ansatz: AnsatzSpecIR,
    optimizer: OptimizerConfig,
    evaluations: tuple[VariationalObjectiveT, ...],
    best_evaluation_index: int,
    termination: OptimizerTerminationIR,
    gradients: tuple[ObjectiveGradientIR, ...] = (),
    optimization_starts: tuple[
        OptimizationStartIR, ...
    ] = (),
    selected_start_index: int | None = None,
    sampled_selection: SampledSelectionIR | None = None,
    final_result: ResultIR | None = None,
    most_probable_candidate: AlgorithmCandidateIR
    | None = None,
    best_observed_candidate: AlgorithmCandidateIR
    | None = None,
    baseline: ClassicalBaselineIR | None = None,
    cardinality_subspace: CardinalitySubspaceEvidenceIR
    | None = None,
    problem_id: str | None = None,
    problem_hash: str | None = None,
    optimality_claim: Literal[
        "not_claimed"
    ] = "not_claimed",
    metadata: Mapping[str, Any] = dict(),
    schema_version: str = ALGORITHM_SCHEMA_VERSION,
)

VQE 或 QAOA 的完整工作流结果,关联哈密顿量、ansatz、优化配置、目标求值、梯度、多初值记录、确认采样与最终后端结果。通常由算法 run() 返回,直接构造主要用于恢复或高级集成;构造器会核对引用、来源、选择结果和记录一致性。

evaluations 保存优化历史。SPSA 使用重复估计时,best_evaluation_index 指向按合并目标选中的来源记录;其他路径按最低观测能量选择。若使用独立候选确认,最终选点可能不同,应读取 selected_evaluation;它返回对应的优化历史记录,确认后的汇总统计在 sampled_selection 中。termination 与各 optimization_starts[i].termination 说明停止原因,不能仅凭 success 判断得到全局最优。

final_result 是可选 ResultIR,保存最终计算基采样。most_probable_candidate 是出现最多的候选,best_observed_candidate 是按问题目标评估的最佳已见候选,二者含义不同。一般 Pauli 哈密顿量可能没有经典问题候选或 baseline。cardinality_subspace 保存适用的固定基数子空间记录,problem_id/hash 保存问题来源;optimality_claim 固定为 not_claimed。

阅读成本时合计优化、确认、最终采样与独立诊断各阶段,不要用 evaluations 数量代替后端调用数或总 shots。

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 VariationalResult

assert result.best_evaluation.energy == min(item.energy for item in result.evaluations)
assert result.selected_evaluation is result.best_evaluation
assert sum(result.final_result.counts.values()) == 16
restored = VariationalResult.from_json(result.to_json())
assert restored.stable_hash() == result.stable_hash()
assert restored.optimality_claim == "not_claimed"

best_evaluation

best_evaluation: VariationalObjectiveT

返回 evaluations[best_evaluation_index]。重复估计的 SPSA 按各初值的合并目标选择,因此该来源记录不一定是单次采样能量最低的一项;应同时查看各初值的 best_objective 与合并估计。其他路径选择最低观测能量,两者都不是已知真实最小值。

selected_evaluation

selected_evaluation: VariationalObjectiveT

未做候选确认时等于 best_evaluation;否则根据 sampled_selection.selected_source_evaluation_index 返回被确认选中的原始求值记录。独立确认统计并不会覆盖这个原始记录。

gradient_plan

gradient_plan: ParameterShiftPlanIR | None

有显式梯度记录时返回第一项的共享 ParameterShiftPlanIR,否则返回 None。SPSA 的扰动记录保存在各初值的 spsa_iterations,不通过此属性返回。

diagnose_stability

diagnose_stability(
    config: VQEStabilityConfig | None = None,
) -> VQEStabilityDiagnosticResult

从保存的记录生成 VQEStabilityDiagnosticResult,不重跑优化。config=None 使用默认阈值。当前只支持具有 optimization_starts 的原生 SPSA VQE;QAOA、Adam 或其他优化器会被拒绝。

from_dict

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

从字典还原 VariationalResult。还原精确或采样求值、梯度、初值、确认和最终 ResultIR,再重新检查关联与派生结果。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。

from_json

from_json(text: str) -> VariationalResult[Any]

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

to_dict

to_dict() -> dict[str, Any]

返回完整记录的 JSON 兼容字典,嵌套对象也会序列化。它保存已有数据,不重新执行实验。

to_json

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

返回完整记录的 JSON 字符串;indent 可设置缩进,不写文件。

stable_hash

stable_hash() -> str

返回完整记录规范 JSON 的 SHA-256 摘要,用于内容比较与来源引用。它不证明实验结论正确,也不等于物理等价性判断。