是的,这完全没有问题。您的环境对象( or 的子类PyEnvironment
)TFEnvironment
可以在其中做任何您想做的事情。该observation_spec
要求仅与您在step
andreset
方法中输出的 TimeStep 相关(更准确地说是在您的_step
and_reset
抽象方法的实现中)。
但是,您的环境可以完全自由地拥有您可能需要的任何其他属性(例如控制风力发电的参数)和您喜欢的任何数量的其他方法(例如在此时间步根据 生成风力的方法self._wind_hyper_params
)。您的代码的快速示意图如下所示:
class MyCartPole(PyEnvironment):
def __init__(self, ..., wind_HP):
... # self._observation_spec and _action_spec can be left unchanged
self._wind_hyper_params = wind_HP
self._wind_velocity = 0
self._state = ...
def _update_wind_velocity(self):
self._wind_velocity = ...
def factor_in_wind(self):
self.state = ... #update according to wind
def _step(self, action):
... # self._state update computations
self._update_wind_velocity
self.factor_in_wind()
observations = self._state_to_observations()
...