Skip to main content

Gym-based multi-agent environment to simulate wildfire fighting

Project description

wildfire-environment

This repository contains a gym-based multi-agent environment to simulate wildfire fighting. The wildfire process and the fire fighting using multiple autonomous aerial vehicles is modeled by a Markov decision process (MDP). The environment allows for three types of agents: team agents (single shared reward), grouped agents (each group has a shared reward), and individual agents (individual rewards). The provided reward function for team agents aims to prevent fire spread with equal preference for the entire forest while the grouped or individual agent rewards aim to prevent fire spread with higher preference given to prevent spread in regions of their selfish interest (selfish regions) than elsewhere in the forest.

This environment was developed for use in a MARL project utilizing the MARLlib library and so is written to work with older Gym, NumPy, and Python versions to ensure compatibility. If you would like a version of this environment that works with newer versions of Gym, NumPy, and Python, please refer to the gym-multigrid repository.

Installation

Prior to installation either as a package or from source, please ensure that Python v3.8 is in use. To install the environment as a package, please use pip install wildfire-environment.

To install from source, please clone this GitHub repository, cd wildfire-environment and finally run poetry install. This repository uses Poetry library dependency management.

Note: poetry install will likely fail for Gym v0.21. Given that the MARL library, for which this environment was developed to be used with, requires the use of older Gym versions and a clean solution for this issue isn't known to us, we recommend the user to install Gym v0.21 using poetry run pip after the other dependencies have been installed using poetry install. For users who use conda to manage virtual environments, they may follow the steps: clone this GitHub repository, cd wildfire-environment, create a conda virtual environment with Python 3.8 with conda create -n wildfire-env python=3.8, activate the venv with conda activate wildfire-env, run poetry install, and finally install Gym with poetry run pip install gym==0.21 to complete the installation.

Basic Usage

This repository provides a gym-based environment. The core contribution is the WildfireEnv class, which is a subclass of gym.Env (via MultiGridEnv class). Use of Gym environments is standard in RL community and this environment can be used in the same way as a typical gym environment. Note that Gym has now migrated to Gymnasium and to use a version of this environment that is compatible with Gymnasium, please refer to the gym-multigrid repository.

Here's a simple example for creating and interacting with the environment:

import gym
import wildfire_environment

env = gym.make("wildfire-v0", 
    num_agents=2,
    size=17,
    initial_fire_size=3,
    cooperative_reward=False,
    log_selfish_region_metrics=True,
    selfish_region_xmin=[7, 13],
    selfish_region_xmax=[9, 15],
    selfish_region_ymin=[7, 1],
    selfish_region_ymax=[9, 3],
    )
observation, info = env.reset(seed=42)

for _ in range(1000):
    action = env.action_space.sample()
    observation, reward, done, info = env.step(action)

    if done:
        observation, info = env.reset()
env.close()

Please ensure that path to wildfire_environment is present in PYTHONPATH before attempting to import it in your code.

Environment

Wildfire

WildfireEnv Example

Attribute Description
Actions Discrete
Agent Action Space Discrete(5)
Observations Discrete
Observability Fully observable
Agent Observation Space Box([0,...],[1,...],(shape depends on number of agents,),float32)
States Discrete
State Space Box([0,...],[1,...],(shape depends on number of agents,),float32)
Agents Cooperative or Non-cooperative or Group
Number of Agents >=1
Termination Condition No trees on fire exist
Truncation Steps >=1
Creation gym.make("wildfire-v0")

Agents move over trees on fire to dump fire retardant. Initial fire is randomly located. Agents can be cooperative (shared reward) or non-cooperative (individual/group rewards). A non-cooperative agent preferentially protects a region of selfish interest within the grid. Above GIF contains two groups of agents with their selfish regions shown in same color.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wildfire_environment-0.1.5.tar.gz (30.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wildfire_environment-0.1.5-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file wildfire_environment-0.1.5.tar.gz.

File metadata

  • Download URL: wildfire_environment-0.1.5.tar.gz
  • Upload date:
  • Size: 30.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.5 Darwin/23.5.0

File hashes

Hashes for wildfire_environment-0.1.5.tar.gz
Algorithm Hash digest
SHA256 85a4e2323dbbcb5cd811a60ef0a6c6edc54e6b56e4b7a8e1f3ce6bea2ac22310
MD5 f5bb189ff76922d77dde2baec6a60468
BLAKE2b-256 5ee14e613f9538112b46c09f326523cd00cf0792adbd5e2ff2ad843cdf0e5b5e

See more details on using hashes here.

File details

Details for the file wildfire_environment-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for wildfire_environment-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 95f593ddb492a9d7338b3c685d29696295466fd5f564e91b7d58a53b4c76e6e4
MD5 43b2ad202488ca4dadb8747f342d38aa
BLAKE2b-256 e6517fd149d210a7e45bbe46215f6e4eec1116e61a024ceeedb18aba3138229c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page