强化学习笔记(三)-----值迭代算法

本文介绍了强化学习中的值迭代算法,它是策略迭代算法的一种动态版本。通过对比两种算法,强调值迭代在策略评估和改善上的交替进行。同时,文章通过gym库展示了值迭代算法的样例代码,包括环境注册、策略迭代过程和模拟动画效果,帮助读者深入理解算法的实际应用。
摘要由CSDN通过智能技术生成

强化学习有两种常见迭代训练算法:策略迭代算法和值迭代算法。在上一篇博客<<强化学习笔记(二)>>中已经详细描述了策略迭代算法,其实值迭代算法和策略迭代算法的基本思想是一致的,其最大的区别在于,策略迭代算法在进行策略改善的时候,使用的每个状态的值函数,是稳定的,在进行策略评估的时候,计算得到了当前策略的稳定值函数;而值迭代算法交替进行策略评估和策略改善的过程,并不是等到值函数稳定的时候再进行策略改善,其过程更为动态。

gym的样例代码展示

通过对下面的问题进行编程,加深对值迭代算法的理解。问题的描述同<<强化学习笔记(二)>>中的内容

这里写图片描述

该图的状态空间由下置上,从左到右,分别为1 – 36

import numpy as np
import random
from gym import spaces
import gym
from gym.envs.classic_control import rendering

#模拟环境类
class GridWorldEnv(gym.Env):
    #相关的全局配置
    metadata = {
        'render.modes':['human', 'rgb_array'],
        'video.frames_per_second': 2
    }

    def __init__(self):
        self.states = [i for i in range(1, 37)] #初始化状态
        self.terminate_states = [3, 7, 11, 15, 19, 20, 23, 30,  33, 34] #终结态
        self.actions = ['up', 'down', 'left', 'right'] #动作空间

        self.v_states = dict() #状态的值空间
        for state in self.states:
            self.v_states[state] = 0.0

        for state in self.terminate_states: #先将所有陷阱和黄金的值函数初始化为-1.0
            self.v_states[state] = -1.0

        self.v_states[34] = 1.0  #黄金的位置值函数初始化为 1

        self.initStateAction() #初始化每个状态的可行动作空间
        self.initStatePolicyAction() #随机初始化当前策略

        self.gamma = 0.8 #计算值函数用的折扣因子
        self.viewer = None #视图对象
        self.current_state = None #当前状态
        return

    def translateStateToRowCol(self, state):
        """
        将状态转化为行列坐标返回
        """
        row = (state - 1) // 6
        col = (state - 1) %  6
        return row, col

    def
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值