RUFAS.simulation_engine module#
- class RUFAS.simulation_engine.SimulationEngine#
Bases:
objectThe SimulationEngine class is responsible for orchestrating the entire simulation process for RuFaS. It manages the simulation’s lifecycle, advancing time, executing daily and annual routines, and logging simulation progress.
Attributes#
- weatherWeather
The weather object that contains the weather data.
- timeRufasTime
The RufasTime object that contains methods for accessing and manipulating the simulation time.
- feed: Feed
The Feed object that stores the information for the feeds managed by the farm, and the methods for storage.
- herd_manager: HerdManager
The HerdManager object that manages all animal in the herd.
- manure_manager: ManureManager
The ManureManager object that sets up and manages different manure management components including manure handlers, reception pits, manure separators, and manure storage treatments.
- field_manager: FieldManager
The FieldManager object that manages all fields in the simulation.
Methods#
- simulate()
Execute the simulation process.
- __init__() None#
Initializes the simulation engine.
- simulate() None#
Executes the simulation.
- _run_simulation_main_loop() None#
The main loop for simulation.
- _daily_simulation() None#
Executes the daily simulation routines.
- _formulate_ration() None#
Formulates the ration for the animals.
- generate_daily_manure_applications() list[ManureEventNutrientRequestResults]#
Requests nutrients from the manure manager for each field in the simulation.
Returns#
- list[ManureEventNutrientRequestResults]
A list containing the ManureEvents and corresponding NutrientRequestResults to be applied to fields.
- _advance_time() None#
Advances time and increments simulation_day.
- _run_post_annual_routines() None#
Writes the annual report to the output files Flushes the data in the output object Resets the state for the following year
- _annual_simulation() None#
Executes the annual simulation routines.
- annual_reset() None#
Resets all annual variables that require reset.
- _initialize_simulation() None#
Instantiates the simulation object by requesting data from the Input Manager.