Перевернутый маятник Укрепление

Я учусь усиленному обучению, и в качестве практики я пытаюсь стабилизировать перевернутый маятник (тренажерный зал: 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

0 ответов

Другие вопросы по тегам