Implementation of Pendulum task. More...
Classes | |
| struct | Action |
| Implementation of action of Pendulum. More... | |
| class | State |
| Implementation of state of Pendulum. More... | |
Public Member Functions | |
| Pendulum (const double maxAngularVelocity=8, const double maxTorque=2.0, const double dt=0.05, const double angleThreshold=M_PI/12, const double doneReward=0.0, const size_t maxSteps=0) | |
| Construct a Pendulum instance using the given values. More... | |
| double | AngleNormalize (double theta) const |
| This function calculates the normalized angle for a particular theta. More... | |
| State | InitialSample () |
| Initial theta is randomly generated within [-pi, pi]. More... | |
| bool | IsTerminal (const State &state) const |
| This function checks if the pendulum has reaches a terminal state. More... | |
| size_t | MaxSteps () const |
| Get the maximum number of steps allowed. More... | |
| size_t & | MaxSteps () |
| Set the maximum number of steps allowed. More... | |
| double | Sample (const State &state, const Action &action, State &nextState) |
| Dynamics of Pendulum. More... | |
| double | Sample (const State &state, const Action &action) |
| Dynamics of Pendulum. More... | |
| size_t | StepsPerformed () const |
| Get the number of steps performed. More... | |
Implementation of Pendulum task.
The inverted pendulum swingup problem is a classic problem in the control literature. In this version of the problem, the pendulum starts in a random position, and the goal is to swing it up so it stays upright
Definition at line 30 of file pendulum.hpp.
|
inline |
Construct a Pendulum instance using the given values.
| maxAngularVelocity | Maximum angular velocity. |
| maxTorque | Maximum torque. |
| dt | The differential value. |
| angleThreshold | The region about the upright position where the state is considered terminal. |
| doneReward | The reward recieved by the agent on success. |
| maxSteps | The number of steps after which the episode terminates. If the value is 0, there is no limit. |
Definition at line 102 of file pendulum.hpp.
|
inline |
This function calculates the normalized angle for a particular theta.
| theta | The un-normalized angle. |
Definition at line 205 of file pendulum.hpp.
References M_PI.
Referenced by Pendulum::Sample().
|
inline |
Initial theta is randomly generated within [-pi, pi].
Initial angular velocity is randomly generated within [-1, 1].
Definition at line 191 of file pendulum.hpp.
References Pendulum::State::AngularVelocity(), M_PI, mlpack::math::Random(), and Pendulum::State::Theta().
|
inline |
This function checks if the pendulum has reaches a terminal state.
| state | desired state. |
Definition at line 217 of file pendulum.hpp.
References Log::Info, M_PI, and Pendulum::State::Theta().
Referenced by Pendulum::Sample().
|
inline |
Get the maximum number of steps allowed.
Definition at line 238 of file pendulum.hpp.
|
inline |
Set the maximum number of steps allowed.
Definition at line 240 of file pendulum.hpp.
Dynamics of Pendulum.
Get reward and next state based on current state and current action.
| state | The current state. |
| action | The current action. |
| nextState | The next state. |
Definition at line 126 of file pendulum.hpp.
References Pendulum::Action::action, Pendulum::AngleNormalize(), Pendulum::State::AngularVelocity(), Pendulum::IsTerminal(), M_PI, and Pendulum::State::Theta().
Referenced by Pendulum::Sample().
Dynamics of Pendulum.
Get reward based on current state and current action
| state | The current state. |
| action | The current action. |
Definition at line 179 of file pendulum.hpp.
References Pendulum::Sample().
|
inline |
Get the number of steps performed.
Definition at line 235 of file pendulum.hpp.