## 1 Introduction  
Increasing health and environmental concerns [1], combined with the increase in the need for food due to the growth of the world population, has led to the search for sustainable agricultural systems. Sustainable agriculture does not mean going back to pre-industrial revolution methods, but rather using soil and water conservation practices with an emphasis on crop rotation that preserves productive resources by using local inputs and organic methods for plant nutrition [2]. Crop rotation is defined as the practice of growing a sequence of crops on the same land, cycle after cycle [3]. It is characterized by cycle periods, meaning we can loop, in contrast to crop sequence which is limited to the order of appearance of crops on the same plot of land during a fixed period [4]. The main feature of such a system is crop diversification which increases yields and the use of productive resources. For instance, crop rotation can increase the yield by 38% when compared with continuous monoculture practices according to [5]. In addition, crop diversification also reduces the vulnerability of farmers to market price variability and provides a wide variety of foods to the population [6]. The concept of crop rotation highlights the problem of determining the cropping plan at the spatial and temporal levels respectively, which in most cases boils down to the choice of crops and their assignment to plots [7]. Not all crop sequences are suitable for sustainable farming. Moreover, not all crop sequences have the same economic performance, meaning that they cannot all optimize the revenue of the farmer at the end. Therefore, the need to obtain optimal crop sequences or rotation is crucial. Several techniques have been introduced in the literature, including decision trees [8], decision support systems [9], fuzzy logic [10] and mathematical programming models. One technique identified in mathematical programming usually adopted for the development of crop rotation systems is linear programming models [11; 12; 13; 14; 15]. The typical problem of agricultural production planning is to determine the set of crops and the area to be allocated to each crop. Some models available in the literature are based solely on financial objectives such as profit maximization or cost minimization [11; 15; 16], while others are based on agricultural sustainability such as the minimization of pest proliferation throughout the planting area [10; 17; 18] or environmental health [13; 19; 20]. In the models developed in [11; 15; 21], the planting period is annual, and they do not take into account the subdivision of land into plots as well as the adjacency constraints. In fact, agronomic and ecological studies [22; 23] demonstrate that planting plot sequence with crops of different botanic families can reduce the resources available to pests. Consequently, their population will also reduce, and their damage will be limited. Plot adjacency constraints have been considered in [24] but authors did not take into account the impact of nutrients, or production activities on crop succession and crop yield. These crop rotation approaches provide an insight into the potential organization of an agricultural system, but they are still limited. The difficulty in developing a realistic crop rotation is the large number of factors involved in the decision-making process, the relationships between these factors, and the lack of farmers' control over some of these factors [15]. The constraint-based farm planning model presented in this paper, targets on one hand the management of the farm divided into adjacent plots, the impact of the agricultural production activities defined by data on operations, crops, and crop families to generate an optimal yield based on expert data and farmer inputs.