🚀 雪球大戰 ☃️,由Hugging Face打造的ML-Agents多智能體環境
這是一個使用Unity ML-Agents Toolkit構建的多智能體環境,兩個智能體將在1對1的雪球大戰遊戲中展開競爭。你可以通過在線鏈接體驗該遊戲,同時使用它需要你具備一定的ML-Agents技能。
🚀 快速開始
環境設置
- 克隆此項目:
git clone https://huggingface.co/ThomasSimonini/ML-Agents-SnowballFight-1vs1
- 打開Unity Hub並創建一個新的3D項目。
- 在克隆的項目文件夾中,打開
.\ML-Agents-SnowballFight-1vs1\packages
,複製 manifest.json
和 package.lock.json
。
- 將這兩個文件粘貼到
你的Unity項目\Packages
中,這將安裝所需的包。
- 將
SnowballFight-1vs1
Unity包拖放到你的Unity項目中。
觀看訓練好的智能體
- 如果你想觀看訓練好的智能體,打開
Assets\1vs1\Scenes\1vs1_v2_Training
,將 \ML-Agents-SnowballFight-1vs1\saved_model\SnowballFight1vs1-4999988.onnx
放入藍方智能體和紫方智能體模型中。
訓練智能體
- 如果你想再次訓練它,場景為
Assets\1vs1\Scenes\1vs1_v2_Training
。
✨ 主要特性
- 多智能體競爭:兩個智能體在1對1的雪球大戰遊戲中競爭。
- 多樣化的觀察和動作空間:包括射線檢測、向量觀察和離散動作空間。
- 獨特的獎勵機制:根據智能體的表現給予獎勵。
- 無友軍傷害:智能體不會誤傷自己或隊友。
📦 安裝指南
環境設置
- 克隆此項目
git clone https://huggingface.co/ThomasSimonini/ML-Agents-SnowballFight-1vs1
- 打開Unity Hub並創建一個新的3D項目。
- 在克隆的項目文件夾中,打開
.\ML-Agents-SnowballFight-1vs1\packages
,複製 manifest.json
和 package.lock.json
。
- 將這兩個文件粘貼到
你的Unity項目\Packages
中,這將安裝所需的包。
- 將
SnowballFight-1vs1
Unity包拖放到你的Unity項目中。
觀看訓練好的智能體
- 如果你想觀看訓練好的智能體,打開
Assets\1vs1\Scenes\1vs1_v2_Training
,將 \ML-Agents-SnowballFight-1vs1\saved_model\SnowballFight1vs1-4999988.onnx
放入藍方智能體和紫方智能體模型中。
訓練智能體
- 如果你想再次訓練它,場景為
Assets\1vs1\Scenes\1vs1_v2_Training
。
📚 詳細文檔
環境介紹
- 兩個智能體在 1對1的雪球大戰遊戲 中競爭。
- 目標是 擊中對手團隊,同時躲避對手的雪球 ❄️。
觀察空間
-
射線檢測:
- 10條向前的射線,分佈在100度範圍內:檢測對手。
- 10條向前的射線,分佈在100度範圍內:檢測牆壁、掩體和邊界。
- 10條向前的射線,分佈在100度範圍內:檢測雪球。
- 3條向後的射線,分佈在45度範圍內:檢測牆壁和掩體。
-
向量觀察:
- 布爾值
canShoot
(每2秒只能發射一次雪球)。
- 浮點數
currentHealth
:歸一化範圍為 [0, 1]。
- 向量3
垂直速度
- 向量3
水平速度
- 向量3
起始位置
動作空間(離散)
- 向量動作空間:
- 四個分支動作,分別對應向前、向後、側向移動、旋轉和發射雪球。
智能體獎勵函數(依賴)
- 如果團隊 受傷:
- 如果團隊 死亡:
- (1 - 累計時間懲罰):當雪球擊中對手時,累計時間懲罰每固定更新一次減少 (1 / MaxStep),並在每局開始時重置為0。
- (-1) 當雪球擊中我方團隊時。
補充說明
- 沒有友軍傷害,這意味著智能體不能射擊自己,或者在未來的2對2遊戲中不能射擊隊友。
訓練信息
SnowballFight1vs1
訓練了5100000步。
- 最終ELO分數為1766.452。
配置文件
behaviors:
SnowballFight1vs1:
trainer_type: ppo
hyperparameters:
batch_size: 2048
buffer_size: 20480
learning_rate: 0.0003
beta: 0.005
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: false
hidden_units: 512
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 40
checkpoint_interval: 200000
max_steps: 50000000
time_horizon: 1000
summary_freq: 50000
self_play:
save_steps: 50000
team_change: 200000
swap_steps: 2000
window: 10
play_against_latest_model_ratio: 0.5
initial_elo: 1200.0
📄 許可證
本項目採用 Apache-2.0
許可證。
⚠️ 重要提示
如果你想使用它,需要具備一些ML-Agents技能,如果不是這種情況,請 查看文檔。
👉 你可以 在此鏈接在線遊玩。
