- GAML 98%
- Python 2%
| STAR FARM | ||
| .gitignore | ||
| README.md | ||
Star-farm-models
The STAR FARM model is an agent-based simulation framework designed to represent the complexity of agricultural territories and to explore the impacts of different farming practices on their sustainability. Its main purpose is to compare and evaluate the effects of conventional and agroecological practices on crop production, resource use, and farmers’ economic performance. The model is conceived as a generic and extensible platform, allowing its application to diverse value chains, production systems, and territorial contexts. Depending on the study objectives, it can be adapted to simulate various crops such as rice, coconut, or mango, and to assess alternative management practices involving irrigation, fertilization, or sowing strategies.
At the heart of STAR FARM lies a representation of the interactions between farmers, crops, soils, and climate, within a dynamic and spatialized environment. Farmers are modeled as autonomous decision-making agents who manage a farm, composed of plots cultivated with specific crops. These farmers are endowed with a limited amount of economic resources, represented by the attribute money, and are capable of adapting their behavior by changing agricultural practices according to environmental conditions, market prices, or available capital. This adaptive process allows the exploration of different decision rules and behavioral heterogeneity among agents.
Each farm is made up of one or several plots, which serve as the spatial units of agricultural production. On each plot, one crop is cultivated following a given crop management practice, defined by a set of economic, agronomic, and technical parameters such as market price, fertilizer and seed costs, sowing and harvesting dates, irrigation and fertilization strategies. The class CropPractice formalizes these parameters and is implemented through specific instances that represent alternative management regimes. For instance, in the case of rice, two subclasses are defined: RiceCF (Continuous Flooding) and RiceAWD (Alternate Wetting and Drying). These two practices differ primarily in their water management strategies and serve as a basis for comparing trade-offs between water savings, yield performance, and economic returns.
Crop growth and yield formation are modeled through the PlantGrowthModel component, which computes biomass accumulation as a function of climatic conditions and the parameters of each crop. This component is designed to be modular: a basic generic growth model can be used, but it may also be replaced by more specific crop models, such as Oryza for rice, depending on the desired level of precision. The PlantGrowthModel determines whether a crop should be sown or harvested, through the methods is_sowing_time() and is_harvesting_time(), thus linking phenological development to environmental dynamics and management calendars.
The environmental context is described by the World and Weather classes. The World entity ensures the temporal synchronization of the simulation by managing the simulation time (current_date) and coordinating the activities of all agents. It interacts with the Weather class, which provides daily climatic data, including minimum and maximum temperatures, solar radiation, humidity, wind speed, and rainfall. These variables are crucial inputs for the computation of plant growth and for determining water and energy balances. Through this coupling, the model captures how fluctuations in weather conditions influence both the biophysical processes and the economic outcomes of farmers.
At the plot level, the Crop class represents the biophysical state of a cultivated plant, characterized by attributes such as current_biomass, irrigation_mode, and lifespan. It includes methods to compute biomass (biomassComputation()), to evaluate economic performance (incomesComputation()), and to simulate fertilization and irrigation operations. The irrigation mode can evolve over time through the method changeIrrigationMode(), allowing the representation of adaptive water management, such as switching from continuous flooding to alternate wetting and drying in response to resource constraints or policy incentives.
The overall architecture of the model, summarized in the UML diagram, highlights the hierarchical relationships between these entities. The World aggregates environmental data and synchronizes the interactions between Farmers, Farms, Plots, and Crops. Each farmer owns one farm, which in turn manages several plots, each plot being associated with a specific crop and a crop practice. The PlantGrowthModel acts as a shared functional component that translates climatic and management information into crop growth dynamics. This modular structure allows the model to integrate new components or practices easily, ensuring its adaptability to different research questions and geographical contexts.
Through this architecture, STAR FARM enables the simulation of both biophysical processes (crop growth, irrigation, fertilization) and economic decision-making (choice of practices, investment, income computation), while taking into account the influence of environmental variability and policy scenarios. By comparing alternative practices such as AWD and CF, the model supports the analysis of sustainability trade-offs between productivity, profitability, and resource efficiency, thereby contributing to the design of more resilient and environmentally friendly agricultural systems.
UML Class Diagram of the STAR FARM Model: