Using pip:
pip install breedgymFrom source:
git clone https://github.com/younik/breedgym
cd breedgym
pip install -e .BreedGym environments implement the Gymnasium API, making it easy to use it with your preferred learning library.
import gymnasium as gym
import numpy as np
env = gym.make(
"breedgym:BreedGym",
genetic_map="path/to/genetic_map.txt",
initial_population="path/to/geno.npy",
num_generations=10
)
print("Observation space:", env.observation_space)
print("Action space:", env.action_space)To test, you can use the sample data we provide here. In the case of the small sample data, we have 370 initial population members with 10k markers.
Observation space: Box(False, True, (370, 10000, 2), bool)
Action space: Sequence(Tuple(Discrete(370), Discrete(370)), stack=False)
After initializing the environment, we can interact with it as a standard Gymnasium environment:
initial_pop, info = env.reset()
tru = False
for gen_number in range(10):
assert not tru
act = env.action_space.sample()
pop, rew, ter, tru, infos = env.step(np.asarray(act))After 10 generations, we expect the environment to truncate, as we specified 10 generations horizon during environment initialization:
assert tru
print("Reward (GEBV mean):", rew)The full list of environments can be found here.
@inproceedings{younis2023breeding,
title={Breeding Programs Optimization with Reinforcement Learning},
author={Younis, Omar G. and Corinzia, Luca and Athanasiadis, Ioannis N and Krause, Andreas and Buhmann, Joachim and Turchetta, Matteo},
booktitle={NeurIPS 2023 Workshop on Tackling Climate Change with Machine Learning},
url={https://www.climatechange.ai/papers/neurips2023/93},
year={2023}
}