Views
No views yet

pip install gymnasium stable-baselines3 huggingface_hub1import gymnasium as gym
2from stable_baselines3 import PPO
3from gymnasium import register
4from huggingface_hub import hf_hub_download
5import os
6
7# --- PARAMÈTRES DU DÉPÔT ---
8REPO_ID = "Clemylia/MiRobot"
9MODEL_FILE = "mirobot_final_model.zip"
10ENV_SCRIPT_FILE = "MiRobotEnv.py"
11ENV_ID = 'MiRobot-v0'
12
13# 1. Téléchargement des Fichiers
14env_path = hf_hub_download(repo_id=REPO_ID, filename=ENV_SCRIPT_FILE)
15model_path = hf_hub_download(repo_id=REPO_ID, filename=MODEL_FILE)
16
17# 2. Chargement de la Classe d'Environnement (MiRobotEnv)
18try:
19 with open(env_path, 'r') as f:
20 exec(f.read())
21except Exception as e:
22 print(f"Erreur lors du chargement de l'environnement: {e}")
23 exit()
24
25# 3. Enregistrement de l'Environnement Custom
26try:
27 register(
28 id=ENV_ID,
29 entry_point='MiRobotEnv:MiRobotEnv',
30 )
31except gym.error.UnregisteredEnv:
32 pass # Déjà enregistré
33
34# 4. Chargement du Modèle Entraîné (PPO)
35model = PPO.load(model_path)
36print("✅ Modèle MiRobot chargé et prêt pour l'inférence.")
37
38# 5. Simulation (Inférence)
39env = gym.make(ENV_ID)
40obs, info = env.reset()
41action_map = {0: "S'Arrêter", 1: "Avancer", 2: "Tourner G", 3: "Tourner D"}
42
43print("\n--- Démarrage de la Simulation MiRobot ---")
44for i in range(20):
45 action, _states = model.predict(obs, deterministic=True)
46 obs, reward, terminated, truncated, info = env.step(action)
47
48 print(f"[Pas {i+1}] Action Choisie: {action_map[action]}")
49 env.render() # Affiche l'état interne de MiRobot
50
51 if terminated or truncated:
52 obs, info = env.reset()
53
54env.close()
55print("\nSimulation terminée.")float) que l'agent d'IA utilise pour prendre une décision.| Index | Nom de la Variable | Plage de Valeurs | Rôle |
|---|---|---|---|
| 0 | Commande_Avancer | $0.0$ ou $1.0$ | Commande binaire du maître (1 si demande d'avancer). |
| 1 | Commande_Tourner | $0.0$ ou $1.0$ | Commande binaire du maître (1 si demande de tourner). |
| 2 | Faim | $0.0$ (Pleine) à $1.0$ (Affamée) | Niveau de faim interne (augmente avec le temps). |
| 3 | Sommeil | $0.0$ (Éveillé) à $1.0$ (Fatigué) | Niveau de fatigue interne (augmente avec le temps). |
| 4 | Humeur | $-1.0$ (Mauvaise) à $1.0$ (Joyeuse) | État émotionnel du chiot (influencé par la faim/sommeil). |
| ID d'Action | Action du Robot |
|---|---|
| 0 | S'arrêter (ou ne rien faire) |
| 1 | Avancer |
| 2 | Tourner à gauche |
| 3 | Tourner à droite |
Commande_Avancer ou Commande_Tourner).Faim et Sommeil.render() pour visualiser le chiot se déplaçant dans un espace physique.import gymnasium as gym
from stable_baselines3 import PPO
from gymnasium import register
from huggingface_hub import hf_hub_download
import os
import sys # Import sys
# --- PARAMÈTRES DU DÉPÔT ---
REPO_ID = "Clemylia/MiRobot"
MODEL_FILE = "mirobot_final_model.zip"
ENV_SCRIPT_FILE = "MiRobotEnv.py"
ENV_ID = 'MiRobot-v0'
# 1. Téléchargement des Fichiers
env_path = hf_hub_download(repo_id=REPO_ID, filename=ENV_SCRIPT_FILE)
model_path = hf_hub_download(repo_id=REPO_ID, filename=MODEL_FILE)
# 2. Chargement de la Classe d'Environnement (MiRobotEnv)
# Extract the directory of the downloaded environment script
env_dir = os.path.dirname(env_path)
# Add this directory to sys.path so Python can find it as a module
if env_dir not in sys.path:
sys.path.insert(0, env_dir) # Add to the beginning of sys.path
try:
# No need for exec(f.read()) anymore, as gymnasium.make will handle the import
pass
except Exception as e:
print(f"Erreur lors du chargement de l'environnement: {e}")
exit()
# 3. Enregistrement de l'Environnement Custom
try:
register(
id=ENV_ID,
entry_point='MiRobotEnv:MiRobotEnv', # This will now try to import MiRobotEnv module
)
except gym.error.UnregisteredEnv:
pass # Déjà enregistré
# 4. Chargement du Modèle Entraîné (PPO)
model = PPO.load(model_path)
print("✅ Modèle MiRobot chargé et prêt pour l'inférence.")
# 5. Simulation (Inférence)
env = gym.make(ENV_ID)
obs, info = env.reset()
action_map = {0: "S'Arrêter", 1: "Avancer", 2: "Tourner G", 3: "Tourner D"}
print("\n--- Démarrage de la Simulation MiRobot ---")
for i in range(20):
action, _states = model.predict(obs, deterministic=True)
obs, reward, terminated, truncated, info = env.step(action)
print(f"[Pas {i+1}] Action Choisie: {action_map[action.item()]}") # Fixed: Use .item() to get scalar from numpy array
env.render() # Affiche l'état interne de MiRobot
if terminated or truncated:
obs, info = env.reset()
env.close()
print("\nSimulation terminée.")