Spaces:
Sleeping
Sleeping
| import torch | |
| import numpy as np | |
| from dreamer import AgenticForecaster, ReplayBuffer | |
| def run_test(): | |
| device = torch.device("cpu") | |
| obs_dim = 10 | |
| action_dim = 5 | |
| batch_size = 8 | |
| seq_len = 16 | |
| agent = AgenticForecaster(obs_dim=obs_dim, action_dim=action_dim, device=device) | |
| buffer = ReplayBuffer(capacity=100, seq_len=seq_len) | |
| # 1. Collect some dummy data | |
| for _ in range(20): | |
| # random episode of length 30 | |
| obs = np.random.randn(30, obs_dim) | |
| acts = np.abs(np.random.randn(30, action_dim)) | |
| acts = acts / acts.sum(axis=-1, keepdims=True) # Normalize as portfolio weights | |
| rews = np.random.randn(30) | |
| buffer.add_episode(obs, acts, rews) | |
| # 2. Sample batch | |
| obs_batch, act_batch, rew_batch = buffer.sample_batch(batch_size) | |
| obs_batch = obs_batch.to(device) | |
| act_batch = act_batch.to(device) | |
| rew_batch = rew_batch.to(device) | |
| # 3. Train World Model | |
| wm_logs = agent.train_world_model(obs_batch, act_batch, rew_batch) | |
| print(f"World Model Training Logs: {wm_logs}") | |
| # 4. Train Actor Critic | |
| # Create arbitrary start state from posterior for imagination | |
| start_state = agent.rssm.initial_state(batch_size, device) | |
| ac_logs = agent.train_actor_critic(start_state, horizon=10) | |
| print(f"Actor-Critic Training Logs: {ac_logs}") | |
| print("Multi-module Dreamer integration passed successfully.") | |
| if __name__ == "__main__": | |
| run_test() | |