Under the hood#
gym-dssat uses a modification of DSSAT, called dssat-pdi (see here in Gitlab). dssat-pdi is powered by the PDI Data Interface (PDI). PDI allows to turn the monolithic Fortran program into a Reinforcement Learning environment by pausing its execution, retrieving DSSAT’s internal state, interacting with Python, specifiying actions and finally resuming its execution as shows the Figure dssat-pdi : a modification of DSSAT using PDI. The Figure Components behind gym-DSSAT presents the different parts behind the gym-dssat environment. gym-dssat, which is from a user perspective the usual Open AI gym interface, communicates with dssat-pdi through PyZMQ sockets.
The modification of DSSAT using PDI require minimal additions of code snippets. DSSAT being in continuous development, we are able to easily convey DSSAT updates to dssat-pdi.