Q-Learning
伪代码
1. 随机初始化Q(s, a)#可以为全零阵
2. repeat(for each episode):
3. 初始化s(随机)
4. repeat(for each step of episode):
5. 选择一个a(有策略,比如epsilon greedy策略)
6. 根据s, a,得到下一个s'
7. Q(s, a) = (1 - alpha) * Q(s, a) + alpha * {R(s, a) + gamma * max[Q(s', a')]
8. s = s'
9. until s 到达目标状态
10.可以选择一个条件,当Q收敛或者多少个episode的时候结束训练
agent在某一个状态的时候,要选择一个行为到达下一个状态,也就是选择一个a,如何选择:
如果每次选择都根据经验来选择,那么会不会落入局部最优解。如果随机选择,会不会导致收敛速度太慢。
一般采用epsilon-greedy策略:
也就是,有1 - epsilonepsilon的概率去随机,的概率凭借经验。
代码:
# coding:utf-8
from __future__ import print_function # 必须放到开始
import numpy as np
import pandas as pd
import time
# 预设值
N_STATES = 6 # 状态数量
ACTIONS = [