我是python或任何编程语言的新手。几个月以来,我一直致力于稳定倒立摆。我已使所有工作正常,但努力获得正确的奖励功能。到目前为止,经过研究和尝试并失败了,我能想到的最好的方法是
R=(x_dot**2)+0.001*(x**2)+0.1*(theta**2)
但是我无法稳定,theta=0
足够长的时间。
有人对理想奖励功能背后的逻辑有想法吗?
谢谢。
答案 0 :(得分:1)
仅对于平衡问题(而不是波动),甚至二进制奖励也足够。像
使用哪种算法取决于所使用的算法,折扣因子和情节范围。无论如何,这项任务很容易,而且两者都会做好。
对于向上摆动的任务(比平衡更难,因为杆子上下颠倒,您需要通过移动推车使其向上摆动),最好根据状态获得奖励。通常,简单的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
但是在选择动作时仍然存在问题,也许我们可以讨论。