强化学习学习总结(二)——QLearning算法更新

一、QLearning算法思维

强化学习学习总结(二)——QLearning算法更新

二、QLearning算法更新思维

 

强化学习学习总结(二)——QLearning算法更新

1.导入模块

from maze_env import Maze                #环境模块
from RL_brain import QLearningTable      #思考模块

2.更新迭代

def update():
    #---------------------------------------------------------------------------------
    #Reapeat(episode):学习100次
    for episode in range(100):
    #----------------------------------------------------------------------------------
        # 初始化 state 的观测值;并开始内循环
        observation = env.reset()        
        while True:
            # 更新可视化环境
            env.render()
    #----------------------------------------------------------------------------------
            # 1°Action
            action = RL.choose_action(str(observation))
            # 2°获得反馈S'(下一步观测值)和R(当前步奖励)和done (是否是掉下地狱或者升上天堂)
            observation_, reward, done = env.step(action)
            # 3°更新Q表:RL 从这个序列 (state, action, reward, state_) 中学习
            RL.learn(str(observation), action, reward, str(observation_))
            # 4°S'→state的观测值
            observation = observation_
    #------------------------------------------------------------------------------------
            # 如果掉下地狱或者升上天堂, 这回合就结束了
            if done:
                break

    # 结束游戏并关闭窗口
    print('game over')
    env.destroy()

if __name__ == "__main__":
    # 定义环境 env 和 RL 方式
    env = Maze()
    RL = QLearningTable(actions=list(range(env.n_actions)))

    # 开始可视化环境 env
    env.after(100, update)
    env.mainloop()