Q_learning 算法(迷宮算法)

概述:

弄懂 Q-learning 算法的前提是了解法爾科夫過程和獎勵(lì)函數(shù),用value(max)替換了原先的value獎勵(lì)函數(shù)。

代碼:

import numpy as np

GAMA = 0.8
FINALLY = 5

#構(gòu)造一個(gè)6*6 的小型迷宮
R = np.random.randint(1,100,[6,6])
#初始化Q表
Q = np.zeros_like(R)

# Q表更新函數(shù)
def updataq(i,j):
    try:
        while True:
            Q[i,j] = R[i,j] + GAMA * Q[j].max()
            if j == FINALLY:break
            return updataq(j,Q[j].argmax()) 
    except:pass

# 測試函數(shù)
def findway(node):
    if node != FINALLY:
        way = Q[node].argmax()
        ways.append(way)
        return findway(way)

for _ in range(600):
    updataq(*np.random.randint(0,6,2)) 

ways = []
findway(2)
print(ways)

測試結(jié)果:
希望找出2節(jié)點(diǎn)到5節(jié)點(diǎn)的路徑:

[3, 1, 5]

是不是很棒!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容