強化學習實戰 自定義Gym環境之顯示字串

2022-09-08 07:00:17 字數 2183 閱讀 6355

如果想用強化學習去實現掃雷、2048這種帶有數字提示資訊的遊戲,自然是希望自定義 gym 環境時能把字元顯示出來。上網查了很久,沒有找到gym自帶的圖形工具viewer可以顯示字串的資訊,反而是通過pyglet

import

pyglet

from gym.envs.classic_control import

rendering

class

drawtext:

def__init__

(self, label:pyglet.text.label):

self.label=label

defrender(self):

self.label.draw()

screen_width = 500screen_height = 500viewer = rendering.viewer(screen_width, screen_height + 20)

text = 'hello world

'label = pyglet.text.label(text, font_size=36,

x=100, y=250, anchor_x='

left

', anchor_y='

bottom',

color=(255, 123, 255, 255))

label.draw()

viewer.add_geom(drawtext(label))

viewer.render(return_rgb_array=false)

其中,lable的座標x y是以左下兩邊為x y軸(而viewer是以左上邊為軸,這意味著顯示圖案和文字還得用兩套座標系...),anchor_x 和 anchor_y 指的是label物件的錨點,即如何將label物件視為乙個點,有top / bottom / center / baseline四種選擇。

效果:

再配合 python動態變數名定義與呼叫 的方法,就可以批量地顯示字串了:

import

pyglet

from gym.envs.classic_control import

rendering

class

drawtext:

def__init__

(self, label:pyglet.text.label):

self.label=label

defrender(self):

self.label.draw()

screen_width = 500screen_height = 500viewer =rendering.viewer(screen_width, screen_height)

for i in range(10):

for j in range(10):

exec('

label_{}_{} = {}

'.format(i, j, none))

names =locals()

names[

'label_

' + str(i) + '

_' + str(j)] = pyglet.text.label('

{}'.format(j), font_size=15,

x=i*50+25, y=j*50+25, anchor_x='

left

', anchor_y='

bottom',

color=(i*10, i*20, i*25, 255))

label = names['

label_{}_{}

'.format(i, j)]

label.draw()

viewer.add_geom(drawtext(label))

viewer.render(return_rgb_array=false)

其中,locals() 是程式執行過程中存放了所有區域性變數名和對應值的字典。

效果:

強化學習 gym自定義視覺化環境例項

分類目錄 強化學習 自定義環境 自定義環境最好繼承自gym.env,這樣可以復用父類中的一些內容 直接上程式,在程式中進行說明 import gym from gym import spaces from gym.envs.classic control import rendering impor...

強化學習 實驗 Gym環境

本節內容參考 白話強化學習 gym是openai團隊提供的乙個簡單的開源專案,可以快速地實現乙個完整的 s a r a s rightarrow a rightarrow r rightarrow a s a r a 首先我們給python環境中安裝gym包 pip install gym下面給出一...

強化學習 蛇棋遊戲gym環境搭建

學習強化學習精要核心演算法與tensorflow實現這本書中,關於蛇棋遊戲利用gym搭建。遊戲的規則非常簡單,詳細請參考馮超的書 強化學習精要核心演算法與tensorflow實現 下面是遊戲的具體實現 import numpy as np import gym from gym.spaces imp...