gym.ActionWrapper使用时的注意点——step函数可以覆盖observation函数

本文说的这个gym.ActionWrapper继承类的问题和gym.ObservationWrapper继承类的问题性质是一样的,具体看:

gym.ObservationWrapper使用时的注意点——reset和step函数可以覆盖observation函数

地址:

https://www.cnblogs.com/devilmaycry812839668/p/16729162.html

 

 

 

==========================================

 

 

代码:

import gym


class Wrapper(gym.ActionWrapper):
    def __init__(self, env):
        super(Wrapper, self).__init__(env)

    # def step(self, action):
    #     print("step execute!!!")
    #     obs, reward, is_done, info = self.env.step(action)
    #     return obs, reward, is_done, info

    def action(self, action):
        print("action execute!!!")
        return action


env=gym.make("CartPole-v0")
env = Wrapper(env)
env.reset()
env.step(0)

运行结果:

 

 

 

 

 

import gym


class Wrapper(gym.ActionWrapper):
    def __init__(self, env):
        super(Wrapper, self).__init__(env)

    def step(self, action):
        print("step execute!!!")
        obs, reward, is_done, info = self.env.step(action)
        return obs, reward, is_done, info

    def action(self, action):
        print("action execute!!!")
        return action


env=gym.make("CartPole-v0")
env = Wrapper(env)
env.reset()
env.step(0)

运行结果:

 

 

 

 

==========================================

 

 

 

具体原理,看下gym.ActionWrapper的代码就很清楚了:

 

 

posted on 2022-09-25 22:24  Angry_Panda  阅读(386)  评论(0)    收藏  举报

导航