第6节 Q学习实现走迷宫
我们要实现的走迷宫的可视化界面像下图所展示的一样,红色的探索者要走到黄色圆圈所在的“宝藏”位置。黑色的地方是陷阱,如果走到陷阱,会得到-1的奖励值,如果到达“宝藏”所在区域,会得到+1的奖励值。
环境的编写是通过python自带的GUI模块tkinter
编写的,这里不详细介绍其用法,tkinter
教程链接:tkinter教程
6.1 Q-Learning类
这次要以class类的形式来编写Q-Learning中的功能函数,新建一个python文件,专门存放Q-Learning类,有初始化、选择动作、学习更新参数、查看状态是否存在四个模块。
初始化
设定学习中所需的参数,在类的构造函数中,传入参数,分别是:
- 动作空间:上、下、左、右
- 学习率:参数更新速度控制
- γ \gamma γ-衰减因子:对后来状态的重视程度
- ϵ \epsilon ϵ贪婪数:值越大,贪婪程度越大,随机性越小
- 初始Q表:建立表格,列名为四个动作空间名称字符串
import numpy as np
import pandas as pd
class QLearning:
def __init__(self, actions, learning_rate=0.01, reward_decay=0.9, e_greedy=0.9): # 初始换函数,后面是默认参数
self.actions = actions # 动作空间
self.lr = learning_rate # 学习率
self.gamma = reward_decay # 奖励衰减
self.epsilon