任务
每个 Case 在四个生产层级上各包含十个机器 ID。系统从一个苹果开始,持续运行 500 回合。
每回合 Policy 至多强化一台负担得起的机器,或选择等待。随后生产按层级顺序执行,因此投资时机和跨层复合增长决定最终苹果数。
Policy 接口
变化中的状态完全公开。容量和初始成本只出现一次,可由同一 Episode 内的 Policy 记忆保留。
| Observation 字段 | 含义 |
|---|---|
turn / turns_remaining | 当前时间状态 |
apples | 当前可用苹果数 |
machines | 4 × 10 的机器数量 |
powers | 4 × 10 的当前生产能力 |
initial | 容量与初始成本;仅第一次 Observation |
选择一次机器强化或等待。所选层级和机器 ID 必须在范围内且当前可支付。
| Action | 含义 |
|---|---|
{"upgrade": [level, machine_id]} | 在生产前强化一台机器 |
None | 等待一个回合 |
评估
| 量 | 定义 |
|---|---|
| Episode 得分 | round(100,000 × log2(最终苹果数)) |
| Benchmark 得分 | 所有 Episode 得分的算术平均值 |
| Policy failure | 计为 0 |
Feedback
Feedback 将主要得分与最终生产规模、强化次数、完成情况和有界 transition 覆盖关联起来。
| 字段 | 含义 |
|---|---|
mean_log2_score | 主要 Benchmark 得分 |
mean_final_apples | 最终苹果数平均值 |
mean_total_upgrades | 强化次数平均值 |
completed / policy_failures | Episode 结果计数 |
trace.jsonl | 包含公开生产状态与所选强化操作的有界回合序列。 |
使用 distribution
从仓库根目录构建这个可独立安装的叶子 project:
uv sync --project environments/atcoder/ahc058/apple_incremental_game --extra dev
uv build environments/atcoder/ahc058/apple_incremental_game该 package 导出:
from apple_incremental_game import AppleIncrementalGameBenchmark, baseline_program
benchmark = AppleIncrementalGameBenchmark()
program = baseline_program()