Ark-Pets终极指南:如何让明日方舟干员成为你的桌面伙伴
2026/5/2 14:33:28
python
# 你的混合动作空间 move_action_probs -> Categorical distribution (4个离散动作) turn_action_probs -> Categorical distribution (2个离散动作) action_params -> Continuous values (步长和角度)
| 特性 | DQN | PPO |
|---|---|---|
| 策略类型 | 确定性/Q值表 | 概率策略 |
| 探索机制 | ε-greedy | 策略采样 |
| 动作选择 | argmax Q(s,a) | 概率采样 |
| 连续扩展 | 困难 | 容易 |
python
# DQN的ε-greedy探索 if random.random() < epsilon: action = random.choice(actions) # 纯随机 else: action = argmax(Q(s, a)) # 贪心 # PPO的内在探索 move_dist = Categorical(move_action_probs) move_action = move_dist.sample() # 按概率采样,自然探索
python
# 如果用DQN,步长和角度需要离散化 step_sizes = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0] # 有限选择 turn_angles = [10, 20, 30, 40] # 有限选择 # 这样会大大增加动作空间维度且精度受限
你选择PPO是合理的,因为:
✅混合动作空间: 天然支持离散动作+连续参数
✅高效探索: 概率策略比ε-greedy更智能
✅端到端训练: 不需要分离的网络结构
✅策略稳定性: PPO的截断机制防止策略变化过大
如果只做纯离散动作选择,DQN可能是选项之一,但你的设计需要连续参数调节,PPO是更合适的选择。