createGridWorld
为强化学习创建一个二维网格世界
描述
例子
创建网格世界环境
在这个例子中,考虑一个5 * 5的网格世界,遵循以下规则:
一个以边界为界的5 * 5网格世界,有4种可能的行动(北= 1,南= 2,东= 3,西= 4)。
代理从单元格[2,1](第二行,第一列)开始。
如果智能体到达单元格[5,5](蓝色)处的终端状态,它将获得奖励+10。
环境包含从单元格[2,4]到单元格[4,4]的特殊跳跃,并获得+5奖励。
该制剂在细胞[3,3]、[3,4]、[3,5]和[4,3](黑色细胞)中被障碍物阻塞。
所有其他行动的奖励都是-1。
首先,创建一个GridWorld
对象使用createGridWorld
函数。
GW = createGridWorld(5,5)
GW = GridWorld with properties: GridSize: [5 5] CurrentState: "[1,1]" States: [25x1 string] Actions: [4x1 string] T: [25x25x4 double] R: [25x25x4 double] ObstacleStates: [0x1 string] TerminalStates: [0x1 string] ProbabilityTolerance: 8.8818e-16
现在,设置初始、最终和障碍状态。
GW。现状后=(2, 1)的;GW。TerminalStates =“[5,5]”;GW。ObstacleStates = [“[3 3]”;“[3,4]”;“[3,5]”;“[4 3]”];
更新障碍状态的状态转换矩阵,并在障碍状态上设置跳跃规则。
updateStateTranstionForObstacles (GW) GW。T (state2idx(吉瓦,”“(2、4)),:,:) = 0;GW。T(年代t一个te2idx(GW,”“(2、4)), state2idx(吉瓦,“(4,4)”),:) = 1;
接下来,在奖励转换矩阵中定义奖励。
nS = number (GW.States);nA = number (GW.Actions);GW。R=-1*ones(nS,nS,nA); GW.R(state2idx(GW,”“(2、4)), state2idx(吉瓦,“(4,4)”),:) = 5;GW. r (:,state2idx(GW,GW. terminalstates),:) = 10;
现在,使用rlMDPEnv
控件创建网格世界环境GridWorld
对象吉瓦
.
env = rlMDPEnv(GW)
模型:[1x1 rl.env. env.]GridWorld] ResetFcn: []
控件可以可视化网格世界环境情节
函数。
情节(env)
输入参数
米
- - - - - -网格世界的行数
标量
网格世界的行数,指定为标量。
n
- - - - - -网格世界的列数
标量
网格世界的列数,指定为标量。
移动
- - - - - -动作名称
“标准”
(默认)|“国王”
操作名,指定为任意一种“标准”
或“国王”
.当移动
设置为
“标准”
,动作为[' N '; ' S ' E '; ' W ']
.“国王”
,动作为[' N ',“S”;“E”;“W”;“东北”;“西北”;“SE”;“西南”)
.
输出参数
吉瓦
-二维网格世界
GridWorld
对象
二维网格世界,返回为一个GridWorld
对象,其属性如下所示。有关更多信息,请参见创建自定义网格世界环境.
GridSize
-网格世界的大小
(m, n)
向量
网格世界的大小,指定为(m, n)
向量。
现状后
—当前状态名称
字符串
当前状态的名称,以字符串形式指定。
行动
-行动名称
字符串向量
T
-状态转移矩阵
三维数组
状态转换矩阵,指定为三维数组,它决定了代理在环境中可能的运动。状态转移矩阵T
是否有一个概率矩阵表示代理从当前状态移动的可能性年代
到任何可能的下一个状态年代
通过执行行动一个
.T
由,
T
是:
一个
K
——- - - - - -K
-by-4数组,如果移动
指定为“标准”
.在这里,K
=米
*n
.一个
K
——- - - - - -K
-by-8数组,如果移动
指定为“国王”
.
R
-奖励转换矩阵
三维数组
奖励转换矩阵,指定为一个三维数组,决定代理在环境中执行一个动作后获得多少奖励。R
与状态转移矩阵的形状和大小相同T
.奖励转换矩阵R
由,
R
是:
一个
K
——- - - - - -K
-by-4数组,如果移动
指定为“标准”
.在这里,K
=米
*n
.一个
K
——- - - - - -K
-by-8数组,如果移动
指定为“国王”
.
ObstacleStates
-在网格世界中无法到达的州名
字符串向量
在网格世界中无法到达的状态名,指定为字符串向量。
TerminalStates
-网格世界中的终端状态名称
字符串向量
网格世界中的终端状态名称,指定为字符串向量。
版本历史
在R2019a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。