Перевернутый маятник Укрепление
Я учусь усиленному обучению, и в качестве практики я пытаюсь стабилизировать перевернутый маятник (тренажерный зал: Pendulum-v0) в вертикальном положении, используя градиент политики: REINFORCE.
У меня есть несколько вопросов, пожалуйста, помогите мне, я много пробовал, но не мог понять. Ответ на любой вопрос может помочь мне. Заранее спасибо.
1- Почему в коде маятника есть наблюдения: cos(theta), sin(theta) и theta_dot? не только theta, а только theta_dot?
2- Действие, которое я должен отправить в среду (env.step(action)), правильно ли это так (в python):
prob=output.eval(arguments={observations: state})[0][0][0]
# output of the neural network
# Bernoulli dist. either 1 or 0 according to a threshold (rand.)
action = 1 if np.random.uniform() < prob else 0
3. Функция вознаграждения определяется в коде маятника следующим образом, но я не мог понять, почему! не должно ли быть что-то вроде того, если маятник в вертикальном положении (с некоторой терпимостью), поэтому награда высока, иначе ноль?
costs = angle_normalise((th)**2 +.1*thdot**2 + .001*(action**2))
# normalize between -pi and pi
reward=-costs
4- Уравнение движения маятника отличается от того, что известно (как здесь), в коде среды используется следующее уравнение, откуда оно взято?
newthdot = thdot + (-3*g/(2*l) * np.sin(th + np.pi) + 3./(m*l**2)*u) * dt