冰壶控制问题:Sarsa(λ)算法求解
冰壶控制问题:Sarsa(λ)算法求解
本文探讨使用Sarsa(λ)算法解决冰壶控制问题。我们将问题定义为episodic MDPs问题,并详细介绍了算法的步骤。
问题描述
在一个长宽是 100 × 100 的正方形球场内,我们要控制一个半径为1,质量为1的冰壶移动。冰壶与球场边界碰撞时,速度会乘上回弹系数 0.9,移动方向和边界呈反射关系。我们通过施加两个力来控制冰壶的移动:在x轴的正或反方向施加5单位的力;在y轴的正或反方向施加5单位的力,一共会有4种不同的控制动作。动作可以每 1/10 秒变换一次,但仿真冰壶运动动力学时,仿真时间间隔是 1/100 秒。除了施加的控制动作,冰壶还会受到空气阻力,大小等于 0.005 × speed2。假设冰壶和地面没有摩擦力。
在每个决策时刻 (1/10 秒),环境反馈的奖励等于 −d,其中 d 是冰壶和任意给定目标点之间的距离。为了保证学到的策略能够控制冰壶从任意初始位置上移动到任意目标点,每隔 30 秒就把冰壶状态重置到球场内的一个随机点上,同时x轴和y轴的速度也随机重置在 [-10, 10] 范围内。与此同时,目标点也被随机重置。
问题定义
我们将每隔 30 秒当成一次轨迹,把问题定义成 episodic MDPs 问题,episodic length = 30/0.1 = 300 steps. γ = 1 或 γ = 0.9。
Sarsa(λ) 算法求解步骤
-
定义状态空间和动作空间
- 状态空间包括冰壶的位置和速度,以及目标点的位置。
- 动作空间包括四种控制动作,即在x轴正反方向施加5单位的力,在y轴正反方向施加5单位的力。
-
定义奖励函数
- 每个决策时刻,奖励等于冰壶和目标点之间的距离的负值。当冰壶到达目标点时,奖励为0。
-
初始化Q表和 Eligibility Trace
- 根据状态空间和动作空间的定义,初始化Q表和 Eligibility Trace。
-
开始一个轨迹
- 在每个轨迹开始时,重置冰壶状态和目标点位置,并将 Eligibility Trace 重置为0。
-
选择动作
- 根据当前状态和Q表,使用epsilon-greedy策略选择动作。
-
执行动作并获得奖励
- 执行选择的动作,获得奖励,并观察新的状态。
-
更新 Eligibility Trace
- 根据当前状态和动作,更新 Eligibility Trace。
-
更新 Q表
- 根据 Eligibility Trace 和获得的奖励,更新Q表。
-
更新状态和计算回报
- 将新状态设为当前状态,并计算回报。
-
判断是否结束轨迹
- 如果轨迹长度达到300步或冰壶到达目标点,结束轨迹。
-
更新 Eligibility Trace 和 Q表
- 在轨迹结束时,更新 Eligibility Trace 和 Q表。
-
重复进行轨迹
- 重复进行多次轨迹,直到收敛或达到预定的迭代次数。
-
输出最优策略
- 根据训练好的Q表,输出最优策略。
总结
通过使用 Sarsa(λ) 算法,我们可以训练出一个能够控制冰壶从任意初始位置移动到任意目标点的策略。该策略可以用于解决现实中的冰壶比赛,也可以作为学习其他控制问题的基础。
原文地址: https://www.cveoy.top/t/topic/mZVE 著作权归作者所有。请勿转载和采集!