Exercice 1: Importer la bibliothèque Gymnasium¶
- Objectif : Exécuter 100 actions aléatoires et afficher les observations et les récompenses.
In [7]:
import gymnasium as gym
# Créer l'environnement CartPole
env = gym.make("CartPole-v1", render_mode="human")
env.reset()
# Afficher les espaces d'action et d'observation
print(f"Espace d'actions : {env.action_space}")
print(f"Espace d'observations : {env.observation_space}")
# Exercice 1 : Exécution d'actions aléatoires
print("\nExercice 1 : Exécution d'actions aléatoires")
for _ in range(100):
action = env.action_space.sample() # Action aléatoire
observation, reward, done, _, _ = env.step(action)
print(f"Action : {action}, Observation : {observation}, Récompense : {reward}")
if done:
env.reset()
env.close()
Espace d'actions : Discrete(2) Espace d'observations : Box([-4.8 -inf -0.41887903 -inf], [4.8 inf 0.41887903 inf], (4,), float32) Exercice 1 : Exécution d'actions aléatoires Action : 0, Observation : [-0.03829468 -0.17155358 0.03780995 0.28324544], Récompense : 1.0 Action : 1, Observation : [-0.04172575 0.02300925 0.04347486 0.00272325], Récompense : 1.0 Action : 0, Observation : [-0.04126557 -0.17270836 0.04352933 0.30879986], Récompense : 1.0 Action : 0, Observation : [-0.04471973 -0.36842263 0.04970533 0.61488676], Récompense : 1.0 Action : 1, Observation : [-0.05208819 -0.17402914 0.06200306 0.338264 ], Récompense : 1.0 Action : 0, Observation : [-0.05556877 -0.36997607 0.06876834 0.64983684], Récompense : 1.0 Action : 1, Observation : [-0.06296829 -0.17587599 0.08176508 0.37957683], Récompense : 1.0 Action : 1, Observation : [-0.06648581 0.0179954 0.08935662 0.11375346], Récompense : 1.0 Action : 1, Observation : [-0.0661259 0.2117309 0.09163168 -0.14945449], Récompense : 1.0 Action : 1, Observation : [-0.06189128 0.4054294 0.08864259 -0.41188127], Récompense : 1.0 Action : 1, Observation : [-0.05378269 0.59919024 0.08040497 -0.67535466], Récompense : 1.0 Action : 0, Observation : [-0.04179889 0.4030485 0.06689788 -0.3584789 ], Récompense : 1.0 Action : 1, Observation : [-0.03373792 0.5971588 0.05972829 -0.62933975], Récompense : 1.0 Action : 1, Observation : [-0.02179474 0.7913986 0.0471415 -0.90263027], Récompense : 1.0 Action : 0, Observation : [-0.00596677 0.5956708 0.02908889 -0.5955103 ], Récompense : 1.0 Action : 1, Observation : [ 0.00594664 0.79037386 0.01717869 -0.8788904 ], Récompense : 1.0 Action : 1, Observation : [ 2.1754121e-02 9.8525822e-01 -3.9911919e-04 -1.1661235e+00], Récompense : 1.0 Action : 0, Observation : [ 0.04145928 0.79014146 -0.02372159 -0.87356573], Récompense : 1.0 Action : 1, Observation : [ 0.05726212 0.9855778 -0.0411929 -1.1736113 ], Récompense : 1.0 Action : 0, Observation : [ 0.07697367 0.79101473 -0.06466513 -0.8941215 ], Récompense : 1.0 Action : 1, Observation : [ 0.09279396 0.98695123 -0.08254756 -1.2064103 ], Récompense : 1.0 Action : 0, Observation : [ 0.11253299 0.79298717 -0.10667577 -0.94069636], Récompense : 1.0 Action : 0, Observation : [ 0.12839274 0.59945214 -0.1254897 -0.6833472 ], Récompense : 1.0 Action : 0, Observation : [ 0.14038178 0.40627548 -0.13915664 -0.43265802], Récompense : 1.0 Action : 1, Observation : [ 0.14850728 0.60306513 -0.1478098 -0.7657691 ], Récompense : 1.0 Action : 1, Observation : [ 0.1605686 0.79987955 -0.16312517 -1.1010697 ], Récompense : 1.0 Action : 1, Observation : [ 0.17656618 0.99672765 -0.18514657 -1.4401684 ], Récompense : 1.0 Action : 0, Observation : [ 0.19650073 0.8043054 -0.21394995 -1.2105906 ], Récompense : 1.0 Action : 1, Observation : [-0.00344931 0.2112489 -0.03607408 -0.3462269 ], Récompense : 1.0 Action : 0, Observation : [ 0.00077566 0.01665817 -0.04299862 -0.06513416], Récompense : 1.0 Action : 1, Observation : [ 0.00110883 0.21236938 -0.0443013 -0.37106735], Récompense : 1.0 Action : 1, Observation : [ 0.00535621 0.4080918 -0.05172265 -0.67738324], Récompense : 1.0 Action : 1, Observation : [ 0.01351805 0.6038928 -0.06527031 -0.98589164], Récompense : 1.0 Action : 0, Observation : [ 0.02559591 0.40970284 -0.08498815 -0.7144028 ], Récompense : 1.0 Action : 1, Observation : [ 0.03378996 0.60589206 -0.0992762 -1.032581 ], Récompense : 1.0 Action : 1, Observation : [ 0.0459078 0.8021843 -0.11992782 -1.3547088 ], Récompense : 1.0 Action : 1, Observation : [ 0.06195149 0.9985898 -0.147022 -1.6823753 ], Récompense : 1.0 Action : 1, Observation : [ 0.08192328 1.195077 -0.1806695 -2.0169952 ], Récompense : 1.0 Action : 1, Observation : [ 0.10582483 1.3915566 -0.2210094 -2.359746 ], Récompense : 1.0 Action : 1, Observation : [-0.01536977 0.19826908 0.00832038 -0.33862817], Récompense : 1.0 Action : 1, Observation : [-0.01140439 0.39327165 0.00154782 -0.62867576], Récompense : 1.0 Action : 0, Observation : [-0.00353895 0.19812813 -0.0110257 -0.33550575], Récompense : 1.0 Action : 0, Observation : [ 0.00042361 0.00316482 -0.01773581 -0.04632004], Récompense : 1.0 Action : 1, Observation : [ 0.00048691 0.19853655 -0.01866221 -0.34454557], Récompense : 1.0 Action : 1, Observation : [ 0.00445764 0.39391893 -0.02555312 -0.6430545 ], Récompense : 1.0 Action : 0, Observation : [ 0.01233601 0.19916229 -0.03841421 -0.3585267 ], Récompense : 1.0 Action : 1, Observation : [ 0.01631926 0.39480868 -0.04558475 -0.6630708 ], Récompense : 1.0 Action : 0, Observation : [ 0.02421543 0.20034958 -0.05884616 -0.38508242], Récompense : 1.0 Action : 0, Observation : [ 0.02822243 0.00611027 -0.06654781 -0.11151858], Récompense : 1.0 Action : 1, Observation : [ 0.02834463 0.20211957 -0.06877819 -0.42443237], Récompense : 1.0 Action : 1, Observation : [ 0.03238702 0.39814496 -0.07726683 -0.7379801 ], Récompense : 1.0 Action : 0, Observation : [ 0.04034992 0.20417029 -0.09202643 -0.47058004], Récompense : 1.0 Action : 1, Observation : [ 0.04443333 0.40046346 -0.10143804 -0.7907915 ], Récompense : 1.0 Action : 0, Observation : [ 0.0524426 0.20686978 -0.11725386 -0.5316654 ], Récompense : 1.0 Action : 0, Observation : [ 0.05657999 0.01357536 -0.12788717 -0.2781083 ], Récompense : 1.0 Action : 1, Observation : [ 0.0568515 0.21026774 -0.13344933 -0.60823387], Récompense : 1.0 Action : 1, Observation : [ 0.06105686 0.40697807 -0.14561401 -0.93979365], Récompense : 1.0 Action : 0, Observation : [ 0.06919642 0.21408717 -0.16440989 -0.69617873], Récompense : 1.0 Action : 1, Observation : [ 0.07347816 0.41106126 -0.17833346 -1.0357747 ], Récompense : 1.0 Action : 0, Observation : [ 0.08169939 0.21870023 -0.19904895 -0.80396175], Récompense : 1.0 Action : 0, Observation : [ 0.08607339 0.02678251 -0.2151282 -0.579904 ], Récompense : 1.0 Action : 0, Observation : [ 0.01875673 -0.20278591 -0.0116056 0.25815532], Récompense : 1.0 Action : 1, Observation : [ 0.01470101 -0.00750021 -0.00644249 -0.03816547], Récompense : 1.0 Action : 0, Observation : [ 0.01455101 -0.20252919 -0.0072058 0.25247785], Récompense : 1.0 Action : 1, Observation : [ 0.01050043 -0.00730509 -0.00215624 -0.04246919], Récompense : 1.0 Action : 1, Observation : [ 0.01035432 0.18784772 -0.00300562 -0.33583164], Récompense : 1.0 Action : 1, Observation : [ 0.01411128 0.38301232 -0.00972226 -0.6294609 ], Récompense : 1.0 Action : 1, Observation : [ 0.02177153 0.5782686 -0.02231148 -0.92518973], Récompense : 1.0 Action : 1, Observation : [ 0.0333369 0.7736847 -0.04081527 -1.2247999 ], Récompense : 1.0 Action : 1, Observation : [ 0.04881059 0.9693078 -0.06531127 -1.5299865 ], Récompense : 1.0 Action : 1, Observation : [ 0.06819674 1.1651536 -0.095911 -1.8423169 ], Récompense : 1.0 Action : 0, Observation : [ 0.09149982 0.9712118 -0.13275734 -1.5808958 ], Récompense : 1.0 Action : 1, Observation : [ 0.11092405 1.1676408 -0.16437525 -1.9118627 ], Récompense : 1.0 Action : 1, Observation : [ 0.13427687 1.3641094 -0.2026125 -2.2507024 ], Récompense : 1.0 Action : 1, Observation : [ 0.16155906 1.5604819 -0.24762656 -2.598397 ], Récompense : 1.0 Action : 0, Observation : [ 0.01363726 -0.16612595 0.0006612 0.301534 ], Récompense : 1.0 Action : 1, Observation : [0.01031474 0.02898656 0.00669188 0.00905967], Récompense : 1.0 Action : 1, Observation : [ 0.01089447 0.22401191 0.00687307 -0.2815044 ], Récompense : 1.0 Action : 0, Observation : [0.01537471 0.0287926 0.00124298 0.01333832], Récompense : 1.0 Action : 1, Observation : [ 0.01595056 0.2238967 0.00150975 -0.27895218], Récompense : 1.0 Action : 0, Observation : [ 0.0204285 0.02875324 -0.00406929 0.01420654], Récompense : 1.0 Action : 0, Observation : [ 0.02100356 -0.16631012 -0.00378516 0.3056028 ], Récompense : 1.0 Action : 1, Observation : [0.01767736 0.02886557 0.00232689 0.01172852], Récompense : 1.0 Action : 0, Observation : [ 0.01825467 -0.16628967 0.00256146 0.3051447 ], Récompense : 1.0 Action : 1, Observation : [0.01492888 0.02879568 0.00866436 0.0132707 ], Récompense : 1.0 Action : 0, Observation : [ 0.01550479 -0.16644944 0.00892977 0.3086747 ], Récompense : 1.0 Action : 1, Observation : [0.0121758 0.02854414 0.01510327 0.01882129], Récompense : 1.0 Action : 1, Observation : [ 0.01274668 0.22344626 0.01547969 -0.26905838], Récompense : 1.0 Action : 0, Observation : [0.01721561 0.02810687 0.01009852 0.02846647], Récompense : 1.0 Action : 1, Observation : [ 0.01777775 0.22308256 0.01066785 -0.26101324], Récompense : 1.0 Action : 0, Observation : [0.0222394 0.02780996 0.00544759 0.03501529], Récompense : 1.0 Action : 1, Observation : [ 0.0227956 0.22285338 0.00614789 -0.2559439 ], Récompense : 1.0 Action : 0, Observation : [0.02725266 0.02764418 0.00102902 0.03867181], Récompense : 1.0 Action : 0, Observation : [ 0.02780555 -0.16749251 0.00180245 0.33167922], Récompense : 1.0 Action : 0, Observation : [ 0.0244557 -0.36264008 0.00843604 0.62493 ], Récompense : 1.0 Action : 0, Observation : [ 0.0172029 -0.5578788 0.02093464 0.9202578 ], Récompense : 1.0 Action : 1, Observation : [ 0.00604532 -0.3630459 0.03933979 0.6342269 ], Récompense : 1.0 Action : 0, Observation : [-0.0012156 -0.5586939 0.05202433 0.9390347 ], Récompense : 1.0 Action : 0, Observation : [-0.01238948 -0.75447714 0.07080503 1.2476006 ], Récompense : 1.0 Action : 0, Observation : [-0.02747902 -0.95043194 0.09575704 1.5615956 ], Récompense : 1.0
Exercice 2 : Gestion des observations et des récompenses¶
- Objectif : Prendre une action et afficher l'observation, la récompense et l'état terminal.
In [3]:
print("\nExercice 2 : Gestion des observations et des récompenses")
env = gym.make("CartPole-v1", render_mode="human")
observation, _ = env.reset()
# Prendre une action et récupérer les valeurs retournées
action = env.action_space.sample() # Action aléatoire
observation, reward, done, _, _ = env.step(action)
print(f"Observation : {observation}")
print(f"Récompense : {reward}")
print(f"Terminé : {done}")
Exercice 2 : Gestion des observations et des récompenses Observation : [-0.01128535 0.16022788 -0.02699003 -0.3319721 ] Récompense : 1.0 Terminé : False
Exercice 3 : Contrôle manuel de l'agent¶
- Objectif : Contrôler manuellement l'agent en entrant des actions (0 ou 1).
In [8]:
env = gym.make("CartPole-v1", render_mode="human")
env.reset()
total_reward = 0
while True:
action = int(input("Entrer une action (0 ou 1) : ")) # Demander une action à l'utilisateur
if action not in [0, 1]:
print("Action invalide ! Veuillez entrer 0 ou 1.")
continue
observation, reward, done, _, _ = env.step(action)
total_reward += reward
if done:
print(f"Fin de l'épisode ! Récompense totale : {total_reward}")
env.close()
break
Fin de l'épisode ! Récompense totale : 13.0
Exercice 4 : Évaluation d'une politique aléatoire¶
- Objectif : Évaluer la performance d'une politique aléatoire sur 25 épisodes.
In [10]:
import numpy as np
env = gym.make("CartPole-v1", render_mode="human")
num_episodes = 25
episode_durations = []
for _ in range(num_episodes):
env.reset()
duration = 0
while True:
action = env.action_space.sample() # Action aléatoire
_, _, done, _, _ = env.step(action)
duration += 1
if done:
break
episode_durations.append(duration)
# Calculer et afficher la durée moyenne avant la fin d'un épisode
average_duration = np.mean(episode_durations)
print(f"Durée moyenne avant la fin d'un épisode : {average_duration}")
# Fermer l'environnement
env.close()
Durée moyenne avant la fin d'un épisode : 24.44