【URL】一个简单基于Gym的2D随机游走环境,用于无监督强化学习(URL)

import gym
from gym import spaces
import numpy as np
import pygame


class RandomWalk2DEnv(gym.Env):
    def __init__(self):
        super(RandomWalk2DEnv, self).__init__()

        # 定义状态空间为2D坐标(x, y)
        self.x_min, self.x_max = -10, 10  # 更新尺寸为 (-10, 10)
        self.y_min, self.y_max = -10, 10  # 更新尺寸为 (-10, 10)
        self.observation_space = spaces.Box(np.array([self.x_min, self.y_min]),
                                            np.array([self.x_max, self.y_max]),
                                            dtype=np.float32)

        # 动作空间定义为2D向量,x和y分量的范围为(-1, 1)
        self.action_space = spaces.Box(np.array([-1.0, -1.0]), np.array([1.0, 1.0]), dtype=np.float32)

        # 初始化状态
        self.state = np.array([0.0, 0.0])

        # 初始化步长(每次移动的距离)
        self.step_size = 1.0

        # 初始化pygame
        pygame.init()

        # 设置窗口
        self.screen_size = (800, 800)
        self.screen = pygame.display.set_mode(self.screen_size)
        pygame.display.set_caption("Random Walk 2D")

        # 坐标转换,将-10到10的坐标映射到屏幕的像素坐标
        self.scale = 40  # 缩放因子,决定每个单位坐标对应多少像素
        self.origin = np.array([self.x_max, self.y_max])  # 原点在右上角

        # 路径记录
        self.path_x = []
        self.path_y = []

    def reset(self):
        # 将智能体重置到原点 (0, 0)
        self.state = np.array([0.0, 0.0])
        self.path_x = [self.state[0]]  # 重置路径记录
        self.path_y = [self.state[1]]  # 重置路径记录
        ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值