Shortcuts

Gym-Hybrid

概述

在 gym-hybrid 任务中, 智能体需要在一个正方形框内,从随机出发点启动,通过加速(Accelerate)、转向(Turn)或刹车(Break)等一系列控制操作,最终希望停留在绿色目标区域(一个有目标旗帜的圆)。如下图所示:

../_images/hybrid.gif

安装

安装方法

cd ./DI-engine/dizoo/gym_hybrid/envs/gym-hybrid
pip install -e .

验证安装

方法一: 运行如下命令, 如果能正常显示版本信息,即顺利安装完成。

pip show gym-hybrid

方法二: 运行如下 Python 程序,如果没有报错则证明安装成功。

import gym
import gym_hybrid
env = gym.make('Moving-v0')
obs = env.reset()
print(obs)

环境介绍

动作空间

Gym-hybrid 的动作空间属于离散连续动作混合空间,有3 个离散动作:AccelerateTurnBreak ,其中动作 AccelerateTurn 需要给出对应的 1 维连续参数。

  • Accelerate (Acceleration value) : 表示让智能体以 acceleration value 的大小加速。 Acceleration value 的取值范围是[0,1] 。数值类型为float32

  • Turn (Rotation value) : 表示让智能体朝 rotation value 的方向转身。 Rotation value 的取值范围是[-1,1] 。数值类型为float32

  • Break () : 表示停止。

使用 gym 环境空间定义则可表示为:

from gym import spaces

action_space = spaces.Tuple((spaces.Discrete(3),
                                spaces.Box(low=0, high=1, shape=(1,)),
                                spaces.Box(low=-1, high=1, shape=(1,))))

状态空间

Gym-hybrid 的状态空间是一个有 10 个元素的数组,描述了当前智能体的状态,包含智能体当前的坐标,速度,朝向角度的正余弦值,目标的坐标,距离目标的距离,是否达到目标,当前相对步数。

state = [
            agent.x,
            agent.y,
            agent.speed,
            np.cos(agent.theta),
            np.sin(agent.theta),
            target.x,
            target.y,
            distance,
            0 if distance > target_radius else 1,
            current_step / max_step
        ]

奖励空间

每一步的奖励设置为,智能体上一个 step 执行动作后到目标的距离,减去当前 step 执行动作后距离目标的距离,即dist_t-1 - dist_t 。另外,算法内置了一个惩罚项penalty 来激励智能体更快的 达到目标。当 episode 结束时,如果智能体在目标区域停下来,就会获得额外的 reward,值为 1;如果智能体出界或是超过 episode 最大步数,则不会获得额外奖励。奖励的伪代码实现如下:

reward = last_distance - distance - penalty + (1 if goal else 0)

终止条件

遇到以下任何一种情况,则环境会该认为当前 episode 终止:

  • 智能体成功进入目标区域

  • 智能体出界,触及边缘

  • 达到 episode 的最大上限步数(默认设置为200)

内置环境

内置有两个环境,"Moving-v0""Sliding-v0" 。前者不考虑惯性守恒,而后者考虑(所以更切合实际)。两个环境在状态空间、动作空间、奖励空间上都保持一致。

DI-zoo 可运行代码示例

完整的训练配置文件在 github link 内,对于具体的配置文件,例如 gym_hybrid_ddpg_config.py ,使用如下命令即可运行:

python3 ./DI-engine/dizoo/gym_hybrid/config/gym_hybrid_ddpg_config.py

基准算法性能

  • Moving-v0(10M env step 后停止,平均奖励大于等于 1.8 视为表现较好的智能体)

    • Moving-v0

    ../_images/gym_hybrid_Moving-v0.png

图1:HPPO 和其他混合动作空间算法在 Moving-v0 上的训练曲线图。实线表示各个算法在5个种子上的测试局对应 return 的平均值,阴影部分表示5个种子上的标准差,在每个种子的每个测试点上我们一共评估8局。横坐标为训练时与环境交互的步数。return>=1.5 的轨迹视为一次成功的移动。关于对比算法的详细信息,可以参考 知乎博客