如果想用強化學習去實現掃雷、2048這種帶有數字提示資訊的遊戲,自然是希望自定義 gym 環境時能把字元顯示出來。上網查了很久,沒有找到gym自帶的圖形工具viewer可以顯示字串的資訊,反而是通過pyglet:
import其中,lable的座標x y是以左下兩邊為x y軸(而viewer是以左上邊為軸,這意味著顯示圖案和文字還得用兩套座標系...),anchor_x 和 anchor_y 指的是label物件的錨點,即如何將label物件視為乙個點,有top / bottom / center / baseline四種選擇。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)
效果:
再配合 python動態變數名定義與呼叫 的方法,就可以批量地顯示字串了:
import其中,locals() 是程式執行過程中存放了所有區域性變數名和對應值的字典。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)
效果:
強化學習 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...