flow / tutorials / tutorial09_environments.ipynb的“ rl_actions”是什么意思

时间:2019-07-25 08:41:54

标签: sumo flow-project

我在学习教程9时,会混淆rl_actions。 因为在程序上,rl_actions没有初始化和定义。 为什么在_apply_rl_actions函数和compute_reward函数中有一个“ rl_actions”参数? 我还检查了有关apply_acceleration函数的车辆内核代码。 原始的是:

def apply_acceleration(self, veh_ids, acc):
        """See parent class."""
        # to hand the case of a single vehicle
        if type(veh_ids) == str:
            veh_ids = [veh_ids]
            acc = [acc]

        for i, vid in enumerate(veh_ids):
            if acc[i] is not None and vid in self.get_ids():
                this_vel = self.get_speed(vid)
                next_vel = max([this_vel + acc[i] * self.sim_step, 0])
                self.kernel_api.vehicle.slowDown(vid, next_vel, 1e-3)

1 个答案:

答案 0 :(得分:1)

flow/envs/base_env.py方法中查看step,这就是调用apply_rl_actionscompute_reward的地方。所有这三种方法都将要应用到代理的动作rl_actions作为参数。这些动作由RL算法提供。 rl_actions的形状是您环境的action_space方法中提供的形状。

RL算法在每一步都会自动调用您的step方法,并为其提供要应用的操作。 Flow的环境实际上封装在Gym环境中,该环境已提供给RL算法。 RL算法可以与任何Gym环境一起使用,这使得它非常通用,因为所有Gym环境都具有诸如stepreset等方法。要了解有关此工作原理的更多信息,请研究如何训练自定义Gym环境。