Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
96129 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Tue Apr 22 10:43:38 2014
4
5
@author: rlabbe
6
"""
7
8
p = [.2, .2, .2, .2, .2]
9
world = ['green', 'red', 'red', 'green', 'green']
10
measurements = ['red', 'green']
11
12
pHit = 0.6
13
pMiss = 0.2
14
15
pOvershoot = 0.1
16
pUndershoot = 0.1
17
pExact = 0.8
18
19
def normalize (p):
20
s = sum(p)
21
for i in range (len(p)):
22
p[i] = p[i] / s
23
24
def sense(p, Z):
25
q= []
26
for i in range (len(p)):
27
hit = (world[i] ==Z)
28
q.append(p[i] * (pHit*hit + pMiss*(1-hit)))
29
normalize(q)
30
return q
31
32
33
def move(p, U):
34
q = []
35
for i in range(len(p)):
36
pexact = p[(i-U) % len(p)] * pExact
37
pover = p[(i-U-1) % len(p)] * pOvershoot
38
punder = p[(i-U+1) % len(p)] * pUndershoot
39
q.append (pexact + pover + punder)
40
41
normalize(q)
42
return q
43
44
if __name__ == "__main__":
45
46
p = sense(p, 'red')
47
print p
48
pause()
49
for z in measurements:
50
p = sense (p, z)
51
p = move (p, 1)
52
print p
53
54
55
56
57
58
59