|
1 | 1 | {
|
2 |
| - "nbformat": 4, |
3 |
| - "nbformat_minor": 0, |
4 |
| - "metadata": { |
5 |
| - "colab": { |
6 |
| - "name": "Colab-PettingZoo-Unity.ipynb", |
7 |
| - "private_outputs": true, |
8 |
| - "provenance": [], |
9 |
| - "collapsed_sections": [], |
10 |
| - "toc_visible": true |
11 |
| - }, |
12 |
| - "kernelspec": { |
13 |
| - "name": "python3", |
14 |
| - "display_name": "Python 3.7.11 64-bit ('pettingzoo': conda)", |
15 |
| - "metadata": { |
16 |
| - "interpreter": { |
17 |
| - "hash": "5d8bf1ccad4050d475e9ef008ff2de5ee0b8bb440e3e2ef203ad7e8f5a9e706b" |
18 |
| - } |
19 |
| - } |
20 |
| - }, |
21 |
| - "pycharm": { |
22 |
| - "stem_cell": { |
23 |
| - "cell_type": "raw", |
24 |
| - "source": [], |
25 |
| - "metadata": { |
26 |
| - "collapsed": false |
27 |
| - } |
28 |
| - } |
29 |
| - } |
30 |
| - }, |
31 | 2 | "cells": [
|
32 | 3 | {
|
| 4 | + "cell_type": "markdown", |
| 5 | + "metadata": {}, |
33 | 6 | "source": [
|
34 | 7 | "# ML-Agents PettingZoo Wrapper"
|
35 |
| - ], |
36 |
| - "cell_type": "markdown", |
37 |
| - "metadata": {} |
| 8 | + ] |
38 | 9 | },
|
39 | 10 | {
|
| 11 | + "cell_type": "markdown", |
| 12 | + "metadata": {}, |
40 | 13 | "source": [
|
41 | 14 | "## Setup"
|
42 |
| - ], |
43 |
| - "cell_type": "markdown", |
44 |
| - "metadata": {} |
| 15 | + ] |
45 | 16 | },
|
46 | 17 | {
|
47 | 18 | "cell_type": "code",
|
|
125 | 96 | ]
|
126 | 97 | },
|
127 | 98 | {
|
| 99 | + "cell_type": "markdown", |
| 100 | + "metadata": {}, |
128 | 101 | "source": [
|
129 | 102 | "### Installing ml-agents"
|
130 |
| - ], |
131 |
| - "cell_type": "markdown", |
132 |
| - "metadata": {} |
| 103 | + ] |
133 | 104 | },
|
134 | 105 | {
|
135 | 106 | "cell_type": "code",
|
|
149 | 120 | ]
|
150 | 121 | },
|
151 | 122 | {
|
| 123 | + "cell_type": "markdown", |
| 124 | + "metadata": {}, |
152 | 125 | "source": [
|
153 | 126 | "## Run the Environment"
|
154 |
| - ], |
155 |
| - "cell_type": "markdown", |
156 |
| - "metadata": {} |
| 127 | + ] |
157 | 128 | },
|
158 | 129 | {
|
159 |
| - "cell_type": "code", |
| 130 | + "cell_type": "markdown", |
160 | 131 | "metadata": {
|
161 |
| - "id": "htb-p1hSNX7D" |
| 132 | + "jp-MarkdownHeadingCollapsed": true, |
| 133 | + "tags": [] |
162 | 134 | },
|
163 | 135 | "source": [
|
164 |
| - "#@title Select Environment { display-mode: \"form\" }\n", |
165 |
| - "env_id = \"StrikersVsGoalie\" #@param ['Basic', '3DBall', '3DBallHard', 'GridWorld', 'Hallway', 'VisualHallway', 'CrawlerDynamicTarget', 'CrawlerStaticTarget', 'Bouncer', 'SoccerTwos', 'PushBlock', 'VisualPushBlock', 'WallJump', 'Tennis', 'Reacher', 'Pyramids', 'VisualPyramids', 'Walker', 'FoodCollector', 'VisualFoodCollector', 'StrikersVsGoalie', 'WormStaticTarget', 'WormDynamicTarget']" |
166 |
| - ], |
167 |
| - "execution_count": null, |
168 |
| - "outputs": [] |
| 136 | + "List of available environments:\n", |
| 137 | + "* Basic\n", |
| 138 | + "* ThreeDBall\n", |
| 139 | + "* ThreeDBallHard\n", |
| 140 | + "* GridWorld\n", |
| 141 | + "* Hallway\n", |
| 142 | + "* VisualHallway\n", |
| 143 | + "* CrawlerDynamicTarget\n", |
| 144 | + "* CrawlerStaticTarget\n", |
| 145 | + "* Bouncer\n", |
| 146 | + "* SoccerTwos\n", |
| 147 | + "* PushBlock\n", |
| 148 | + "* VisualPushBlock\n", |
| 149 | + "* WallJump\n", |
| 150 | + "* Tennis\n", |
| 151 | + "* Reacher\n", |
| 152 | + "* Pyramids\n", |
| 153 | + "* VisualPyramids\n", |
| 154 | + "* Walker\n", |
| 155 | + "* FoodCollector\n", |
| 156 | + "* VisualFoodCollector\n", |
| 157 | + "* StrikersVsGoalie\n", |
| 158 | + "* WormStaticTarget\n", |
| 159 | + "* WormDynamicTarget" |
| 160 | + ] |
169 | 161 | },
|
170 | 162 | {
|
| 163 | + "cell_type": "markdown", |
| 164 | + "metadata": {}, |
171 | 165 | "source": [
|
172 | 166 | "### Start Environment with PettingZoo Wrapper"
|
173 |
| - ], |
174 |
| - "cell_type": "markdown", |
175 |
| - "metadata": {} |
| 167 | + ] |
176 | 168 | },
|
177 | 169 | {
|
178 | 170 | "cell_type": "code",
|
| 171 | + "execution_count": null, |
179 | 172 | "metadata": {
|
180 | 173 | "id": "YSf-WhxbqtLw"
|
181 | 174 | },
|
| 175 | + "outputs": [], |
182 | 176 | "source": [
|
183 | 177 | "# -----------------\n",
|
184 | 178 | "# This code is used to close an env that might not have been closed before\n",
|
|
189 | 183 | "# -----------------\n",
|
190 | 184 | "\n",
|
191 | 185 | "import numpy as np\n",
|
192 |
| - "from mlagents_envs.registry import default_registry\n", |
193 |
| - "from pettingzoo_unity import UnityToPettingZooWrapper\n", |
194 |
| - "\n", |
195 |
| - "unity_env = default_registry[env_id].make()\n", |
196 |
| - "env = UnityToPettingZooWrapper(unity_env)" |
197 |
| - ], |
198 |
| - "execution_count": null, |
199 |
| - "outputs": [] |
| 186 | + "from pettingzoo_unity.envs import StrikersVsGoalie # import unity environment\n", |
| 187 | + "env = StrikersVsGoalie.env()" |
| 188 | + ] |
200 | 189 | },
|
201 | 190 | {
|
| 191 | + "cell_type": "markdown", |
| 192 | + "metadata": {}, |
202 | 193 | "source": [
|
203 | 194 | "### Stepping the environment\n",
|
204 | 195 | "\n",
|
205 | 196 | "Example of interacting with the environment in basic RL loop. It follows the same interface as described in [PettingZoo API page](https://www.pettingzoo.ml/api)."
|
206 |
| - ], |
207 |
| - "cell_type": "markdown", |
208 |
| - "metadata": {} |
| 197 | + ] |
209 | 198 | },
|
210 | 199 | {
|
211 | 200 | "cell_type": "code",
|
| 201 | + "execution_count": null, |
212 | 202 | "metadata": {
|
213 | 203 | "id": "dhtl0mpeqxYi"
|
214 | 204 | },
|
| 205 | + "outputs": [], |
215 | 206 | "source": [
|
216 | 207 | "num_cycles = 10\n",
|
217 | 208 | "\n",
|
|
225 | 216 | " else:\n",
|
226 | 217 | " action = env.action_spaces[agent].sample() # randomly choose an action for example\n",
|
227 | 218 | " env.step(action)"
|
228 |
| - ], |
229 |
| - "execution_count": null, |
230 |
| - "outputs": [] |
| 219 | + ] |
231 | 220 | },
|
232 | 221 | {
|
| 222 | + "cell_type": "markdown", |
| 223 | + "metadata": {}, |
233 | 224 | "source": [
|
234 | 225 | "### Additional Environment API\n",
|
235 | 226 | "\n",
|
236 | 227 | "All the API described in the `Additional Environment API` section in the [PettingZoo API page](https://www.pettingzoo.ml/api) are all supported. A few examples are shown below."
|
237 |
| - ], |
238 |
| - "cell_type": "markdown", |
239 |
| - "metadata": {} |
| 228 | + ] |
240 | 229 | },
|
241 | 230 | {
|
242 | 231 | "cell_type": "code",
|
|
281 | 270 | ]
|
282 | 271 | },
|
283 | 272 | {
|
| 273 | + "cell_type": "markdown", |
| 274 | + "metadata": {}, |
284 | 275 | "source": [
|
285 | 276 | "### Close the Environment to free the port it is using"
|
286 |
| - ], |
287 |
| - "cell_type": "markdown", |
288 |
| - "metadata": {} |
| 277 | + ] |
289 | 278 | },
|
290 | 279 | {
|
291 | 280 | "cell_type": "code",
|
| 281 | + "execution_count": null, |
292 | 282 | "metadata": {
|
293 | 283 | "id": "a7KatdThq7OV"
|
294 | 284 | },
|
| 285 | + "outputs": [], |
295 | 286 | "source": [
|
296 | 287 | "env.close()"
|
297 |
| - ], |
298 |
| - "execution_count": null, |
299 |
| - "outputs": [] |
| 288 | + ] |
300 | 289 | }
|
301 |
| - ] |
| 290 | + ], |
| 291 | + "metadata": { |
| 292 | + "colab": { |
| 293 | + "collapsed_sections": [], |
| 294 | + "name": "Colab-UnityEnvironment-1-Run.ipynb", |
| 295 | + "private_outputs": true, |
| 296 | + "provenance": [], |
| 297 | + "toc_visible": true |
| 298 | + }, |
| 299 | + "kernelspec": { |
| 300 | + "display_name": "Python 3 (ipykernel)", |
| 301 | + "language": "python", |
| 302 | + "name": "python3" |
| 303 | + }, |
| 304 | + "language_info": { |
| 305 | + "codemirror_mode": { |
| 306 | + "name": "ipython", |
| 307 | + "version": 3 |
| 308 | + }, |
| 309 | + "file_extension": ".py", |
| 310 | + "mimetype": "text/x-python", |
| 311 | + "name": "python", |
| 312 | + "nbconvert_exporter": "python", |
| 313 | + "pygments_lexer": "ipython3", |
| 314 | + "version": "3.7.8" |
| 315 | + } |
| 316 | + }, |
| 317 | + "nbformat": 4, |
| 318 | + "nbformat_minor": 4 |
302 | 319 | }
|
0 commit comments