一、gym环境分析
gym中三个重要的函数
env = gym.make(‘CartPole-v0’)
env.reset()
env.render()
1. 第一个函数用于创建环境,通常我们的环境文件存在目录为:gym目录文件/gym/envs/classic_control/环境.py,文件中会定义一个环境类,类中通常包括seed(), render(), reset(), step()等函数。
2. reset()为重新初始化函数,在强化学习算法中,智能体需要一次次地尝试,累积经验,然后从经验中学到好的动作。一次尝试我们称之为一条trajectory或一个episode. 每次尝试都要到达终止状态. 一次尝试结束后,智能体需要从头开始,这就需要智能体具有重新初始化的功能。函数reset()就是这个作用。
3. render()函数用于直观显示当前环境中物体的状态,扮演图像引擎的角色。使用时,通常引入rendering模块,用rendering模块中的画图函数进行图形的绘制。引用方式如下:
from gym.envs.classic_control import rendering
4. 此外,step()函数也至关重要。该函数描述了智能体与环境交互的所有信息,函数中,一般利用智能体的运动学模型和动力学模型计算下一步的状态和立即回报,并判断是否达到终止状态。当输入是动作a后,输出为:下一步状态,立即回报,是否终止(返回True或者False),调试项。
二、gym环境的构建
以找金币为例,创建自己的环境
1. 创建环境的本质是在py文件中定义一个环境类,然后在类中定义必要的函数。
import logging
import numpy
import random
from gym import spaces
import gym
logger = logging.getLogger(__name__)
class GridEnv(gym.Env):
metadata = {
'render.modes': ['human', 'rgb_array'],
'video.frames_per_second': 2
}
def __init__(self):
self.states = [1,2,3,4,5,6,7,8] #状态空间
self.x=[140,220,300,380,460,140,300,460]
self.y=[250,250,250,250,250,150,150,150]
self.terminate_states = dict() #终止状态为字典格式
self.terminate_states[6] = 1
self.terminate_states[7] = 1
self.terminate_states[8] = 1
self.actions