---
title: "Light 与 Heavy"
description: "两个公共预设使用相同接口；区别在于预期规划开销和允许使用的搜索资源。"
eyebrow: "Auto 寻路"
---

## 预设选择 {#comparison}

| 项目 | Light | Heavy |
| --- | --- | --- |
| 定位 | 优先控制规划开销，适合快速迭代 | 允许投入更多搜索工作，适合更重视路径质量的任务 |
| 公共调用方式 | `preset="light"` | `preset="heavy"` |
| 输出 | 完整合法路径及可选报告 | 完整合法路径及可选报告 |
| 执行精度 | 预设本身不选择数据类型或执行后端 | 预设本身不选择数据类型或执行后端 |
| 结果保证 | 启发式结果，不保证全局最优 | 启发式结果，不保证一定优于 Light |

> **路径搜索预设与数值精度**
>
> Light 和 Heavy 是路径搜索预设，不是“低精度”和“高精度”执行模式。数值数据类型和执行后端由执行配置决定；不同路径会改变浮点运算顺序，因此这里不承诺两种预设得到逐位相同的数值结果。

## Python、Rust 与命令行接口 {#interfaces}

```python
from arctn import arctn_path

light_path = arctn_path(
    inputs, output, size_dict, preset="light", seed=3
)
heavy_path = arctn_path(
    inputs, output, size_dict, preset="heavy", seed=3
)
```

```rust
use arctn::{auto_path_preset, AutoPreset};

let result = auto_path_preset(
    &network, AutoPreset::Light, 3, None,
)?;
```

```bash
tnpath network.json --method auto --preset light --seed 3
```

> **稳定接口**
>
> 稳定接口包括预设名称、参数校验、返回路径和公开指标；预设内部的具体搜索步骤不属于接口契约。

## 在自己的网络上比较 {#comparison-protocol}

选择预设时，最可靠的方法是在自己的代表性网络上比较规划墙钟与最终路径指标。Light 与 Heavy 的相对收益会随网络结构、目标函数、线程环境、seed 和时间限制变化。

| 固定条件 | 记录结果 |
| --- | --- |
| 相同网络、输出腿与维度 | 规划是否成功以及返回路径格式 |
| 相同 PlannerObjective 权重 | log10\_flops、log2\_read\_write 与 log2\_max\_size |
| 相同物理核、线程设置和外部负载 | planner API wall 与端到端 wall |
| 明确 seed 集合、成功运行次数与总运行次数 | 每个 seed 的结果，而不只报告最好一次 |

> [!WARNING]
> **经验结果**
>
> “Heavy 更重”描述规划预算和搜索强度，不保证任意单次运行都优于 Light。固定加速比或质量增益需要匹配条件下的实测数据。

## Preset 的兼容边界 {#preset-boundary}

Light 和 Heavy 是公开 preset 名称，不定义固定的候选数量、生成器组合、阶段顺序或内部任务映射。调用代码应依赖函数签名、输入约束、返回类型和已声明语义，而不是内部搜索步骤。
