gym自建环境实例

注意事项
网络的输入

__init__函数的self.state决定model(网络)的输入shape,如果self.state的shape是(1,32),那么网络的输入也应该是一样的。

关于策略

step函数根据输入的动作会返回不同的reward,策略不同后面动作出现的次数就会不同,如action 0 对应的 reward=0,action 1 对应的reward=-10,action 2对应的reward=-5,则训练的结果会使得action=0的动作变多。所以不同的动作需要合理的设置reward。
虽然不能显示画面但是能够正常的训练
运行环境:
python 3.7.9
gym 0.19.0
pygame 2.1.2

from rl.memory import SequentialMemory
from rl.policy import BoltzmannQPolicy
from rl.agents.dqn import DQNAgent
from keras.layers import Dense,Flatten
import keras
#from keras.optimizers import Adam
import tensorflow as tf
import numpy as np
import random
import pygame
import gym


class Env(gym.Env):
    def __init__(self):
        self.action_space = gym.spaces.Discrete(4)
        self.observation_space = gym.spaces.MultiDiscrete([39, 27])
        self.screen = pygame.display.set_mode((800, 600))
        self.PlayerX = 0
        self.PlayerY = 0
        self.FoodX = 0
        self.FoodY = 0
        self.state = [self.FoodX - self.PlayerX + 19, self.FoodY - self.PlayerY + 14]
        self.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将gym环境改成自己要的环境,需要遵循以下步骤: 1. 安装gym 首先需要在本地环境中安装gym,可以使用以下命令进行安装: ``` pip install gym ``` 2. 创自定义环境gym中,每个环境都是一个Python类,因此我们需要创一个新的Python类来定义自己的环境。我们可以在gym的基础上编写自己的环境,也可以从头开始编写。 3. 定义环境的行动空间和状态空间 在自定义环境中,我们需要定义环境的状态空间和行动空间。状态空间通常是一个向量或矩阵,描述环境当前的状态。行动空间定义了可以在环境中采取的所有操作。 4. 实现环境的step()函数 在自定义环境中,需要实现step()函数,该函数接收一个动作作为输入,并返回下一个状态、奖励和是否结束的标志。 5. 实现环境的reset()函数 reset()函数用于将环境重置为初始状态。 6. 注册自定义环境 最后,我们需要将自定义环境注册到gym中,以便我们可以在gym中使用它。 以下是一个简单的示例,展示了如何创自定义环境并将其注册到gym中: ```python import gym from gym import spaces import numpy as np class CustomEnv(gym.Env): def __init__(self): self.action_space = spaces.Discrete(2) # 行动空间为两个离散值 self.observation_space = spaces.Box(low=np.array([0]), high=np.array([1])) # 状态空间为一个连续的值 def step(self, action): # 在此处实现环境的状态转移逻辑 pass def reset(self): # 在此处实现环境的初始化逻辑 pass # 注册自定义环境 gym.envs.register(id='CustomEnv-v0', entry_point='custom_env:CustomEnv') ``` 在上述示例中,我们创了一个名为CustomEnv的自定义环境,并将其注册到gym中。我们还定义了行动空间和状态空间,但是需要在step()函数和reset()函数中实现具体的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值