# TapADN 智能预加载策略验收报告（含随机偏好机器人 + 网络环境）

## 仿真前提
- 模型定位：IAA 场景中 3 类广告位（激励/开屏/插屏）统一参与策略决策。
- 次留默认验收基线：35%
- 随机机器人数量：5000
- 场景进入->展示请求->预加载决策->展示时延为核心链路。
- 每次样本运行前先生成一批“偏好机器人”，再在其上分别运行：纯手动（无 smart）与智能预加载两种模式。
- 预加载触发后在 cooldown 内有效一次，不命中将视作普通 load。
- `Immediate`：请求时已命中可直接播放的占比（值越高越好）
- `Waste`：预加载后在 cooldown 内未被消费即失效的比例（值越低越好）
- 网络环境：Wi-Fi / 4G / 3G / 2G 按机器人偏好加权采样，逐回合独立变化。

## 机器人与网络设置
- 机器人类型：随机采样以下偏好族（reward_heavy、interstitial_focus、splash_driven、balanced、churn_sensitive、network_bound）。
- 每类机器人具有独立的场景进入偏好、请求偏好、fill 成功倍率、加载时延倍率和留存倍率。
- 网络环境以会话粒度采样，低网速会同步影响网络请求率、fill 成功率和加载耗时。

## 参数扫描范围
- Threshold: `0.20~0.90` 步长 0.05
- Cooldown: `30,60,90,120,180,240,300`
- 次留：`20%,25%,30%,35%,40%,50%,60%`

## 基线对照
- 次留 35% 基线（纯手动，无 smart）即时命中率：0.00%
- 次留 35% 基线平均时延：1615 ms（p95 2913）
- 次留 35% 建议起点（当前模型）：`threshold=0.25, cooldown=30s`
  - 对比基线即时命中提升：`38.09%`
  - 对比基线时延变化：`-565 ms`
- 平衡候选（Waste<=12%）：
  - threshold=0.25, cd=60s，Immediate 25.12%，Waste 4.88%

## 最优/最差（次留=35%）
| 排名 | Threshold | Cooldown | 即时命中率 | 平均等待 | P95等待 | 浪费率 | 播放成功率 |
|---|---:|---:|---:|---:|---:|---:|---:|
| 1 | 0.25 | 30 | 38.09% | 1050 | 2787 | 14.03% | 81.35% |
| 2 | 0.20 | 30 | 36.65% | 1073 | 2790 | 13.96% | 81.35% |
| 3 | 0.25 | 60 | 25.12% | 1234 | 2774 | 4.88% | 77.96% |
| 4 | 0.20 | 60 | 24.81% | 1242 | 2830 | 6.75% | 77.45% |
| 5 | 0.30 | 30 | 24.65% | 1285 | 2894 | 7.73% | 77.79% |
| 6 | 0.30 | 60 | 24.56% | 1239 | 2812 | 5.76% | 77.61% |
| 7 | 0.35 | 30 | 23.05% | 1318 | 2895 | 5.44% | 77.58% |
| 8 | 0.50 | 30 | 22.96% | 1320 | 2893 | 4.99% | 77.54% |

### 最差 8 组
| 排名 | Threshold | Cooldown | 即时命中率 | 平均等待 | P95等待 | 浪费率 | 播放成功率 |
|---|---:|---:|---:|---:|---:|---:|---:|
| 1 | 0.90 | 300 | 0.00% | 1629 | 2924 | 0.00% | 70.55% |
| 2 | 0.90 | 240 | 0.00% | 1630 | 2899 | 0.00% | 70.09% |
| 3 | 0.90 | 180 | 0.00% | 1622 | 2907 | 0.00% | 70.60% |
| 4 | 0.90 | 120 | 0.00% | 1633 | 2943 | 0.00% | 70.51% |
| 5 | 0.90 | 90 | 0.00% | 1637 | 2963 | 0.00% | 70.84% |
| 6 | 0.90 | 60 | 0.00% | 1628 | 2863 | 0.00% | 70.72% |
| 7 | 0.90 | 30 | 0.00% | 1627 | 2933 | 0.00% | 69.52% |
| 8 | 0.85 | 300 | 0.00% | 1623 | 2910 | 0.00% | 70.69% |

## 与纯手动模式对比（次留35%）
- 纯手动：Immediate `0.00%`，AvgWait `1615`ms，Waste `0.00%`。
- smart 最优：阈值 `0.25`，cd `30`，Immediate `38.09%`，AvgWait `1050`ms，Waste `14.03%`。
- 增益：`38.09%`。

### 网络分层对比（次留35%）
- WIFI：手动即时 `0.00%` / 等待 `1248ms`；智能（`threshold=0.25, cd=30s`）即时 `40.13%` / 等待 `767ms`；提升 `40.13%`。
- 4G：手动即时 `0.00%` / 等待 `1601ms`；智能（`threshold=0.25, cd=30s`）即时 `39.66%` / 等待 `1003ms`；提升 `39.66%`。
- 3G：手动即时 `0.00%` / 等待 `2165ms`；智能（`threshold=0.20, cd=30s`）即时 `32.64%` / 等待 `1498ms`；提升 `32.64%`。
- 2G：手动即时 `0.00%` / 等待 `3044ms`；智能（`threshold=0.25, cd=30s`）即时 `32.06%` / 等待 `2116ms`；提升 `32.06%`。
## 次留敏感度（35%基线）
- 次留 20%：手动基线时延 1618ms，智能最佳 `threshold=0.20, cd=30s`，最佳 Immediate 38.69%，Waste 13.14%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 25%：手动基线时延 1641ms，智能最佳 `threshold=0.20, cd=30s`，最佳 Immediate 37.52%，Waste 14.16%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 30%：手动基线时延 1629ms，智能最佳 `threshold=0.20, cd=30s`，最佳 Immediate 37.42%，Waste 13.33%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 35%：手动基线时延 1615ms，智能最佳 `threshold=0.25, cd=30s`，最佳 Immediate 38.09%，Waste 14.03%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 40%：手动基线时延 1617ms，智能最佳 `threshold=0.20, cd=30s`，最佳 Immediate 38.05%，Waste 13.64%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 50%：手动基线时延 1618ms，智能最佳 `threshold=0.25, cd=30s`，最佳 Immediate 38.02%，Waste 14.06%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。
- 次留 60%：手动基线时延 1619ms，智能最佳 `threshold=0.25, cd=30s`，最佳 Immediate 38.01%，Waste 14.88%；最差 `threshold=0.90, cd=300s`，Immediate 0.00%，Waste 0.00%。

## 交叉参数观察
- 在同一保留率下，阈值下调能显著提高 `Immediate`，但通常也抬高 `Waste`。
- cooldown 拉长可降低 waste（减少重复预加载/空耗），但可能提高用户等待。
- 在弱网（尤其低分配机器人更多时）场景，建议提高 waste 上限约束后再考虑 lower threshold。

## 图表示例（输出文件）
- `heatmap_immediate_r_0.20.png`
  ![](heatmap_immediate_r_0.20.png)

- `heatmap_immediate_r_0.35.png`
  ![](heatmap_immediate_r_0.35.png)

- `heatmap_immediate_r_0.60.png`
  ![](heatmap_immediate_r_0.60.png)

- `heatmap_preload_success_r_0.20.png`
  ![](heatmap_preload_success_r_0.20.png)

- `heatmap_preload_success_r_0.35.png`
  ![](heatmap_preload_success_r_0.35.png)

- `heatmap_preload_success_r_0.60.png`
  ![](heatmap_preload_success_r_0.60.png)

- `heatmap_wait_ms_r_0.20.png`
  ![](heatmap_wait_ms_r_0.20.png)

- `heatmap_wait_ms_r_0.35.png`
  ![](heatmap_wait_ms_r_0.35.png)

- `heatmap_wait_ms_r_0.60.png`
  ![](heatmap_wait_ms_r_0.60.png)

- `heatmap_waste_ratio_r_0.20.png`
  ![](heatmap_waste_ratio_r_0.20.png)

- `heatmap_waste_ratio_r_0.35.png`
  ![](heatmap_waste_ratio_r_0.35.png)

- `heatmap_waste_ratio_r_0.60.png`
  ![](heatmap_waste_ratio_r_0.60.png)

- `line_immediate_vs_retention.png`
  ![](line_immediate_vs_retention.png)

- `line_mode_immediate_vs_retention.png`
  ![](line_mode_immediate_vs_retention.png)

- `line_mode_wait_vs_retention.png`
  ![](line_mode_wait_vs_retention.png)

- `line_network_immediate_vs_retention.png`
  ![](line_network_immediate_vs_retention.png)

- `line_network_wait_vs_retention.png`
  ![](line_network_wait_vs_retention.png)

- `line_threshold_0.55_retention_0.20.png`
  ![](line_threshold_0.55_retention_0.20.png)

- `line_threshold_0.55_retention_0.25.png`
  ![](line_threshold_0.55_retention_0.25.png)

- `line_threshold_0.55_retention_0.30.png`
  ![](line_threshold_0.55_retention_0.30.png)

- `line_threshold_0.55_retention_0.35.png`
  ![](line_threshold_0.55_retention_0.35.png)

- `line_threshold_0.55_retention_0.40.png`
  ![](line_threshold_0.55_retention_0.40.png)

- `line_threshold_0.55_retention_0.50.png`
  ![](line_threshold_0.55_retention_0.50.png)

- `line_threshold_0.55_retention_0.60.png`
  ![](line_threshold_0.55_retention_0.60.png)

- `line_wait_vs_retention.png`
  ![](line_wait_vs_retention.png)

## 验收结论
- 建议首轮灰度点：`threshold=0.25`, `cooldown=60s`（兼顾即时性与 waste）。
- 次留 35% 下智能策略最佳立即命中来自 `threshold=0.25, cd=30s`，即时率 `38.09%`，Waste `14.03%`。
- 建议将 `smart_preload` 配置作为实验变量：先以纯手动为对照，再按次留分层和网络监控逐步放量。
