Quick Start Guide 
Welcome to the Quick Start guide for the DSSE (Drone Swarm Search Environment). This guide provides step-by-step instructions on how to install and use DSSE for both the Search and Coverage environments.
Warning
The DSSE project requires Python version 3.10.5 or higher.
Search Environment 
Installation 
Install DSSE for the search environment using pip:
pip install DSSEBasic Usage 
The following code snippet demonstrates how to set up and run the DroneSwarmSearch environment. Expand the details to view the code.
Click me to view the code basic_env.py ⧉
from DSSE import DroneSwarmSearch
env = DroneSwarmSearch(
    grid_size=40,
    render_mode="human",
    render_grid=True,
    render_gradient=True,
    vector=(1, 1),
    dispersion_inc=0.05,
    timestep_limit=300,
    person_amount=4,
    person_initial_position=(15, 15),
    drone_amount=2,
    drone_speed=10,
    probability_of_detection=0.9,
    pre_render_time=0,
)
def random_policy(obs, agents):
    actions = {}
    for agent in agents:
        actions[agent] = env.action_space(agent).sample()
    return actions
opt = {
    "drones_positions": [(10, 5), (10, 10)],
    "person_pod_multipliers": [0.1, 0.4, 0.5, 1.2],
    "vector": (0.3, 0.3),
}
observations, info = env.reset(options=opt)
rewards = 0
done = False
while not done:
    actions = random_policy(observations, env.get_agents())
    observations, rewards, terminations, truncations, infos = env.step(actions)
    done = any(terminations.values()) or any(truncations.values())About the agent policy
The "random_policy" function is designed to abstract the concept of a model or function that chooses actions within the environment's action space. In the example below, it samples a random action from the action space and returns a dictionary mapping agents to the actions they should perform next, based on the given observations and number of agents.
def random_policy(obs, agents):
    actions = {}
    for agent in agents:
        actions[agent] = env.action_space(agent).sample()
    return actions
actions = random_policy(observations, env.get_agents())Users can adapt this function by incorporating a trained model, such as one implemented with RLlib. For a demonstration, refer to the Algorithms section, which shows how to use a model to select actions based on the received observations.
Coverage Environment 
Install 
Install DSSE with coverage environment support using pip:
pip install DSSE[coverage]Basic Usage 
The following example shows how to initiate and interact with the CoverageDroneSwarmSearch environment. Expand the details to see the code.
Click me to view the code basic_coverage.py ⧉
from DSSE import CoverageDroneSwarmSearch
env = CoverageDroneSwarmSearch(
    drone_amount=3,
    render_mode="human",
    disaster_position=(-24.04, -46.17),  # (lat, long)
    pre_render_time=10, # hours to simulate
)
opt = {
    "drones_positions": [(0, 10), (10, 10), (20, 10)],
}
obs, info = env.reset(options=opt)
step = 0
while env.agents:
    step += 1
    actions = {agent: env.action_space(agent).sample() for agent in env.agents}
    observations, rewards, terminations, truncations, infos = env.step(actions)
print(infos["drone0"])
