"""Abstract base class for all agents."""
from abc import ABC, abstractmethod
from typing import Any, Dict
import numpy as np
[docs]
class BaseAgent(ABC):
"""Abstract base class for vertiport autonomy agents."""
[docs]
def __init__(self, name: str):
"""Initialize the agent.
Args:
name: Human-readable name for the agent
"""
self.name = name
[docs]
@abstractmethod
def act(self, observation: Dict[str, Any]) -> np.ndarray:
"""Select actions based on the current observation.
Args:
observation: Current environment observation
Returns:
Array of actions for each drone
"""
pass
[docs]
@abstractmethod
def reset(self) -> None:
"""Reset agent state for a new episode."""
pass
[docs]
def __str__(self) -> str:
"""String representation of the agent."""
return f"{self.__class__.__name__}(name='{self.name}')"