|
|
import gymnasium as gym |
|
|
import numpy as np |
|
|
from sb3_contrib import RecurrentPPO |
|
|
from stable_baselines3.common.vec_env import DummyVecEnv |
|
|
from training2 import RcCarEnv |
|
|
|
|
|
|
|
|
|
|
|
MODEL_PATH = "bot1_lstm_interrupted" |
|
|
|
|
|
|
|
|
def main(): |
|
|
print("🚗 Test Ortamı Hazırlanıyor...") |
|
|
|
|
|
|
|
|
env = RcCarEnv() |
|
|
env = DummyVecEnv([lambda: env]) |
|
|
|
|
|
print(f"🧠 Hafızalı Şampiyon Yükleniyor: {MODEL_PATH}...") |
|
|
|
|
|
try: |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obs = env.reset() |
|
|
|
|
|
|
|
|
lstm_states = None |
|
|
|
|
|
|
|
|
|
|
|
episode_starts = np.ones((1,), dtype=bool) |
|
|
|
|
|
try: |
|
|
while True: |
|
|
|
|
|
|
|
|
action, lstm_states = model.predict( |
|
|
obs, |
|
|
state=lstm_states, |
|
|
episode_start=episode_starts, |
|
|
deterministic=True |
|
|
) |
|
|
|
|
|
|
|
|
obs, rewards, dones, infos = env.step(action) |
|
|
|
|
|
|
|
|
episode_starts = dones |
|
|
|
|
|
|
|
|
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() |