質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

13994閲覧

OpenAI Gymのサンプルコードを実行するとNotImplementedErrorが出る

Thurston

総合スコア5

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/12/08 02:35

OpenAI Gymを使って強化学習の勉強を始めたのですがサンプルコードの部分でつまずいてしましました。
良ければ助言をいただきたいです。よろしくお願いします。

###発生している問題・エラーメッセージ

NotImplementedError Traceback (most recent call last)
<ipython-input-32-3093026983cb> in <module>()
4 observation = env.reset()
5 for t in range(100):
----> 6 env.render()
7 print(observation)
8 action = env.action_space.sample()

~\Anaconda3\lib\site-packages\gym\core.py in render(self, mode, close)
148 elif mode not in modes:
149 raise error.UnsupportedMode('Unsupported rendering mode: {}. (Supported modes for {}: {})'.format(mode, self, modes))
--> 150 return self._render(mode=mode, close=close)
151
152 def close(self):

~\Anaconda3\lib\site-packages\gym\core.py in _render(self, mode, close)
284
285 def _render(self, mode='human', close=False):
--> 286 return self.env.render(mode, close)
287
288 def _close(self):

~\Anaconda3\lib\site-packages\gym\core.py in render(self, mode, close)
148 elif mode not in modes:
149 raise error.UnsupportedMode('Unsupported rendering mode: {}. (Supported modes for {}: {})'.format(mode, self, modes))
--> 150 return self._render(mode=mode, close=close)
151
152 def close(self):

~\Anaconda3\lib\site-packages\gym\envs\classic_control\cartpole.py in _render(self, mode, close)
114 if self.viewer is None:
115 from gym.envs.classic_control import rendering
--> 116 self.viewer = rendering.Viewer(screen_width, screen_height)
117 l,r,t,b = -cartwidth/2, cartwidth/2, cartheight/2, -cartheight/2
118 axleoffset =cartheight/4.0

~\Anaconda3\lib\site-packages\gym\envs\classic_control\rendering.py in init(self, width, height, display)
49 self.width = width
50 self.height = height
---> 51 self.window = pyglet.window.Window(width=width, height=height, display=display)
52 self.window.on_close = self.window_closed_by_user
53 self.geoms = []

~\Anaconda3\lib\site-packages\pyglet\window_init_.py in init(self, width, height, caption, resizable, style, fullscreen, visible, vsync, display, screen, config, context, mode)
502
503 if not screen:
--> 504 screen = display.get_default_screen()
505
506 if not config:

~\Anaconda3\lib\site-packages\pyglet\canvas\base.py in get_default_screen(self)
71 :rtype: :class:Screen
72 '''
---> 73 return self.get_screens()[0]
74
75 def get_windows(self):

~\Anaconda3\lib\site-packages\pyglet\canvas\base.py in get_screens(self)
63 :rtype: list of :class:Screen
64 '''
---> 65 raise NotImplementedError('abstract')
66
67 def get_default_screen(self):

NotImplementedError: abstract

###該当のソースコード
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
for t in range(100):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
###試したこと
env.render()をenv.render(close = True)にするとエラーは出ないのですが、これをすると結果が描写されないので解決にはなっていないと思われます。

###補足情報(言語/FW/ツール等のバージョンなど)
python3でjupyterを使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

full installしていなければpip install -e '.[classic_control]' が必要と記載されています。

Classic control

If you didn't do the full install, you will need to run pip install -e '.[classic_control]' to enable rendering.

jupyter上でエラー再現しました。OpenGL描画のスクリーン取得できず失敗しているようです。
ターミナル上から実行すると、倒立振り子のウインドウが開き、正常に?動作しました。

Python

1import gym 2env = gym.make('CartPole-v0') 3for i_episode in range(20): 4 observation = env.reset() 5 for t in range(100): 6 env.render() 7 print(observation) 8 action = env.action_space.sample() 9 observation, reward, done, info = env.step(action) 10 if done: 11 print("Episode finished after {} timesteps".format(t+1)) 12 break

plain

1> python temp.py 23[ 0.09110893 0.42872795 -0.14344982 -0.85604103] 4[ 0.09968349 0.62548264 -0.16057064 -1.19017143] 5[ 0.11219315 0.822279 -0.18437407 -1.52857381] 6Episode finished after 17 timesteps 7 8>

イメージ説明

検索してみたら面白いものが見つかりました。jupyter上でgymを動作させることができるようです。
描画部分はVNCに渡すような感じのようです。
導入のハードルは高そうですが、参考まで。
paulsuda/jupyter-gym-vnc

投稿2017/12/08 02:53

編集2017/12/08 05:34
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Thurston

2017/12/08 03:26

ありがとうございますm(_ _)m 早速 !pip install -e '.[classic_control]'を実行したのですが '.[classic_control]' should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+ という警告がでてしまいました これも検索したのですがわかりませんでした…
Thurston

2017/12/08 04:30

!pip install gym[classic_control] でインストールできたようなのでサンプルを試しましたが同じエラーが出てきてしまいました…
can110

2017/12/08 04:44

jupyter上でエラー再現しました。 jupyter上だとスクリーン取得できずレンダリングできない感じですね。
can110

2017/12/08 05:37

jupyter上でレンダリングは別スクリーンにまかせる手法はあるようですが、難易度は高いと思います。 動作させるだけなら素直に端末から行った方がよいでしょう。
Thurston

2017/12/08 06:08

そうしたいと思います VNC?の利用は知識が追いついてからにしたいと思います ありがとうございましたm(_ _)m
guest

0

pygletを一度uninstallした後1.2.4をインストールすると実行はnotebook上でできました。
動画は別windowにて再生されます。

shell

1pip uninstall pyglet -y && pip install pyglet==1.2.4

ちなみに私の環境だと何故か==にてversion指定することが失敗したのでpyglet==1.2.4をだけ記述したファイルを作りpip install -r (ファイル名)のようにしてインストールしました。

投稿2019/01/01 05:51

2357gi

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問