根据A painless Q-Learning教程用python实现
2016-04-08 13:31
567 查看
(原文链接:http://mnemstudio.org/path-finding-q-learning-tutorial.htm )
QLearning:
1. :给定参数γ和R矩阵
2. 初始化 Q
3. for each episode:
3.1随机选择一个出事状态s
3.2若未达到目标状态,则执行以下几步
(1)在当前状态s的所有可能行为中选取一个行为a
(2)利用选定的行为a,得到下一个状态 。
(3)按照 Q(s,a)=R(s,a)+γmax{Q(s^,a^)}
(4) s:=s^
γ 为学习参数, R为奖励机制, 为在s状态下,执行Q所得到的值。随机选择一个一个状态,即开始搜索的起点,在为100的点为终点。下面是程序。
QLearning:
1. :给定参数γ和R矩阵
2. 初始化 Q
3. for each episode:
3.1随机选择一个出事状态s
3.2若未达到目标状态,则执行以下几步
(1)在当前状态s的所有可能行为中选取一个行为a
(2)利用选定的行为a,得到下一个状态 。
(3)按照 Q(s,a)=R(s,a)+γmax{Q(s^,a^)}
(4) s:=s^
γ 为学习参数, R为奖励机制, 为在s状态下,执行Q所得到的值。随机选择一个一个状态,即开始搜索的起点,在为100的点为终点。下面是程序。
import numpy as np GAMMA = 0.8 Q = np.zeros((6,6)) R=np.asarray([[-1,-1,-1,-1,0,-1], [-1,-1,-1,0,-1,100], [-1,-1,-1,0,-1,-1], [-1,0, 0, -1,0,-1], [0,-1,-1,0,-1,100], [-1,0,-1,-1,0,100]]) def getMaxQ(state): return max(Q[state, :]) def QLearning(state): curAction = None for action in xrange(6): if(R[state][action] == -1): Q[state, action]=0 else: curAction = action Q[state,action]=R[state][action]+GAMMA * getMaxQ(curAction) count=0 while count<1000: for i in xrange(6): QLearning(i) count+=1 print Q/5
运行程序的结果如下:(与原文所得结果一样) [[ 0. 0. 0. 0. 80. 0. ] [ 0. 0. 0. 64. 0. 100. ] [ 0. 0. 0. 64. 0. 0. ] [ 0. 80. 51.2 0. 80. 0. ] [ 64. 0. 0. 64. 0. 100. ] [ 0. 80. 0. 0. 80. 100. ]]
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法