迷宫的 MDP 政策图
MDP Policy Plot for a Maze
我有一个 5x-5 的迷宫,具体如下。
r = [1 0 1 1 1
1 1 1 0 1
0 1 0 0 1
1 1 1 0 1
1 0 1 0 1];
其中 1 是路径,0 是墙壁。
假设我有一个函数 foo(policy_vector, r) 将策略向量的元素映射到 r 中的元素。例如 1=上,2=右,3=下,4=左。 MDP 的设置使得墙状态永远不会实现,因此在图中忽略了这些状态的策略。
policy_vector' = [3 2 2 2 3 2 2 1 2 3 1 1 1 2 3 2 1 4 2 3 1 1 1 2 2]
symbols' = [v > > > v > > ^ > v ^ ^ ^ > v > ^ < > v ^ ^ ^ > >]
我正在尝试在解决迷宫的上下文中显示我对马尔可夫决策过程的决策。我将如何绘制看起来像这样的东西?最好使用 Matlab,但 Python 也可以。
即使有人能告诉我如何制作这样的情节,我也能从那里弄明白。
function[] = policy_plot(policy,r)
[row,col] = size(r);
symbols = {'^', '>', 'v', '<'};
policy_symbolic = get_policy_symbols(policy, symbols);
figure()
hold on
axis([0, row, 0, col])
grid on
cnt = 1;
fill([0,0,col,col],[row,0,0,row],'k')
for rr = row:-1:1
for cc = 1:col
if r(row+1 - rr,cc) ~= 0 && ~(row == row+1 - rr && col == cc)
fill([cc-1,cc-1,cc,cc],[rr,rr-1,rr-1,rr],'g')
text(cc - 0.55,rr - 0.5,policy_symbolic{cnt})
end
cnt = cnt + 1;
end
end
fill([cc-1,cc-1,cc,cc],[rr,rr-1,rr-1,rr],'b')
text(cc - 0.70,rr - 0.5,'Goal')
function [policy_symbolic] = get_policy_symbols(policy, symbols)
policy_symbolic = cell(size(policy));
for ii = 1:length(policy)
policy_symbolic{ii} = symbols{policy(ii)};
end
我有一个 5x-5 的迷宫,具体如下。
r = [1 0 1 1 1
1 1 1 0 1
0 1 0 0 1
1 1 1 0 1
1 0 1 0 1];
其中 1 是路径,0 是墙壁。
假设我有一个函数 foo(policy_vector, r) 将策略向量的元素映射到 r 中的元素。例如 1=上,2=右,3=下,4=左。 MDP 的设置使得墙状态永远不会实现,因此在图中忽略了这些状态的策略。
policy_vector' = [3 2 2 2 3 2 2 1 2 3 1 1 1 2 3 2 1 4 2 3 1 1 1 2 2]
symbols' = [v > > > v > > ^ > v ^ ^ ^ > v > ^ < > v ^ ^ ^ > >]
我正在尝试在解决迷宫的上下文中显示我对马尔可夫决策过程的决策。我将如何绘制看起来像这样的东西?最好使用 Matlab,但 Python 也可以。
即使有人能告诉我如何制作这样的情节,我也能从那里弄明白。
function[] = policy_plot(policy,r)
[row,col] = size(r);
symbols = {'^', '>', 'v', '<'};
policy_symbolic = get_policy_symbols(policy, symbols);
figure()
hold on
axis([0, row, 0, col])
grid on
cnt = 1;
fill([0,0,col,col],[row,0,0,row],'k')
for rr = row:-1:1
for cc = 1:col
if r(row+1 - rr,cc) ~= 0 && ~(row == row+1 - rr && col == cc)
fill([cc-1,cc-1,cc,cc],[rr,rr-1,rr-1,rr],'g')
text(cc - 0.55,rr - 0.5,policy_symbolic{cnt})
end
cnt = cnt + 1;
end
end
fill([cc-1,cc-1,cc,cc],[rr,rr-1,rr-1,rr],'b')
text(cc - 0.70,rr - 0.5,'Goal')
function [policy_symbolic] = get_policy_symbols(policy, symbols)
policy_symbolic = cell(size(policy));
for ii = 1:length(policy)
policy_symbolic{ii} = symbols{policy(ii)};
end