Skip to content

Commit 7a6728a

Browse files
committed
Add another simple POMDP example.
1 parent 133a9eb commit 7a6728a

4 files changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Simple POMDP guessing a hidden variable (multiple attempts)
2+
3+
pomdp
4+
5+
// Number of guesses allowed (N=1,2,3,4)
6+
const int N;
7+
8+
observables s, g endobservables
9+
10+
module M
11+
12+
s : [0..2]; // state
13+
h : [0..3]; // hidden var
14+
g : [0..N] init N; // num guesses left
15+
16+
// Assign hidden variable randomly
17+
[toss] s=0 -> 0.1:(s'=1)&(h'=1) + 0.3:(s'=1)&(h'=2) + 0.6:(s'=1)&(h'=3);
18+
// Guess the value of the hidden variable
19+
[guess1] s=1&g>0 -> (s'=(h=1)?2:s) & (g'=g-1);
20+
[guess2] s=1&g>0 -> (s'=(h=2)?2:s) & (g'=g-1);
21+
[guess3] s=1&g>0 -> (s'=(h=3)?2:s) & (g'=g-1);
22+
// No more guesses left
23+
[timeup] s=1&g=0 -> (s'=3);
24+
// Done
25+
[loop] s=2 -> true;
26+
27+
endmodule
28+
29+
label "correct" = s=2;
30+
31+
// Number of guesses made
32+
rewards "guesses"
33+
[guess1] true : 1;
34+
[guess2] true : 1;
35+
[guess3] true : 1;
36+
endrewards
37+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Maximum probability of guessing the value correctly
2+
// (should be 1 for N>=3)
3+
Pmax=? [ F "correct" ];
4+
5+
// Minimum expected number of guesses before guessing the value correctly
6+
// (will be infinite for N<3)
7+
R{"guesses"}min=? [ F "correct" ];
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Simple POMDP guessing a hidden variable
2+
3+
pomdp
4+
5+
observables s endobservables
6+
7+
module M
8+
9+
s : [0..2]; // state
10+
h : [0..3]; // hidden var
11+
12+
// Assign hidden variable randomly
13+
[toss] s=0 -> 0.1:(s'=1)&(h'=1) + 0.3:(s'=1)&(h'=2) + 0.6:(s'=1)&(h'=3);
14+
// Guess the value of the hidden variable
15+
[guess1] s=1 -> (s'=(h=1)?2:3);
16+
[guess2] s=1 -> (s'=(h=2)?2:3);
17+
[guess3] s=1 -> (s'=(h=3)?2:3);
18+
// Done
19+
[loop] s=2 -> true;
20+
21+
endmodule
22+
23+
label "correct" = s=2;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Maximum probability of guessing the value correctly
2+
// (equals the probability of the most likely value)
3+
Pmax=? [ F "correct" ];

0 commit comments

Comments
 (0)