Class for farm management
Farm class documentation following ODDox protocol
The Farm class is responsible for generating and managing all farm operations on a set of fields managed by a single farm.
2. State variables and scales
The farm unit's scale is determined by the size and location of the fields that are managed by this farm. There can be as few as one field and as many as all the fields in the landscape under consideration at the time. This is defined by the user on input and allows very realistic to very simple scenarios to be constructed.
- is the list of events to carry out.
- is a vector
of fields belonging to the farm.
- is the order of vegetation types that makes up the rotation.
- denotes the farmtype, e.g. 0 = ConventionalCattle
- whether we are stock or arable farmer (true/false respectively).
- a farm reference number.
- a parameter used to potentially synchronise farm rotations between and/or within a farm.
3. Process Overview and Scheduling
The farm managers main function is to control the farm operations occuring on the fields it manages. The precise operations that occur are determined by the Crop
management plans e.g. WinterWheat
. The farm manager checks with each crop management plan for each field it manages and responds to requests for farm operations, returning the result as success or failure. If a field's crop management plan signals that it has terminated, then the farm manager selects the next crop in its rotation list and initiates that crop management on the field. Fields are managed for farm operations once per day, and no responses can be made by any other objects in the system between start and finish of the daily management. Hence as far as animal models are concerned the farms management is instantaneous in daily steps.
4. Design Concepts
class is not an IBM as such, but is an individual model object. As such it has its own rules for behaviour which generates emergent properties at a higher hierarchical level.
- There are a number of emergent properties resulting from the farm managers operations. The primary one is the pattern of crops in fields across the landscape and the changes in that with time. In addtion the changes in vegetation structure and biomass, and insect biomass are a function of the precise managements carried out in each field, together with weather data. Almost all operations carried out on a field will have an impact e.g. sowing, harvest, pesticide treatments.
- The farm manager has no goals, and therefore no adaptive strategy.
- The farm manager has no measure of fitness. In the future it might be possible to link success of its strategy to yield and therefore gross margin, which would provide a measure of fitness.
- No prediction is carried out.
- The farm manager needs to be aware of climate data to be able to make sensible crop managements e.g. no spraying pesticides in high winds.
- Stochasticity is built in if the default setting of field by field random rotation start points is set. The precise path of the management plans will also be affected by the probability of carrying out certain farm operations, and this is also a major feature of the crop management plans.
- There are no collectives as such, but the farm can be viewed as a collection of fields.
- The events carried out on each field can be traced and dumped to output files for checking.
Initialisation is performed by the Landscape class (currently undocumented), by determining whether we have synchronised or random field by field start positions in the rotation. If not synchronised then each field starts at a random location in the rotation list. All farms undergo a one year dummy run in period to ensure that crops are started at the correct times of year. After this run in period the animal models will be initialised.
Weather and soil map inputs are required together with a list of field polygons managed by the farm.
There are no submodels for the farm, but this class is strongly connected with the Crop
class, and via this to all the specific management plants e.g. WinterWheat
. The Crop
class interacts with the Farm
class via the event queue which determines what farm operations will be called. The farm operations e.g. see Farm::AutumnPlough
result in changes in vegetation structure, insect biomass, pesticide and fertilizer inputs and a signal allowing other objects to determine what events have occured and react to them e.g partridge nests may be destroyed by vegetation cutting operations.