CartPole
平衡控制與短時間反應。適合測 Think 是否能把角度、角速度、推力與失敗邊界放進同一棵因果樹。
- 目前狀態2/2 solved
- mean return500.0
- planning0.74 ms
GamML 是 Meadow 的 Gym 遊戲實驗線。任務不是機器人或工業設備,而是把同一個「Think 因果樹 → 評估分支 → 蒸餾 Reaction」架構,套到 OpenAI Gym 的代表性控制遊戲上。
Meadow WM 主線處理機器人、工業設備與 OGBench 物理任務;GamML 這條線則用 OpenAI Gym 的遊戲做控制學實驗。差異不是架構不同,而是 DeviceSpec 從機械手臂/設備參數換成遊戲物理參數,GoalSpec 從抓取/放置/校正換成存活、到達、擺起、降落等成功條件。
選 Gym 環境,讀取狀態維度、action space、重力、摩擦、力矩、終止條件。
把遊戲分數改寫成可檢查目標:平衡、到旗幟、擺起、穩定降落。
展開候選動作鏈,用物理與 reward/cost 評估哪些未來可行。
把 Think 選出的鏈、near miss、失敗原因整理成 BC-style Reaction 訓練資料。
部署小模型快速反應;偏離時回到 Think 重新展開與修正。
這一版不是只展示舊模型,而是把每個任務重新用 Think 因果樹跑過一次。成功與限制都保留:CartPole、MountainCar、LunarLander、Pendulum、Acrobot、MiniGrid DoorKey、FlappyBird、MinAtar Breakout、BipedalWalker、CarRacing 與 Atari Pong smoke 都已有可追溯 artifact;Pong 的完整得分優化放下一輪。
平衡控制與短時間反應。適合測 Think 是否能把角度、角速度、推力與失敗邊界放進同一棵因果樹。
不能直接到目標,必須先反向蓄能。代表因果樹需要理解「短期遠離目標,長期更接近成功」。
多連桿、欠驅動、需要擺盪累積角動量。新版 energy causal tree 用 pump / coast / brake_hold primitives 解 recorded seeds。
重力、衝量、障礙預測、低延遲反應。這是目前最直觀的「遊戲感」因果樹成功展示。
球、板、磚塊、反彈與接球位置。比 ALE pixel 更適合現在的物件因果樹。
很像遊戲,也接近機器人。成功版使用 gait-prior causal tree:每步展開步態候選,評估前進、跌倒風險、接觸一致性與能耗。
畫面最像遊戲,包含轉向、油門、煞車與路線選擇。成功版使用 racing-line causal tree,比較外內外、late apex、煞車入彎等候選路線。
推力、姿態、腿部接觸、落點穩定。Think teacher 展開 descent、attitude correction、brake、contact stabilize 候選。
連續 torque、swing-up、brake、穩定直立。適合測物理量連續控制與低延遲 Reaction 蒸餾資料。
鑰匙、門、解鎖、目標順序。測的是因果樹不只做物理,也能做規則記憶與 symbolic/continuous hybrid plan。
這裡放的是這次重新用因果樹跑出的repo artifact。CarRacing 最新版已加入第一圈偵察記憶、第二圈衝刺、真實 TRACK_WIDTH 賽道寬度與高速出軌投影;保留對照版用來比較沒有 per-corner 背賽道時為什麼主要仍走 centerline。
Gym state snapshot 展開 32 條短未來,seed 11 達 500/500。
LIDAR observation 展開 flap/noop chains,seed 0 存活 260 steps。
抽 ball / paddle / bricks,展開 243 條候選鏈,score 16。
第一圈安全偵察寫入彎道記憶,第二圈用外內外 racing line 衝刺;TRACK_WIDTH=6.6667,sprint 圈 955 steps 完賽。
固定保留的對照 artifact:有速度風險與 safe-fast 記憶,但還沒把賽道拆成 entry / apex / exit,所以主要仍選 centerline。
底部 causal future map 顯示步態候選、預測進度、跌倒風險與深紅色已執行進度鏈。
藍線是 top candidate futures,紅線是 selected future,深紅線是 collapse 後的實際結果鏈。
推力、姿態、落點與 contact stabilize 候選;seed 20260429 return 235.5,安全降落。
從 theta=pi 倒掛開始,先 swing_up 注入能量,再 brake,約 step 66 進入直立穩定區,最後停在上方。
pump_forward / pump_backward / coast / brake_hold;seed 41 129 steps 解出。
記憶 key / door / goal,選 go_to_key、pickup、unlock、go_to_goal;seed 0 11 steps 完成。
RGB 抽 ball / paddle,用 ALE clone/restore 展開 up/down/noop 候選;新版放大遊戲畫面並把資料移到右側。加入 intercept memory prior 後,300 steps score 0,不宣稱 solved。
前一版 CarRacing / BipedalWalker 是失敗診斷。這裡改放成功 causal-tree teacher:CarRacing 展開 racing-line 候選;BipedalWalker 展開 gait 候選並用成功步態 prior 做安全基線。這兩個不是 pixel-only student,而是先把可行老師跑通。
recon 圈 986 steps 完賽並記住 238 個彎道 index;sprint 圈 return 904.5,955 steps,lap_finished=true,291/291 tiles。
保留作為對照:已有速度風險和 safe-fast 記憶,但還沒有 per-corner 背賽道,因此主要仍選 centerline。
return 310.8,Gym score solved,完整 1600 steps。
return 307.6,Gym score solved,完整 1600 steps。
return 310.3,Gym score solved,完整 1600 steps。
return 312.7,Gym score solved,完整 1600 steps。
你指出得對:只換 seed 不是不同關卡,只是不同初始位置。這裡保留 parameter variants 的原始比較;有完整藍/紅/深紅因果線圖的是下一段 terrain variants。
default force=0.001, gravity=0.0025, goal=0.50;成功,87 steps。
goal_position=0.55,比原版更遠;成功,89 steps。
force=0.00082,模擬推力較弱;成功,160 steps。
gravity=0.0029,爬坡更難;成功,154 steps。
force=0.00088, gravity=0.0028;成功,149 steps。
這一組不是 Gymnasium MountainCar-v0,也不是只改 force / gravity。它是 Meadow 自訂物理 backend:每個關卡都有不同 terrain height curve 與 grade dynamics,所以畫面曲線和實際受力都一起改變。
參考正弦坡形;成功,178 steps。
目標前有兩個谷地;成功,81 steps。
右側終段爬坡更陡;成功,114 steps。
主坡上疊加小波浪障礙;成功,76 steps。
更長、低頻率的坡形;成功,105 steps。
這張表只採用這次新產生的 causal-tree summary。它不是宣稱 GamML 已解完整 Gym,而是誠實呈現哪些任務已可由 Think 老師完成、哪些仍需要更強 primitive 或更長 horizon。
| 任務 | Env | Think Evidence | 影片 | 目前結論 | Artifact |
|---|---|---|---|---|---|
| CartPole | CartPole-v1 | 2 episodes; mean return 500.0; candidate_count 32; horizon 5; planning 0.739 ms | 2 MP4 | causal tree solved | gamml_gym_v1/classic_causal_tree/summary.json |
| FlappyBird | FlappyBird-v0 | 2 episodes; success 2/2; survival 260 steps; score 6; candidate_count 128; planning 3.44 ms | 2 MP4 + 2 GIF | game-like success | gamml_gym_v1/flappybird/summary.json |
| MinAtar Breakout | MinAtar/Breakout-raw-v0 | 2 episodes; mean score 16.0; survival 180 steps; candidate_count 243; planning 151.65 ms | 2 MP4 + 2 GIF | object causal tree works | gamml_gym_v1/minatar_breakout/summary.json |
| MountainCar | MountainCar-v0 | base seed eval: 8/8 success; parameter variants: 5/5 success; custom terrain variants: 5/5 success; terrain mean return -110.8; terrain mean steps 110.8; terrain candidate_count 340 | 8 seed MP4 + 5 parameter MP4 + 5 terrain MP4 | energy-phase tree handles parameter and terrain variants | gamml_gym_v1/mountaincar_energy/summary.jsongamml_gym_v1/mountaincar_parameter_variants/summary.jsongamml_gym_v1/mountaincar_terrain_variants/summary.json |
| Acrobot | Acrobot-v1 | energy swing-up causal tree: recorded seeds 2/2 solved; mean return -131.5; mean steps 132.5; primitives pump_forward / pump_backward / coast / brake_hold | 2 MP4 + 2 GIF | solved on recorded seeds by energy causal tree | gamml_gym_v1/acrobot_energy_causal_tree/summary.json |
| LunarLander | LunarLander-v3 | descent/attitude causal tree: 2 recorded landing demos; return >= 200 in 2/2; mean return 233.97; mean planning 0.29 ms; v2 deprecated, v3 fixed in summary | 2 MP4 + 2 GIF | successful landing demos, not 100-episode benchmark | gamml_gym_v1/lunarlander_causal_tree/summary.json |
| Pendulum | Pendulum-v1 | torque causal tree: 3/3 recorded seeds pass -150 threshold; mean return -80.17; forced-down demo starts at theta=pi and reaches upright around step 66; mean planning 1.34 ms; primitives swing_up / brake / stabilize_upright | 4 MP4 + 4 GIF | recorded-seed torque control success | gamml_gym_v1/pendulum_torque_causal_tree/summary.json |
| MiniGrid DoorKey | MiniGrid-DoorKey-5x5-v0 | rule/memory causal tree: 2/2 success; mean return 0.9676; mean steps 9.0; key/door/goal memory with go_to_key / pickup / unlock / go_to_goal | 2 MP4 + 2 GIF | symbolic rule-memory causal tree works | gamml_gym_v1/minigrid_doorkey_causal_tree/summary.json |
| Atari Pong | ALE/Pong-v5 | pixel object causal-tree smoke: 1 episode; 300 steps; score 0.0 after intercept memory prior; candidate_count 27; mean planning 22.47 ms; extracts ball/player paddle/opponent paddle from RGB and ranks noop/up/down chains | 1 MP4 + 1 GIF | honest smoke, not solved | gamml_gym_v1/atari_pong_causal_tree/summary.json |
| BipedalWalker | BipedalWalker-v3 | gait-prior causal tree: 4 episodes; success 4/4; mean return 310.35; mean steps 1600; mean_max_x 87.76; candidates stay_on_one_leg / put_other_down / push_off / recovery | 4 success MP4 | solved by gait-prior causal tree Think teacher | gamml_gym_v1/bipedalwalker_causal_tree_success/summary.json |
| CarRacing | CarRacing-v3 | first-lap memory racing-line causal tree: recon lap 986 steps; sprint lap return 904.5; 955 steps; 291/291 tiles; lap_finished=true; TRACK_WIDTH=6.6667; selected outside-inside-outside 563 times | 1 success MP4 | solved by racing-line causal tree Think teacher | gamml_gym_v1/carracing_per_corner_memory_tree/summary.json |
數字來源:repo artifact。MountainCar 的 seed eval 只是初始條件變化;真正關卡泛化分成 parameter variants 和 terrain variants,目前兩者都是 5/5 成功。LunarLander 是 2-run landing demo,不是 100-episode benchmark。Pendulum / Acrobot / MiniGrid 是 recorded-seed teacher results。BipedalWalker 與 CarRacing 都使用環境狀態,不是 pixel-only student。Atari Pong 已接上 pixel object extraction + ALE clone/restore causal tree,但目前只是 smoke,不宣稱 solved。