我是 python 或任何编程语言的新手。几个月来,我一直致力于稳定倒立摆。我已经让一切正常,但努力获得正确的奖励功能。到目前为止,经过研究和试验并失败后,我能想到的最好的就是
R=(x_dot**2)+0.001*(x**2)+0.1*(theta**2)
但是我没有达到稳定,这已经theta=0
足够长了。
有人知道理想奖励函数背后的逻辑吗?
谢谢你。
我是 python 或任何编程语言的新手。几个月来,我一直致力于稳定倒立摆。我已经让一切正常,但努力获得正确的奖励功能。到目前为止,经过研究和试验并失败后,我能想到的最好的就是
R=(x_dot**2)+0.001*(x**2)+0.1*(theta**2)
但是我没有达到稳定,这已经theta=0
足够长了。
有人知道理想奖励函数背后的逻辑吗?
谢谢你。
对于平衡问题(而不是向上摆动),即使是二元奖励也足够了。就像是
使用哪一个取决于所使用的算法、折扣因子和剧集范围。无论如何,任务很容易,两者都会做他们的工作。
对于摆动任务(比平衡更难,因为杆子开始倒置并且您需要通过移动推车将其摆动起来)最好根据状态获得奖励。通常,简单cos(theta)
的很好。您还可以为角速度和动作添加惩罚,以便更喜欢缓慢变化的平滑轨迹。如果购物车超出x
坐标边界,您还可以添加惩罚。
包括所有这些条款的成本看起来像这样
reward = cos(theta) - 0.001*theta_d.^2 - 0.0001*action.^2 - 100*out_of_bound(x)
我也在研究倒立摆。我找到了我正在尝试的以下奖励功能。
costs = angle_normalise((th)**2 +.1*thdot**2 + .001*(action**2))
# normalize between -pi and pi
reward=-costs
但是在选择动作时仍然存在问题,也许我们可以讨论。