car_env / test_driver.py
Hajorda's picture
Upload folder using huggingface_hub
1a0d68d verified
import gymnasium as gym
import numpy as np
from sb3_contrib import RecurrentPPO # <--- DİKKAT: PPO DEĞİL, RecurrentPPO
from stable_baselines3.common.vec_env import DummyVecEnv
from training2 import RcCarEnv # Senin training.py dosyanın yanında olmalı
# Model ismini buraya tam ve doğru yazmalısın
# Eğer "interrupted" olduysa:
MODEL_PATH = "bot1_lstm_interrupted"
# Veya eğitim bittiyse: "bot1_lstm_final"
def main():
print("🚗 Test Ortamı Hazırlanıyor...")
# 1. Ortamı yarat ve Vektörleştir (Eğitimdeki gibi olması şart)
env = RcCarEnv()
env = DummyVecEnv([lambda: env])
print(f"🧠 Hafızalı Şampiyon Yükleniyor: {MODEL_PATH}...")
try:
# RecurrentPPO olarak yüklüyoruz
model = RecurrentPPO.load(MODEL_PATH, env=env)
print("✅ Yüklendi! Yola çıkıyoruz...")
except FileNotFoundError:
print(f"❌ HATA: '{MODEL_PATH}.zip' dosyası bulunamadı!")
print(" - Dosya adını kontrol et.")
print(" - Bu scriptin model dosyasıyla aynı klasörde olduğundan emin ol.")
return
except ValueError as e:
print(f"❌ MODEL YÜKLEME HATASI: {e}")
print(" - Muhtemelen PPO ile RecurrentPPO karıştı.")
return
# --- LSTM TEST DÖNGÜSÜ ---
# İlk gözlem
obs = env.reset()
# LSTM Durumları (Hafıza) - Başlangıçta boştur (None)
lstm_states = None
# Episode Başlangıç Sinyali (Hafızayı ne zaman sıfırlayacağını bilmesi için)
# 1 ortamımız olduğu için [True] ile başlıyoruz.
episode_starts = np.ones((1,), dtype=bool)
try:
while True:
# deterministic=True -> Risk alma, en iyi bildiğini yap (Yarış Modu)
# DİKKAT: state ve episode_start parametrelerini ekledik!
action, lstm_states = model.predict(
obs,
state=lstm_states,
episode_start=episode_starts,
deterministic=True
)
# Adım at
obs, rewards, dones, infos = env.step(action)
# Bir sonraki adım için "Episode bitti mi?" bilgisini güncelle
episode_starts = dones
# Eğer tur bittiyse (env.step otomatik resetler ama görselleştirmek için)
if dones[0]:
print(f"🏁 Tur Bitti! Hafıza sıfırlanıyor...")
except KeyboardInterrupt:
print("\n🛑 Test sonlandırıldı.")
env.close()
if __name__ == '__main__':
main()