OptimizerConfig¶
from cascaqit import OptimizerConfig
OptimizerConfig ¶
OptimizerConfig(
method: OptimizerMethod = "COBYLA",
max_iterations: int = 80,
max_evaluations: int | None = None,
max_backend_executions: int | None = None,
starts: int = 1,
initialization: InitializationStrategy = "random",
tolerance: float = 1e-06,
seed: int | None = None,
bounds: tuple[tuple[float, float], ...] = (),
options: Mapping[str, bool | int | float] = dict(),
gradient: GradientConfig | None = None,
spsa: SPSAConfig | None = None,
adam: AdamConfig | None = None,
schema_version: str = ALGORITHM_SCHEMA_VERSION,
)
配置一次变分优化使用的方法、初值策略与预算。传给 VQE.run() 或 QAOA.run() 的 optimizer 参数;构造配置不会求解问题。
| 参数 | 当前规则 |
|---|---|
| method | COBYLA、Nelder-Mead、Powell、L-BFGS-B、SPSA、ADAM,区分大小写 |
| max_iterations | 正整数;COBYLA 将它作为函数求值上限,其他方法按自身迭代规则使用 |
| max_evaluations | 可选正整数目标求值预算;重复估计也消耗求值次数 |
| max_backend_executions | 可选正整数,限制优化过程的后端执行成本;一次目标或梯度求值可能多次调用后端 |
| starts | 正整数多初值次数;每个初值使用配置预算,不能把单个初值预算当作整个实验上限 |
| initialization | random 或 layerwise;layerwise 还需兼容的前一层参数映射 |
| tolerance | 正数,供优化方法使用;不是解与真实基态能量的误差保证 |
| seed | 非负整数或 None,控制优化随机过程;后端采样还有独立种子 |
| bounds | 按算法参数顺序给出有限的 (lower, upper),lower 必须小于 upper;运行时检查维数 |
| options | SciPy 方法附加数值/布尔选项;maxiter、maxfev、maxfun 由专用预算字段管理,不能重复填写 |
L-BFGS-B 和 ADAM 必须提供 cascaqit.algorithms.GradientConfig。SPSA 使用 spsa,ADAM 使用 adam,省略时分别补默认配置;其他方法不接受这些专用配置。SPSA/ADAM 不接受 SciPy options。停止条件要求的最少迭代数不能超过 max_iterations。
优化预算不包括后续候选确认与最终采样的全部成本。查看结果中的实际计数与终止原因;达到预算、局部更新变小和找到基态是不同结论。
from cascaqit import HamiltonianTerm, OptimizerConfig, PauliHamiltonian, PauliZ, VQE
hamiltonian = PauliHamiltonian("z", (HamiltonianTerm("z", 1.0, PauliZ("q0")),),
logical_order=("q0",))
config = OptimizerConfig(method="Nelder-Mead", max_iterations=4,
max_evaluations=8, seed=7)
result = VQE(hamiltonian, layers=1).run(optimizer=config, final_shots=16)
assert 1 <= len(result.evaluations) <= 8
assert sum(result.final_result.counts.values()) == 16
assert OptimizerConfig.from_json(config.to_json()) == config
完整流程见 VQE 实验。
从字典还原 OptimizerConfig。省略字段使用默认值,嵌套配置还原后重新校验。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 OptimizerConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
未启用 Adam 时省略 adam 字段。 返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。