Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| import numpy as np | |
| from stable_baselines3.common.vec_env import DummyVecEnv | |
| # Ensure project root is in path | |
| sys.path.append(os.getcwd()) | |
| from ai.train_optimized import create_env | |
| def run_benchmark(): | |
| num_cpu = 1 | |
| os.environ["TRAIN_CPUS"] = str(num_cpu) | |
| print(f"Initializing Dummy Benchmark with {num_cpu} workers...") | |
| env_fns = [ | |
| partial(create_env, rank=i, usage=1.0, deck_type="random_verified", opponent_type="random") | |
| for i in range(num_cpu) | |
| ] | |
| # Use DummyVecEnv to see errors clearly | |
| env = DummyVecEnv(env_fns) | |
| print("Resetting environments...") | |
| obs = env.reset() | |
| steps_total = 0 | |
| steps_target = 100 | |
| print(f"Running {steps_target} steps...") | |
| while steps_total < steps_target: | |
| # Get random legal actions | |
| # env_method on DummyVecEnv | |
| try: | |
| masks = env.env_method("action_masks") | |
| except AttributeError: | |
| print("AttributeError: action_masks not found. Trying unwrapped...") | |
| masks = [e.unwrapped.action_masks() for e in env.envs] | |
| actions = [] | |
| for m in masks: | |
| idx = np.where(m)[0] | |
| actions.append(np.random.choice(idx) if len(idx) > 0 else 0) | |
| obs, rews, terms, infos = env.step(np.array(actions)) | |
| steps_total += num_cpu | |
| print(f"\nSuccess! Completed {steps_total} steps in Dummy mode.") | |
| env.close() | |
| from functools import partial | |
| if __name__ == "__main__": | |
| run_benchmark() | |