# 訓練山地車 [OpenAI Gym](http://gym.openai.com) 的設計使得所有環境都提供相同的 API —— 即相同的方法 `reset`、`step` 和 `render`,以及相同的 **動作空間** 和 **觀察空間** 抽象。因此,應該可以用最少的代碼更改將相同的強化學習算法適配到不同的環境中。 ## 山地車環境 [山地車環境](https://gym.openai.com/envs/MountainCar-v0/) 包含一輛被困在山谷中的車: 目標是通過每一步執行以下動作之一,逃出山谷並捕獲旗幟: | 值 | 意義 | |------|------------------| | 0 | 向左加速 | | 1 | 不加速 | | 2 | 向右加速 | 然而,這個問題的主要難點在於,車子的引擎不夠強大,無法一次性爬上山頂。因此,唯一成功的方法是來回駕駛以積累動量。 觀察空間僅由兩個值組成: | 編號 | 觀察項目 | 最小值 | 最大值 | |------|-----------------|--------|--------| | 0 | 車的位置 | -1.2 | 0.6 | | 1 | 車的速度 | -0.07 | 0.07 | 山地車的獎勵系統相當棘手: * 如果代理到達山頂的旗幟(位置 = 0.5),則獲得 0 的獎勵。 * 如果代理的位置小於 0.5,則獲得 -1 的獎勵。 當車的位置超過 0.5 或劇集長度超過 200 時,劇集終止。 ## 指導 將我們的強化學習算法適配到山地車問題中。從現有的 [notebook.ipynb](notebook.ipynb) 代碼開始,替換新的環境,修改狀態離散化函數,並嘗試以最少的代碼修改使現有算法進行訓練。通過調整超參數來優化結果。 > **注意**: 可能需要調整超參數以使算法收斂。 ## 評分標準 | 標準 | 優秀表現 | 合格表現 | 需要改進 | |----------|------------------------------------------------------------------------|------------------------------------------------------------------------|------------------------------------------------------------------------| | | 成功從 CartPole 示例中適配 Q-Learning 算法,僅進行最少的代碼修改,能夠在 200 步內解決捕獲旗幟的問題。 | 從網絡上採用新的 Q-Learning 算法,但有良好的文檔記錄;或採用現有算法但未達到預期結果。 | 未能成功採用任何算法,但在解決方案上有重大進展(實現了狀態離散化、Q-Table 數據結構等)。 | --- **免責聲明**: 本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。