0

我是 python 或任何编程语言的新手。几个月来,我一直致力于稳定倒立摆。我已经让一切正常,但努力获得正确的奖励功能。到目前为止,经过研究和试验并失败后,我能想到的最好的就是

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

但是我没有达到稳定,这已经theta=0足够长了。

有人知道理想奖励函数背后的逻辑吗?
谢谢你。

4

2 回答 2

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)
于 2018-08-04T08:52:41.083 回答
0

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

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

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

于 2018-08-02T15:04:34.840 回答