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.

你可能感兴趣的:(AI学习,pygame,python,开发语言)