采用贪婪算法,每走一步-1,遇到障碍-10,到达+20.终止条件是抵达障碍物或终点,迭代200次。
Q(s,a)=Q(s,a)+alpha*(r+gama*max(Q(s',a'))-Q(s,a))
s'为下一状态,max指的是a'的最大Q值。
maze是地图,1为起点,2终点,3障碍,4路径,0初始值,Q是状态-行为对的value。
代码如下:
maze=[]
size=8
reward_ob=-10
reward_walk=-1
reward_goal=20
Q=[]
alpha=0.5
gama=0.9
pos=[0,0]
ini_x=0
ini_y=0
def init_Q():
tmp=[]
tmp1=[]
for i in range(size+2):
tmp1=[]
for j in range(size+2):
tmp=[]
for k in range(4):
tmp.append(0)
tmp1.append(tmp)
Q.append(tmp1)
def init_map():
global maze,size
for i in range(size+2):
tmp=[]
for j in range(size+2):
tmp.append(0)
maze.append(tmp)
for i in range(size+2):
for j in range(size+2):
if i==0 or j==0 or i==size+1 or j==size+1:
maze[i][j]=3
return maze
def init_goal(maze,size,x,y,x1,y1):
globa