Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
software:simulatorgym [2019/02/12 15:10]
mgp3212019
software:simulatorgym [2020/07/03 17:18] (current)
mai ↷ Page moved from simulatorgym to software:simulatorgym
Line 1: Line 1:
 + ​======Le simulateur Gym=======
  
 +=====Présentation de Gym=====
  
-# Le simulateur ​Gym+Gym c’est une boite à outil qui propose plusieurs environnements de simulation pour des algorithmes de renforcement et d’apprentissage.
  
-Présentation de Gym+Gym propose plusieurs types d’environnement qui sont les suivants : 
 +  * Algorithms 
 +  * Atari 
 +  * Box2D 
 +  * Classic control 
 +  * MuJoCo 
 +  * Robotics 
 +  * Toy text
  
-Gym c'est une boite à outil qui propose plusieurs ​environnements ​de simulation pour des algorithmes de renforcement ​et d&#​39;​apprentissage.+Pour des raisons de compatibilités avec l’algorithme d’apprentissage que nous avions, notre intérêt ​cest porté sur les environnements ​Box2D et MuJoCo.
  
-Gym propose plusieurs types d&#​39;​environnement qui sont les suivants :+=====Installation de Gym=====
  
-- Algorithms +Gym est simplement une librairie python qui offre des fonctionnalités. Ainsi, sont installations est simple :
-- Atari +
-- Box2D +
-- Classic control +
-- MuJoCo +
-- Robotics +
-- Toy text+
  
-Pour des raisons de compatibilités avec l&#​39;​algorithme d&#​39;​apprentissage que nous avions, notre intérêt c&#​39;​est porté sur les environnements Box2D et MuJoCo.+<​code>​pip install gym</​code>​
  
-Installation de Gym+Une seconde méthode existe en installant directement le package via git 
 +<​code>​ 
 +git clone https://​github.com/​openai/​gym 
 +cd gym 
 +pip install -e . 
 +</​code>​
  
-Gym est simplement une librairie python qui offre des fonctionnalités. Ainsi, sont installations est simple :+=====Les ​fonctionnalités ​de Gym=====
  
-_pip install gym_+Une fois que l’installation est fait, on peut commencer à s’amuser avec des fonctionnalités de base :
  
-Une seconde méthode existe en installant directement ​le package via git+**gym.make(“environment name”)** : retourne l’environnement dont le nom a été passé en paramètre
  
-_git clone https://​github.com/​openai/​gym +**env.reset()** ​reset l’environnement,​ retourne l’observation initiale
-cd gym +
-pip install -e ._+
  
-Les fonctionnalités ​de Gym+**env.render()** : permet d’afficher la fenêtre ​de simulation.
  
-Une fois que l&#​39;​installation est fait, on peut commencer à s&#​39;​amuser avec des fonctionnalités de base :+**env.step()** ​exécute une action et retourne 4 paramètres (observation,​ reward, done, info)
  
-- **gym.make(&​quot;​environment name&​quot;​)** : retourne l&#​39;​environnement dont le nom a été passé en paramètre 
-- **env.reset()** : reset l&#​39;​environnement,​ retourne l&#​39;​observation initiale 
-- **env.render()** : permet d&#​39;​afficher la fenêtre de simulation. 
-- **env.step()** : exécute une action et retourne 4 paramètres (observation,​ reward, done, info) 
  
 La fonction env.step() prend en paramètre une action et retourne les 4 paramètres suivants : La fonction env.step() prend en paramètre une action et retourne les 4 paramètres suivants :
  
-**observation** : un objet spécifique à l&#39;environnement représentant une observation +**observation** : un objet spécifique à lenvironnement représentant une observation
-- **reward** : un nombre de récompense obtenu par l&#​39;​action précédente +
-- **done** : une valeur booléenne qui indique si il faut reset l&#​39;​environnement ou non +
-- **info** : des informations de diagnostic utile pour le débuggage+
  
-Il est important de noter que ces informations dépendent ​de l&#​39;​environnement dans lequel elles sont définies.+**reward** : un nombre ​de récompense obtenu par l’action précédente
  
-Les actions sont effectuées par un agent, et la suite des évènements peut être représenté à l&#​39;​aide du schéma suivant ​:+**done** ​une valeur booléenne qui indique si il faut reset l’environnement ou non
  
- ​![](data:​image/​*;​base64,​iVBORw0KGgoAAAANSUhEUgAAAPwAAAB6CAYAAACbQj6iAAAT2UlEQVR4nO2de7BWUx/​Hl650Ed2jUKlMIiKXbo4kSXJpxJApTO50DDNmNEpNjJmM4g+TYUpiRqZQGaHckpLoCEUlnHRTipRSkff9rHe+vftsz3Oc03meZ+/​n2b/​PzJ5nP3uvtfbae6/​v+q37rvH3f3GGYSSCGlFHwDCM3GGCN4wEYYI3jARhgjeMBGGCN4wEYYI3jARhgjeMBGGCN4wEYYI3jARhgjeMBGGCN4wEYYI3jARhgjdS8vnnn7sTTjjBHXXUUVFHxcggJnjD/​fDDD/​4XgYthw4b5rbi4OJI4GdnBBG94a44lDwqeY0bhYYIvQBBraWmp69y5cxkRpzqHdR8zZoy35ocddpg777zz/​DHcHH/​88WX8v//​++27Hjh3eDRnEr7/​+6pYvX+4aNGjg3Wn/​tNNOy+n9GhXHBF9gTJw40Yvv8ssvP1gsLyoq8ufY5zgbRXX+A2ugaBNTpkzx4Tz00ENe2LgnbIQuv5wvKSlxzz33nHcXDFvXNOKFCb7ACDayIcrXXnvNiw/​LzoY4ASusYjy//​JdIORa07IiZcwqbcDlG2PgjQ0DoCpeSgAk+npjgCwyEN3XqVC9GhKe6uMQpZN0rAmFI0EA4s2bNOvg/​XG0w4osJvsDAslL0lkVGrAgfUfIbBMsc7nbDfbgOrvq6oI5P/​d7IP0zwBQZilGDV3YaIqVdTnOeYGutkuVUsD4o6CMV31dGB0gKZipF/​mOALDIkREatergyAc8E6vASMmPGD4CnqK6MAZSC4CfolXNyTabCvUoRIVVIwoscEX2AgvmCDWVB0amEPw3EELdQ6H0QZSNhfOLywPyNemOANI0GY4I2D0A+/​b9++Mv3yDMapVauWq169etTRMzKACT4h7Nq1y/​38889+UwPdb7/​95vbs2eN/​9+7d6/​bv3++aNGnidu7c6f0gdkbObd261Ysf4R955JHu8MMPd/​Xr13dHH320/​9+4cWO/​NWrUKOK7NP4NE3wB8ssvv7j169e7DRs2+A2x79692wsSQSPONm3aeLFSD69du7bfEHQ6Dhw44K0/​GQQZAhthbtmyxa1du9ZnJLipU6eOO+aYY1zLli191x3XM+KDCb4AQISrV6/​2wmPD+iLkY4891p1//​vn+F0FXhWrVqnnLzoZlT4cymY0bN7qFCxf6uLVt29a1b9/​enXTSSd6/​ER0m+DyFSSwrVqzw2+bNm72YsNoIvDxBZhsyFzZBSeC7775zP/​74o5szZ45r0aKF69Spk2/​xN/​HnHhN8nkH/​9rJly3zxmmJznz59XOvWraOOVloobTAzj23AgAFe/​N9++60bP368z6C6du3qrb+RG0zweQB18sWLF/​vtlFNO8dNTKSbnI4icrW/​fvm7lypVu6dKlbvbs2f6eEL+RXUzwMWbdunXuww8/​9PXhnj17+kEthdQ91rFjR79t377dLViwwL399tu+StKtW7eoo1awmOBjyKZNm3ziR9xdunRx1113XdRRyioNGzb0w3z79evn5s+f7x599FHXv39/​d+qpp0YdtYLDBB8j6OaaO3eut+gUeTt06BB1lHIKjXjU83v16uWFv2TJEjd48GA/​FsDIDCb4mPDBBx/​4bqwrrrjCDRo0KOroRArjA6688ko/​cWfSpEmuR48ernv37lFHqyAwwUcMA2RmzJjh67IjR46MOjqxgkk8999/​v3v33Xf9TL3KLNphpMYEHyHz5s3zXVQkZFv/​PT29e/​d2a9ascaNHj3a33367a9asWdRRyltM8BHwxx9/​uMmTJ3urftttt0UdnbygXbt27sEHH3TPPPOMH3vAf6PymOBzzPfff++mTZvmbr31Vte0adOoo5NX1KhRw2eQFO/​r1avnR+0ZlcMEn0M+/​vhj9+WXX7pRo0ZFHZW8hiqQGvMYpmtUHBN8jnjrrbf8dNPhw4dHHZWCgBISJSWsPvMIjIphgs8BrCXH4BL6l43Mcf3117vnn3/​eF++ZV2D8Oyb4LMPgEeahMzTWyDyInsa8cePG+f9MzeUYXXnGPzHBZxEse926dd2FF14YdVQKFqpJt9xyi//​4xtChQ90XX3zhB+wwZbh58+ZRRy92mOCzBENDGTFGH7KRHZh0wzNu1aqVX8Vn0aJFbvr06X6tAObfm+D/​iQk+CzDl86+//​vL9xUb2YDUdptXSNsIY/​JdeeslbeDKCVatW2XTbFJjgMwwz3ai333nnnVFHpeBhZZ3HHnvMF+Wfeuopv5AGawfAJ5984oYMGRJxDOOHCT7DPP300zYmPodcdNFF7pVXXnF33323++yzzw4e/​+qrryKMVXwxwWcQipS0ENesWTPqqCQKFsyYOXOmGzhwoC/​Sw7Zt27y1j3J9vzhigs8QJSUlfhBIvi49le+wJDbft6ORlHX/​qMfTcGeCL4sJPgPQQPfqq6+6sWPHRh2VRIO4aTC99NJL3ZtvvukFb6vmlMUEnwGoL1ojXTyglMWqQRdccIEfznzJJZdEHaVYYYLPACzBbMQLxkHQNWeUxQRvFCSMwLNJNf/​EBG8YCSLRgucLqra0lJEkEit4Jljw0QNWoDGMpJBYwdNny8AM+mz5sGG2rwVFRUVZvU4c4Ws51KdTwTj4qjwTSmhk3Nl+f4VEYgVPYuFrJ6yPNnHixKxei0TJkstJBMEjajb2BVOHyQirInj8EyaZdj5S1fs/​FBIpeAmQ7Z577kkpeDIC1e/​JHNiKi4v9L4mVc2y8MNyWlpa6yy67zIcNhI3l4RzXIHPhYxMstWw4/​zz0rKoSBlu+QjoywecAclZ91IDfcE6LsPlPYuJXGQJi578sCucRNmFw/​O+///​YWB3eInQTNOUTPjK4kFulTwTNik1h5/​mSePLPgPs9x+fLl/​lNTHONZ8+yV2bJPdYGqAc+aTJchtqB3ADoHuA0eYwwFbrVPuMHrck3t650G3QqO447rh+OuMDinkh5pCgPAFjyebRIpeBIKDxpOP/​10L8igGDmvxMhxEiGZgIqnQtZdRVUlMBKCEpjxP3gePHOsmr4Vp0SOOJQB6DkjIJ4vcxR4xvgD3gXnlLHyaS4yWmB4s87xXjmOe/​wiMN6rMmCYMGGCf2dcFwEHM3Mac/​GjeClTx33YLeGzj1vClkFR3BWG7k/​phPgp7rkicYJXcV4PmmL4mDFjyrhR8VsWR4kNSGRqhON8MGe2Lr70YMWwrhJhEJ43wg02brIvgQSrXDxvjslf8LjaZHgver8IT1UHjvOO9NkqWeJgRq30wXmuo2twLFgyxK1KhrhT3PUVIQlbbUW6vvwoLlakzzJBiwxqTELUwZfLCyHXVn1dx2V5RGUbjKJoqIkT3LsEWNEeEsSj94aAyiOYARN+uKQloQaFGyTYwBqOW6pit6oD+NN9BdNX3BprEyN4XgxWe9asWV7YepkkCop/​LILIbCusEG6x+rwsWXpKAqrvS7RkBsoYWEeNepr+A34JTw1U+ItbAogCiU3PryLucafW/​oqSLuxMvgNlGLLY5V03HbnoGhaJETxQd6TeFkYt5xQDETsvgEY2gXWhz171P4Srer8aksLhvvfeeweLlVgoVQtM8P+DZ1Ze6ShoyYO9Iap//​5sfMWLECF8lCPawhKsUFQ0rHaQf4qWqhur+5UE60DVyOZYgMYJPV18KP2glwqBb/​Abr8eFwwmGkuk4+dx9VBWWMKkpDsL4rN4hG3VRqiQ9Wf1J9Klr+VHJSkTroD/​Gp0Q5URQt2Cao4rmu3bt3aZ9hqSyBstd4H3XKOd68qoTIjZS5Bd+GqhvwRr1xW8RIj+IqioiMvgqI+rbW8OOXeRuVIJdRwAg+7SfWsU4miIv4gVWaLAMN17eA1ygs77DbdNcJhhK1+FEbABJ+C4ItQv61hFAImeMNIECZ4w0gQJnijYOHLstdcc42rVatW1FGJDSZ4oyB54403XJs2bUzsIUzwGeCnn37yluTll192TZo0iTo6iWfLli1u9erV1rOSAhN8BmjWrJn7/​fffXd++fd2LL77oOnbsGHWUEg1r0l911VVRRyOWmOAzxBlnnOEmTZrkv3XGr62HHg2sRU8/​OR+aNP6JCT5DnHPOOV7o69ev9x+l+Prrr919990XdbQSxZo1a9zGjRvdDTfcEHVUYosJPkN06tTJtWrVyn/​eiJF5TL5h/​P3DDz8cddQSAZ/​7mj17trv33nujjkqsMcFnCMZfM9sOwdetW9ft2rXLPfnkk97S8zljI7uMHz/​e3XHHHVFHI/​aY4DNEw4YND7bQn3zyya5Pnz6+eM935xieqxV2jMzDvIdrr73W1a9fP+qoxB4TfAY599xz3TvvvOOGDBni9u/​f7xevZJaVrX2fPZ599ll30003mdgriAk+g/​Ts2dM1atTI/​7Zo0cLNmTPHNyC1a9cu6qgVJNOmTXPdu3c3sVcCE3wGoR6P0Dt06OCOOOIIP72WwTiDBw+OOmoFB8+1a9eu9sHISmKCzyAInoUQEDswt55RX4sWLXLdunWLOHaFAasIPf74427gwIFWcjoETPAZpEaNGq5t27ZljjH6juWTly5d6i2ScegwhJmeD7reaCQ1Ko8JPgewBPPMmTN9gh0wYEDU0clLFi5c6FauXGnjGqqICT5HDBo0yC1btszNnTvXXXzxxVFHJ69gmmvjxo3dzTffHHVU8h4TfA7p0qWLt1TTp093V199ddTRiT0s9vj666/​7iTA0hBpVxwSfY3r06OGnbrKgIV12+haa8X927tzpZsyY4erVq+dGjhyZ9nPTRuUxwUdA+/​bt3QMPPOCXNT7xxBNd7969o45SbGDhirVr17p+/​fpZK3wWMMFHBCuxUCf96KOP3Lhx43zDHkNyk8qSJUv8V4H69+/​v7rrrrqijU7CY4COGkWLU7em6+/​TTT12vXr18f34SOHDgwMFPd3HfjzzySNRRKnhM8DGAgTpM/​mBa7bx581y1atV8Mb9Qhb9582Zv0ZlYdPbZZ7tRo0b5MQxG9rGnHCNYqWX48OG+DrtgwQJfxGWE3llnnRV11KoM89VXrFjhFi9e7Pbu3euFzgc6jdxigo8hjNZj07Bciro0YHXu3Nk3+OULf/​75p/​vmm2989xo9E2eeeaZvjLOeiegwwceYpk2b+s9eYQn5FDXiZ802Fs2kX5qJI7Vr1446mmVgNOGqVau8wFkMhIZI2iiYMmxEjwk+D6Afmok4bHv27PGCYps/​f75v7T/​uuOO81WRj1Z1cQX85pZDS0lK3bt06/​8syXywgSRsE68Ib8cIEn2fQwCfxAw1gCA2LSv2Y/​5QAEB7zxFmAg0yAX/​xW5sMM+/​btc7t37/​bbtm3b/​CeQWadv+/​btbsOGDb5xkUyGkgi9DTQ82ocf4o0JPs9p3ry532gEA+rNiH7r1q1+IyNAqHSBUdym8QzhM4qNY9WrV3d16tTxJQf8srEm36ZNm3zJgn2W7qLqQMaBuFmwk0yFc0Z+YYIvMOjeatmypd9SgeCx2LSUs4/​o2RA34q9Zs6YPg0yBfaOwMMEnDERNUd+WhUomJnjDSBAm+AzCZBga0IYOHeoH0cQZ6vU05CUFRjFOnTrVLxleVFQUdXQiwwSfQYYNG+Zbz0lUcRI8iT0YH8auE1eOJwXunx4F7t0Eb2SMOFpNSh7MvxckeBJ+0kD0ScrkUmGCrwKIBoueSuQUmSF8Dj+ytmGrGw5LljlsocuLD+6CbhnWWlFxp4pD8D4qGo8gXJ8ww345TpiHUhJKdZ+Q7nnpHgwT/​CHBUtQkIiwl+0ARWWBRi4uLfcIjYWNdca/​jJFg+j4Rfzus4xzSoBj8Igmtw7oUXXvBfWcEv7jmOG/​yPHTvWf78Od4TJdTnHL2HqPyIgnuzzsUuWfAbCxB/​HCRsISyUD/​HA97iHopjx0Td0/​8WDjnvSfcHSPHNO9ERc29okzw4v1HMJ+VTUJPy/​C4j/​7+GefuCQdE3wlCSZkUL2dhCaromNsSsScYzw84FZFSxKjrB3h4of/​EiaJG78cZ3msoGXjGAkaISoM/​HE+KHDFWUjwIlifl0CIo45LSMBCHRURvK7NRnjEVeLlGhIjx3GjzI7rsD3xxBMHSxvEV88J5Dd4v/​wGM02O8Z+w8AtJrMaEMcFXEgkrCAkMi0QCC6NzslgMcCEBjh492ouJVn0SqUhVxNUwWiBhy/​KqpZ0taEEr044QrGKE46zrBq9fWcLVF6b8si/​xsa/​7CJaYeD7sS6yKh0SN+x07dpS5lu5b1wr7N0zwlSaVmBBuuoSlxIwbhKoiK8KVxQpa339DVlFWEwhPVQSuJQscbqBSfTp8P+E6Lv+z1ctAS7lKEGE4LpFyn6om6VeZpjIFFgFVfFMRxwbUqDHBVxLVZSVkJbZgAg4mQIkR8ak7jAQtUY4YMaKMJcJtqpKCCNZ5lfARMscUH32amusFM6JUwlCxOZgZaNmpdH4EbrDYEyZMSOsmjOrXel48B9WxJXT9D19fbnW8QYMGB+8/​FTzr4LWSNvYgFSb4Q0CNbureUgMSKLFyXA1WqpfLrxq/​QEVxiRf/​ZA6y1rgLlwBIyEEhqL4vkU6ZMsX/​Vz1XllNx5BxjBRS2LCdhqgFPJQWVTLD4/​OJPxWooKSlJ+YzS3YP86pmFewXUQKj9YElDDYZ6hsocb7zxRjd58uS019KzBfVaJLUv3gR/​CChhQTjhBK1z8FxwSmuYVBY9WK8PE76mxJiOcPjhDESNYOGw1eiWzp8a9lJBnNLdQ3klmOA1wtUknl+6MCtyLavPm+CNKmD92/​mHCd6oEuksvBFPTPDGIZP0BrB8xARvGAnCBG8YCcIEbxgJwgRvGAnCBG8YCeI/​Y+vBi3KGnjAAAAAASUVORK5CYII=)+**info** : des informations de diagnostic utile pour le débuggage
  
-Les environnements de Gym 
  
-Gym propose plusieurs type d&#39;environnement ​et plusieurs environnements par type.+Il est important de noter que ces informations dépendent de l’environnement ​dans lequel elles sont définies.
  
-Au début, notre choix était porté vers l&#​39;​environnement CarRacing-v0,​ avec la vue de dessus mais il c&#​39;​est avéré que les observations retournés étaient au format image avec un tableau 96x96x3 de nombre correspondant à des couleurs 
  
-Une autre solution était l&#​39;​installation ​de MuJoCo, mais cette dernière à posé des soucis et n&#​39;​as pas pu être faite sur les machines de l&#​39;​école.+=====Les environnements ​de Gym=====
  
-Donc au finall&#​39;​environnement le plus adapté suivant toutes nos contraintes ​était l&#39;environnement ​BipedalWalker-v2malgré le fait que la vue soit de côté, ​les observations ​conviennent bien à l&#​39;​algorithme d&#​39;​apprentissage.+Gym propose plusieurs type d’environnement et plusieurs environnements par type. 
 +Au débutnotre choix était ​porté vers lenvironnement ​CarRacing-v0avec la vue de dessus mais il c’est avéré que les observations ​retournés étaient au format image avec un tableau 96x96x3 de nombre correspondant ​à des couleurs
  
-Notre développement+Une autre solution était l’installation de MuJoCo, mais cette dernière à posé des soucis et n’as pas pu être faite sur les machines de l’école.
  
-Pour le codenous avons chacun développez un code qui fait l&#​39;​interface entre l&#39;algorithme d&#39;apprentissage ​et le simulateurPour avoir une interface commune nous avons créez une classe abstraite dont nous héritons et implémentons les méthodes. De ce fait, nous utilisons les mêmes noms de méthodes pour chaque simulateur mais leur implémentations est différentes+Donc au final, l’environnement ​le plus adapté suivant toutes nos contraintes était l'​environnement BipedalWalker-v2malgré le fait que la vue soit de côté, les observations conviennent bien à lalgorithme dapprentissage.
  
-La difficulté a été de trouver les points qu&#​39;​on pouvait mettre en commun entre les différents simulateurs,​ au niveau des fonctionnalités disponibles des simulateurs et des valeurs d&#​39;​entrées et de sorties des méthodes.+=====Notre développement=====
  
-Au finalconcernant Gym, j&#​39;​ai réussi à convertir ​l&#​39;​environnement ​et ses données, en type Entity ​et ses Property, comme voulu à la base.+Pour le codenous avons chacun développez un code qui fait l’interface entre l’algorithme d’apprentissage ​et le simulateur. Pour avoir une interface commune nous avons créez une classe abstraite dont nous héritons ​et implémentons les méthodesDe ce fait, nous utilisons les mêmes noms de méthodes pour chaque simulateur mais leur implémentations est différentes
  
-Utilisation du simulateur Gym+La difficulté a été de trouver les points qu’on pouvait mettre en commun entre les différents simulateurs,​ au niveau des fonctionnalités disponibles des simulateurs et des valeurs d’entrées et de sorties des méthodes.
  
 +Au final, concernant Gym, j’ai réussi à convertir l’environnement et ses données, en type Entity et ses Property, comme voulu à la base.
 +
 +=====Utilisation du simulateur Gym=====
 **class Environment()** : Cette classe hérite de notre interface commune et implémente ses méthodes **class Environment()** : Cette classe hérite de notre interface commune et implémente ses méthodes
  
-**def loadEnvironment()** : Cette méthode charge l&#39;environnement dont le nom a été spécifié dans le constructeur de la classe et retourne un objet de type environment correspondant+**def loadEnvironment()** : Cette méthode charge lenvironnement dont le nom a été spécifié dans le constructeur de la classe et retourne un objet de type environment correspondant
  
 **def startSimulation()**:​ lance une simulation avec 100 timesteps par défaut **def startSimulation()**:​ lance une simulation avec 100 timesteps par défaut
  
-**def resetSimulation()**:​ termine la simulation prématurément+**def resetSimulation()**:​ termine la simulation prématurément ​
  
-**def getListObject()**:​ affiche la liste des propriétés de l&#39;entité+**def getListObject()**:​ affiche la liste des propriétés de lentité
  
 **def getSimulationTime()** : Affiche le temps passer depuis le lancement du script **def getSimulationTime()** : Affiche le temps passer depuis le lancement du script
  
-**class GymSimulator():** classe héritant de la classe Entity et par conséquent,​ implémente ses méthodes+**class GymSimulator()**classe héritant de la classe Entity et par conséquent,​ implémente ses méthodes
  
-**def getFormat():** affiche les formats de données des actions et des observations+**def getFormat()**affiche les formats de données des actions et des observations
  
-**class BipedalWalker():** classe fille de GymSimulator() pour l&#39;environnement BidepalWalker+**class BipedalWalker()**classe fille de GymSimulator() pour lenvironnement BidepalWalker
  
-**class CarRacing()**:​ classe fille de GymSimulator() pour l&#39;environnement CarRacing+**class CarRacing()**:​ classe fille de GymSimulator() pour lenvironnement CarRacing
  
 **def move()**: envoie une action au simulateur et retourne les résultats de cette action **def move()**: envoie une action au simulateur et retourne les résultats de cette action
  
-**if \_\_main\_\_==&​quot;​\_\_main\_\_&​quot;​** :+**if __main__==”__main__”**:
  
-Fonction d&#39;exemple d&#39;utilisation avec l&#39;environnement BipedalWalker,​ 100 timesteps, une affiche de l&#39;environnement dans une fenêtre et toutes les actions effectués d&#39;un coup.+Fonction dexemple dutilisation avec lenvironnement BipedalWalker,​ 100 timesteps, une affiche de lenvironnement dans une fenêtre et toutes les actions effectués dun coup. 
  
-Pour avoir un mode interactif action par action, passer le paramètre ​**self.interactiveMode** à True ligne 16+Pour avoir un mode interactif action par action, passer le paramètre self.interactiveMode à True ligne 16
  
-Pour avoir un mode sans l&#39;affichage de la fenêtre, passer le paramètre ​**self.displayMode** à False ligne 75+Pour avoir un mode sans laffichage de la fenêtre, passer le paramètre self.displayMode à False ligne 75
  
-Pour changer le nombre de **Timesteps** changer la valeur de n, ligne 28.+Pour changer le nombre de Timesteps changer la valeur de n, ligne 28.
  
 Exemple de code Exemple de code
 +<​code>​
 +#​!/​usr/​bin/​env python
 +# coding: utf-8
  
-| #​!/​usr/​bin/​env python# coding: utf-8#import des librairies ​nécessairesimport gymimport refrom ​gym import ​envsfrom ​random import randint#​Récupération de l&#​39;​environnement#​Ici on récupère l&#​39;​environnement CarRacing-v0env = gym.make(&#​39;​CarRacing-v0&#​39;​) #Liste les environnements disponiblesfor i in envs.registry.all(): ​          ​print(i)#​Récupération des formats de données de action et observationprint(&​quot;​Actions : &​quot;​+str(self.env.action\_space))print(&​quot;​Observations : &​quot;​+str(self.env.observation\_space))#​Remise à zéro de l&#​39;​environnementenv.reset()#​Pour 1000 timestepsfor t in range(1000): ​           #on affiche la fenêtre de simulation ​   env.render() ​           #on récupère une action aléatoire possible pour l&#​39;​environnement ​   action = env.action\_space.sample() ​       #on exécute l&#​39;​action et on récupère les informations ​   observation,​ reward, done, info = env.step(action) ​            #on affiche les informations ​   print(&​quot;​action : &​quot;​+str(action)) ​   print(&​quot;​reward : &​quot;​+str(reward)) ​   print(&​quot;​done : &​quot;​+str(done)) ​   print(&​quot;​info : &​quot;​+str(info)) ​            #si il y a une réussite ou une erreur, on arrête la simulation ​   if (done == 1):                 break | +#import des librairies ​nécessaires 
-| --- |+import ​gym 
 +import ​re 
 +from gym import envs 
 +from random import randint
  
-Ci-dessous notre classe abstraite :+#​Récupération de l'​environnement 
 +#Ici on récupère l’environnement CarRacing-v0 
 +env = gym.make('​CarRacing-v0'​)
  
-| class scene: ​#Gasebo param is null        #Vrep param is the port connection ​       #Gym  param is the name of the environment loaded def \_\_init\_\_(self, param = None):     pass def startSimulation(self):     pass def pauseSimulation(self): ​    pass def resetSimulation(self,​ onlyWorld = None): ​    pass def getListObject(self): ​    pass #Vrep param is the path to find the scene #Gym  param is null def loadEnvironment(self,​ param = None): ​    pass def getSimulationTime(self): ​    pass | +#Liste les environnements disponibles 
-| --- |+for i in envs.registry.all(): 
 +           print(i)
  
 +#​Récupération des formats de données de action et observation
 +print("​Actions : "​+str(self.env.action_space))
 +print("​Observations : "​+str(self.env.observation_space))
 +
 +#Remise à zéro de l'​environnement
 +env.reset()
 +
 +#Pour 1000 timesteps
 +for t in range(1000):​
 +            #on affiche la fenêtre de simulation
 +       ​env.render()
 +            #on récupère une action aléatoire possible pour l’environnement
 +       ​action = env.action_space.sample() ​      
 +       #on exécute l’action et on récupère les informations
 +       ​observation,​ reward, done, info = env.step(action)
 +             #on affiche les informations
 +       ​print("​action : "​+str(action))
 +       ​print("​reward : "​+str(reward))
 +       ​print("​done : "​+str(done))
 +       ​print("​info : "​+str(info))
 +             #si il y a une réussite ou une erreur, on arrête la simulation
 +       if (done == 1):
 +                    break
 +</​code>​
 +
 +Ci-dessous notre classe abstraite :
 +<​code>​
 +class scene:
 +    #Gasebo param is null
 +    #Vrep param is the port connection
 +    #Gym  param is the name of the environment loaded
 +    def __init__(self,​ param = None):
 +        pass
 +    def startSimulation(self):​
 +        pass
 +    def pauseSimulation(self):​
 +        pass
 +    def resetSimulation(self,​ onlyWorld = None):
 +        pass
 +    def getListObject(self):​
 +        pass
 +    #Vrep param is the path to find the scene
 +    #Gym  param is null
 +    def loadEnvironment(self,​ param = None):
 +        pass
 +    def getSimulationTime(self):​
 +        pass
 +</​code>​
  
 +=====Documentation=====
 +Le simulateur Gym est dépendant des environnements qui existent, si vous ne trouvez pas d’environnements qui vous conviennent,​ il est possible de créer son propre environnement. Je n’ai pas eu l’occasion d'​approfondir cette partie donc voici la documentation associé : https://​github.com/​openai/​gym/​tree/​master/​gym/​envs#​how-to-create-new-environments-for-gym
  
-Documentation+Documentation ​de gym : https://​gym.openai.com/​docs/​ 
 +Code de car_racing.py : https://​github.com/​openai/​gym/​blob/​master/​gym/​envs/​box2d/​car_racing.py 
 +Git de gym : https://​github.com/​openai/​gym
  
-Le simulateur Gym est dépendant des environnements qui existent, si vous ne trouvez pas d&#​39;​environnements qui vous conviennent,​ il est possible de créer son propre environnement. Je n&#​39;​ai pas eu l&#​39;​occasion d&#​39;​approfondir cette partie donc voici la documentation associé : [https://​github.com/​openai/​gym/​tree/​master/​gym/​envs#​how-to-create-new-environments-for-gym](https://​github.com/​openai/​gym/​tree/​master/​gym/​envs#​how-to-create-new-environments-for-gym) 
  
-Documentation de gym :​[https://​gym.openai.com/​docs/​](https://​gym.openai.com/​docs/​) 
-Code de car\_racing.py : https://​github.com/​openai/​gym/​blob/​master/​gym/​envs/​box2d/​car\_racing.py 
  
-Git de gym :​[https://​github.com/​openai/​gym](https://​github.com/​openai/​gym) 
  
  
  • software/simulatorgym.1549984214.txt.gz
  • Last modified: 2019/04/25 14:08
  • (external edit)