class_docstr: This class creates a continous-state maze problem given a map.
class_docstr_tok: ["This","class","creates","a","continous-state","maze","problem","given","a","map","."]
code: def _step(self, action):
      assert self.action_space.contains(action), "%r (%s) invalid" % (
          action,
          type(action),
      )
  
      if np.random.uniform(0.0, 1.0) > self.motion_noise:
          state0 = self.state[0]
          state1 = self.state[1]
          # Motion length is a truncated normal random variable.
          motion_length = np.maximum(
              0.0,
              np.minimum(
                  self.motion_max,
                  np.random.normal(self.motion_mean, self.motion_std),
              ),
          )
          if action == 0:  # north
              state1 = np.minimum(
                  self.room_lengths[1], state1 + motion_length
              )
          elif action == 1:  # east
              state0 = np.minimum(
                  self.room_lengths[0], state0 + motion_length
              )
          elif action == 2:  # south
              state1 = np.maximum(0.0, state1 - motion_length)
          else:  # west
              state0 = np.maximum(0.0, state0 - motion_length)
          self.state[0] = state0
          self.state[1] = state1
  
      done = self._is_goal(self.state)
      reward = self._compute_reward(self.state)
      return self.state, reward, done, {}
  
file_path: CNTK/Examples/ReinforcementLearning/deeprl/env/puddleworld.py
imports: import gym
  import numpy
  from gym import spaces
  from gym.utils import seeding
label_desc: Use image node_id 3 for calling the PuddleWorld obj's underlying member method code with example usage: obj._step(action) and returns: self,  reward,  done,  dict