自定义OpenAI Gym环境遇AttributeError:缺失action_space/observation_space属性求助
解决OpenAI Gym自定义环境中action_space/observation_space属性缺失问题
问题根源
你的process_simulation类中,构造方法被错误定义为_init_(单下划线),但Python规定类的构造方法必须是双下划线包裹的__init__。单下划线命名的方法不会在实例化时自动执行,导致构造方法内的action_space和observation_space从未被初始化,因此实例化后访问这两个属性会触发AttributeError。
修复步骤
将类中的构造方法名从_init_改为__init__,修改后的核心代码片段如下:
class process_simulation(Env): # 修正构造方法名:双下划线包裹 def __init__(self): self.simulation_duration = 60 self.time_step = 1 self.next_time_stop = 0 # ... 其余原有代码保持不变 ... self.observation_space = Box(low=np.array([0]), high=np.array([100])) self.action_space = Discrete(3)
额外注意事项
- Gym环境核心方法缺失:OpenAI Gym自定义环境必须实现
reset()、step()两个核心方法,否则后续PPO训练时会报错。你当前的代码中没有这两个方法,需要补充实现:reset():初始化环境状态,返回初始观测值step(action):执行动作,返回(观测值, 奖励, 是否终止, 额外信息)四元组
- 未定义对象问题:代码中
self.raw_material_of_product_a等队列、timeout方法未被初始化或实现,运行时会触发新的错误,需要补充相关定义 - 属性一致性:你定义了
self.rl_agent_actions = [0,1,2,3](4个动作),但action_space = Discrete(3)(3个动作),两者数量不一致,需要统一
内容的提问来源于stack exchange,提问作者Resalat Bin Afsar
相关产品推荐
相关产品推荐

