- rlFiniteSetSpec:使用本规范的行动空间由一组离散的可能的行动。组中的每个动作可以表示为一个独特的价值或标识符。例如,如果您的行动空间由一组有限的离散动作,如“前进”,“左转”,或“右转”,你可以使用rlFiniteSetSpec定义的行动空间。
- rlNumericSpec:使用本规范的行为空间是连续的或可以表示为一系列的数值。如果你的行动空间需要指定一个连续的值,如控制机械手臂的速度或位置,您可以使用rlNumericSpec定义的行动空间。
混合数据类型在操作空间
9的观点(30天)
显示旧的评论
接受的答案
Shaik
约19小时前
你好,
之间的选择
rlFiniteSetSpec
和
rlNumericSpec
的行动空间的性质取决于行动你想定义强化学习(RL)环境。
当定义RL的行动空间环境中,您需要选择合适的规范基于行动的特点你想代表。你可以混合
rlFiniteSetSpec
和
rlNumericSpec
对象空间中的行动如果您的环境需要离散和连续操作。
关于你提供的链接,它指的是对观测空间查询,但同样的概念也适用于行动的空间。的
rlFiniteSetSpec
和
rlNumericSpec
对象可以用来定义在RL环境中观察和行动空间,这取决于它们所代表的类型的数据。
总之,考虑你的行为的性质(离散或连续)和使用空间
rlFiniteSetSpec
或
rlNumericSpec
因此定义适当的规范的行动空间RL环境。
2的评论
Shaik
约2小时前
如果你想保持旋转力离散,同时保持美国“x”和“y”连续的,一种可能是修改状态表示。一种方法可能是角度θ表示为一个整数值(例如,在度或弧度),而不是使用罪(θ),因为(θ)。
这里有一个例子如何修改状态表示:
- 定义一个最大和最小角,θ_maxθ_min,分别在角度或弧度,取决于你的偏好。对于这个示例,假设θ可以在-180到180度之间变化。
- 定义旋转角度θ,一个整数值θ_min和θ_max之间。您可以使用MATLAB中的“离散化”函数来获取对应的整数值。例如:
theta_bins = linspace (-180、180、num_bins);%(-180、180)范围划分为num_bins等距的间隔
θ=离散化(量化(sin_theta cos_theta) * 180 /π,theta_bins);
在这里,
num_bins
是时间间隔的数量你想把范围分成。的
量化
函数用于获取角度从sin_theta cos_theta,然后使用这个角是转化为度
* 180 /π
比例因子。
- 更新状态表示使用新的旋转角度θ,而不是罪(θ),因为(θ)。您需要修改观测空间包括新的状态变量,并正确的行动空间离散行动空间映射到连续的控制输入。
你可以尝试不同的值
num_bins
,看看它如何影响旋转角的离散化。更大的价值
num_bins
将导致更好的离散化的角度,增加计算复杂度为代价的和培训时间。