機器人概率定位學習筆記第二篇_使用python建立機器人感知函數(sense fuction)

本筆記學習於優達學城 Artificial Intelligence for Robotics課程

1,用python實現一個Uniform Probability 均衡概率數組,五個概率。

answer:

p=[]
n=5
for i in range(0,n):
    p.append(1.0/n)
print p

2,先看下圖 假設世界有5個方格,機器人在哪個方格的概率是一樣的,所以在每個方格爲概率是0.2。接下來,讓每個方格有不同的顏色,三個綠色,兩個紅色。

ok,下一步機器人開始感知了,機器人感知到的顏色是紅色,這個是條件,所以明顯的看出,在x2,x3位置處的概率應該變大,而在x1,x3,x4位置處的概率應該變小。

所以我們讓正確的位置處乘以0.6,即紅色位置處乘以0.6,綠色位置乘以0.2,這個兩個數是隨機的,但是很明顯0.6是0.2的三倍。

最後計算,機器人感知之後帶來的概率影響,計算每個方格的概率?

answer:0.04,0.04,0.12,0.12,0.04

3,但是上面的結果總和並不是1,所以我們要計算他們總和,並normalize distribution 標準化概率。簡單的python代碼可以如下

p=[]
n=5
for i in range(0,n):
    p.append(1.0/n)
p[0]=p[0]*0.2
p[1]=p[1]*0.6
p[2]=p[2]*0.6
p[3]=p[3]*0.2
p[4]=p[4]*0.2
sum1=sum(p)
for i in range(0,5):
    p[i]=p[i]/sum1
print p
4,感知方程 sense fuction ,現在我們就是要做一個感知方程,並均值化感知後的概率,python代碼如下
p=[0.2, 0.2, 0.2, 0.2, 0.2]
world=['green', 'red', 'red', 'green', 'green']
Z = 'red'
pHit = 0.6
pMiss = 0.2

def sense(p, Z):
    q=[]
    for i in range(len(p)):
        hit = (Z == world[i])
        q.append(p[i] * (hit * pHit + (1-hit) * pMiss))
    a =sum(q)
    for i in range(len(q)):
        q[i]=q[i]/a
    return q
print sense(p,Z)

5,多次感知,假設現在機器人第一次感知到紅色,第二次又感知到綠色,求出最後的概率

answer:

p=[0.2, 0.2, 0.2, 0.2, 0.2]
world=['green', 'red', 'red', 'green', 'green']
measurements = ['red', 'green']
pHit = 0.6
pMiss = 0.2

def sense(p, Z):
    q=[]
    for i in range(len(p)):
        hit = (Z == world[i])
        q.append(p[i] * (hit * pHit + (1-hit) * pMiss))
    s = sum(q)
    for i in range(len(q)):
        q[i] = q[i] / s
    return q
#
#ADD YOUR CODE H
for i in range(len(measurements)):
    p=sense(p,measurements[i])

print p




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章