如何为倒立摆任务选择奖励功能

时间:2018-07-23 20:43:53

标签: robotics reinforcement-learning q-learning reward-system

我是python或任何编程语言的新手。几个月以来,我一直致力于稳定倒立摆。我已使所有工作正常,但努力获得正确的奖励功能。到目前为止,经过研究和尝试并失败了,我能想到的最好的方法是

R=(x_dot**2)+0.001*(x**2)+0.1*(theta**2)

但是我无法稳定,theta=0足够长的时间。

有人对理想奖励功能背后的逻辑有想法吗?
谢谢。

2 个答案:

答案 0 :(得分:1)

仅对于平衡问题(而不是波动),甚至二进制奖励也足够。像

  • 始终为0,然后在极点下降时为-1。或者,
  • 极点下降时,总是1,然后是0。

使用哪种算法取决于所使用的算法,折扣因子和情节范围。无论如何,这项任务很容易,而且两者都会做好。

对于向上摆动的任务(比平衡更难,因为杆子上下颠倒,您需要通过移动推车使其向上摆动),最好根据状态获得奖励。通常,简单的cos(theta)就可以了。您还可以为角速度和动作添加惩罚,以偏爱缓慢变化的平滑轨迹。 如果购物车超出x坐标的边界,您还可以添加罚款。
包括所有这些术语的费用看起来像这样

reward = cos(theta) - 0.001*theta_d.^2 - 0.0001*action.^2 - 100*out_of_bound(x)

答案 1 :(得分:0)

我也在研究倒立摆。 我发现了我正在尝试的以下奖励功能。

costs = angle_normalise((th)**2 +.1*thdot**2 + .001*(action**2))
# normalize between -pi and pi
reward=-costs

但是在选择动作时仍然存在问题,也许我们可以讨论。