Q_learning 算法(迷宫算法)

概述:

弄懂 Q-learning 算法的前提是了解法尔科夫过程和奖励函数,用value(max)替换了原先的value奖励函数。

代码:

import numpy as np

GAMA = 0.8
FINALLY = 5

#构造一个6*6 的小型迷宫
R = np.random.randint(1,100,[6,6])
#初始化Q表
Q = np.zeros_like(R)

# Q表更新函数
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

# 测试函数
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)

测试结果:
希望找出2节点到5节点的路径:

[3, 1, 5]

是不是很棒!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容