This document is the technical specification of the SkyPig modelling framework.

SkyPig modelling framework is designed for the individual-based population modelling of vertebrates. Currently models of two species (woodpigeon and skylark) are implemented with the purpose of pesticide risk assessment.

The main class of the model is Model in package model.core that includes the main function. Config, Observer and World are created at the beginning of the execution. Config holds the parameter values from configuration file and provides them to all the entities in the model. It also provides basic log info for verification file (see below). Observer or one of its inheriting classes is responsible for storing the model results in the database. Observer collects the Signatures of all the objects implementing the Observable interface, but it may also collect any other type of information, depending on the specification. World is the main environment of the model. It creates, stores and manages Agents of different types, is responsible for their scheduling and invokes Observer to store results. For the two species implemented it was not necessary to overwrite World in species-specific packages. For running the model in verification mode, the Worlds' field verificationMode should be set to true. The interface SpeciesFactory should be implemented in any species-specific package to enable creation of Agents from proper species-specific classes.

Agent is the superclass for three types of modelled entities: Animals, Nests and LandscapeUnits that reflect the real animals, their nests as collections of offspring and landscape fields as specified in the initialisation file. Direct subclasses of Agent: Animals, Nests and LandscapeUnits contain the parts common for the two species implemented, but are all overriden in species-specific packages to include additional functionality. They may or may not serve as superclasses for the species added in the future. Agents communicate by the means of Messages. Inbox and Outbox are specified for each Agent to receive and send Messages.

CropRotation and Resource are used in LandscapeUnit to set the field-specific scheduling of consecutive crops and the food types available on the field during periods of different crops.

Species specific packages are named after the species they represent, at the moment: model.skylark and model.woodpigeon. They both contain subclasses of the Agent types specified in model.core: Animals, Nests and LandscapeUnits that specify species-specific behaviour and physiology and the subclass of SpeciesFactory responsible for creation of Agents of the proper classes. Additionally, model.skylark contains SkylarkTerritory class providing the functionality of territories and SkylarkCalibrationObserver class responsible for gathering and storing the output for calibration purposes. Model.woodpigeon contains WoodpigeonForaging class used for the structural sensitivity analysis of the model to different foraging strategies.

The documentation may not be updated in some sections. However, all the class, method and fields comments that include the Since tag are up to date.

@author Katarzyna Kułakowska, Tomasz Kułakowski @since 2013-01-04