How to set an array of continuous actions. The CarPole-v2 example.

Note

You may find the source code of the CartPole-v2 here.

CartPole-v2 example is a continuation of v1. In this case, your action space will be defined as an array of size 2 (which you can grow to any n size to suit your specific problem). The value of the indices refer to whether the force is applied from left (index 0) or right (index 1) and the intensity of each.

You will have to modify exactly the same pieces of the model as you did for v1, resulting in:

  • A new action space as shown in the code below:

self.action_space = spaces.Box(np.array([0, -1]), np.array([1, 0]), dtype=np.float32)
  • And a new first part of the takeAction(ActionSpace action) function body:

// Perform action
double[] actionArray = action.getActionArray();
cartPole.applyForce(actionArray[1] + actionArray[0]);

// [...]

Warning

The CartPole-v2 example described here is only used for the purpose of showing how an array of actions can be set. Processing 2 actions in the way it is done in this example does not make much sense, as a single continuous variable would do the job.