A set of OpenAI environments for studying heterotic line bundle models on CICYs based on the pyCICY toolkit. For an explanation of physical setting and the different environments check out our paper on arxiv.
Simply install with pip:
pip install git+https://github.com/robin-schneider/gymCICY
To register the environment use the following (here, Quintic and f4p1):
import gym
import gymCICY
from pyCICY import CICY
M = CICY([[4,5]])
#rewards = {}
max_steps = 300
seed = 2020
env_id = 'CICY-v0'
gym.envs.register(
id = env_id,
entry_point = 'gymCICY.envs.f4p1:f4p1',
kwargs={'M': M, 'r': 5, 'max': 2, #'rewards' : rewards,
'fname': os.path.join('results', 'models'), 'max_steps': max_steps},
)
env = gym.make(env_id)
env.seed(seed)
Note that fname is the file name into which env will write all models it finds. env keeps track of episodes and steps and has a unique id corresponding to its seed.
For a basic introduction to gym environments and in particular the flipping environment used in our paper check out the jupyter notebook tutorial (Note: The notebook was for an older verison.) in the agent folder.
Furthermore, you might want to use the latest pyCICY version. Update with
pip install --upgrade git+https://github.com/robin-schneider/CICY
Currently there are five different environments:
- lbmodel which is the mother class all other environments inherit from. The agent can increase a single charge of the five line bundle with cyclic boundary conditions.
- flipping the agent can either decrease or increase a single charge in V.
- f4p1 the agent can either decrease or increase a single charge in the first four line bundles the fifth compensated the change such that c1(V) = 0. This is the flipping environment used in the paper.
- stacking the agent picks a line bundle from a precompiled list of line bundles satisfying slope and index constraint replacing the one of t-5 ago.
- s4p1 similar to stacking with the difference being that the last line bundle is fixed by the condition c1(V) = 0. This is the stacking environment used in the paper.
- gymCICY can check for stability using the wolfram language. This can be activated by setting reward['wolfram'] = 1. Otherwise it uses a necessary check to check for stable sums.
- Cohomology computations of the pyCICY library can fail due to a lack of available memory. This results in configurations being skipped, as the reward can not be successfully computed. It happens particularly often for manifolds with increasing h11.
- Rewards can be disable by setting them to -1.
We consider line bundle models as presented in A Comprehensive Scan for Heterotic SU(5) GUT models by Anderson et al.. A well written introduction to machine learning applications in string theory by F. Ruehle can be found here. This project is inspired by the recent Branes with Brains paper.