PageRenderTime 25ms CodeModel.GetById 17ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

Unknown | 92 lines | 77 code | 15 blank | 0 comment | 0 complexity | e185565beb9bb3e2bec1702f15e56475 MD5 | raw file
 1/*! \page whatis What is JFM?
 2 * 
 3 * JFM is a toolkit for building Linear Programming models for farm economics.  It
 4 * provides re-usable components for building models of any type but also provides 
 5 * an initial set of specific classes to implement the constraints and objective functions 
 6 * that form the Silsoe whole farm model.  
 7 * 
 8 * \section reltoswfm Relationship to the Silsoe Whole Farm Model 
 9 * 
10 * The Silsoe whole farm model was originally developed by Eric Audsley 
11 * and collaborators at Silsoe research institute and continues to be developed 
12 * and enhanced by the team at Cranfield University. JFM is not a replacement 
13 * for the Silsoe whole farm model as it lacks key features such as a user 
14 * interface,  however, it is designed to facilitate larger simulations with multiple model runs, and 
15 * to permit great flexibility in manipulating the underlying model specification (both at runtime and
16 * in terms of ease of programming via its API). 
17 * Current development of JFM and the Silsoe whole farm model is proceeding in 
18 * parallel with new model features being implemented in both code-bases. JFM is based on 
19 * the same linear programming model of farming systems used in the Silsoe whole farm 
20 * model and described in detail in the following reference;
22 Rounsevell, Annetts, Audsley, Mayr, and Reginster M. D. Rounsevell, 
23 J. E. Annetts, E. Audsley, T. Mayr, and I. Reginster, <em> Agriculture, Ecosystems 
24 and Environment </em> \b 95, 465 (2003). 
26\section appr How JFM Solves the Linear Programme
28Since JFM is a linear programme it requires a linear program solver. The only solver with which 
29it has been used so far is the GNU Linear Programming Kit []. It 
30should be noted however that the code connecting JFM with its solver is simple and should 
31permit other solvers to be accomodated easily.
33Prior to packaging the model up for solution by the LP solver, 
34JFM uses an internal representation of the problem matrix. 
35This internal representation is designed to minimize errors and allow the model 
36framework to be extended with minimum effort. 
38\section Availability
40JFM Source code can be downloaded at
42\section Features
44  * - <b> MIP. </b> Use of the MIP (Mixed Integer Programming) solver feature of the 
45  * Gnu Linear Programming Kit allows model variables to be specified as integer
46  *  or continous. This is particularly useful for labour and machinery where the
47  *   distinction between casual (continuous variable) labour and full time labour 
48  *   (integer) is sometimes important.
50  * - <b> Multiple Objectives. </b> Any number of arbitrary objective functions with different 
51  * weights may be applied. JFM uses a simple system whereby each model object 
52  * can be assigned to particular objectives via a function call. Different objectives 
53  * and weights can be declared in the xml input file
55  * - \b Extensibility.  As much as possible, the process of reading inputs, using 
56  * inputs to create a linear programme and packaging that programme for a solver 
57  * has been divided into independent and discrete objects. As a consequence, the 
58  * process of adding new constraints and new terms in the objective function is 
59  * extremely easy. The internal representation of the LP model used by JFM makes 
60  * it almost impossible to erroneously assign a row or column value in the problem 
61  * matrix so programmers can spend their time worrying about other stuff :). 
63  * - <b> Platform Independence.</b> JFM will run at full native speed on pretty much any 
64  * type of computer (Windows, Mac, Linux). In order to communicate with the 
65  * GNU Linear Programming Kit, a native library is needed which is platform specific.  
66  * Once this platform specific library has been installed, any changes or updates to 
67  * the java part of the program can be used without recompiling. 
69\section Limitations
70  * - <b> Arable Only.</b> At present JFM only implements parts of the original Silsoe 
71  * Whole Farm Model which refer to arable systems. Livestock and grassland are not included.  
73  * - <b> No GUI.</b> JFM is a set of classes rather than a pre-packaged application. 
74  * It is therefore highly extensible and useful for academic research but lacks
75  *  a graphical user interface that would make it useful to a more general user base. Implementation 
76  *  of a GUI on top of the JFM engine would be relatively easy since the JFM uses xml as its 
77  *  default input format.  
79  * - <b> Soils and Rainfall  </b> The original Silsoe Whole farm model contains 
80  * algorithms to calculate the number of workable hours in a given period 
81  * based on rainfall and soiltype. These algorithms are not yet implemented in the JFM. 
83\section roadmap Road Map
84  * - <b> Social Objectives. </b> Objective functions for a variety of factors in the 
85  * farmer's decision making are to be taken into account. Designing these 
86  * social objectives is part of an ongoing research program 
87  * []
88 * 
89 * - <b> Validated Input. </b> One of the most user unfriendly aspects of JFM is its xml interface. 
90 * Since xml files must presently be written by hand by users it would be useful to create a DTD to 
91 * validate the xml input and provide feedback to the user on mistakes in their input files.