/farmR/src/java/dox/about.dox

https://code.google.com/p/javawfm/ · 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;
  21. Rounsevell, Annetts, Audsley, Mayr, and Reginster M. D. Rounsevell,
  22. J. E. Annetts, E. Audsley, T. Mayr, and I. Reginster, <em> Agriculture, Ecosystems
  23. and Environment </em> \b 95, 465 (2003).
  24. \section appr How JFM Solves the Linear Programme
  25. Since JFM is a linear programme it requires a linear program solver. The only solver with which
  26. it has been used so far is the GNU Linear Programming Kit [http://en.wikipedia.org/wiki/GNU_Linear_Programming_Kit]. It
  27. should be noted however that the code connecting JFM with its solver is simple and should
  28. permit other solvers to be accomodated easily.
  29. Prior to packaging the model up for solution by the LP solver,
  30. JFM uses an internal representation of the problem matrix.
  31. This internal representation is designed to minimize errors and allow the model
  32. framework to be extended with minimum effort.
  33. \section Availability
  34. JFM Source code can be downloaded at http://code.google.com/p/javawfm/
  35. \section Features
  36. * - <b> MIP. </b> Use of the MIP (Mixed Integer Programming) solver feature of the
  37. * Gnu Linear Programming Kit allows model variables to be specified as integer
  38. * or continous. This is particularly useful for labour and machinery where the
  39. * distinction between casual (continuous variable) labour and full time labour
  40. * (integer) is sometimes important.
  41. * - <b> Multiple Objectives. </b> Any number of arbitrary objective functions with different
  42. * weights may be applied. JFM uses a simple system whereby each model object
  43. * can be assigned to particular objectives via a function call. Different objectives
  44. * and weights can be declared in the xml input file
  45. * - \b Extensibility. As much as possible, the process of reading inputs, using
  46. * inputs to create a linear programme and packaging that programme for a solver
  47. * has been divided into independent and discrete objects. As a consequence, the
  48. * process of adding new constraints and new terms in the objective function is
  49. * extremely easy. The internal representation of the LP model used by JFM makes
  50. * it almost impossible to erroneously assign a row or column value in the problem
  51. * matrix so programmers can spend their time worrying about other stuff :).
  52. * - <b> Platform Independence.</b> JFM will run at full native speed on pretty much any
  53. * type of computer (Windows, Mac, Linux). In order to communicate with the
  54. * GNU Linear Programming Kit, a native library is needed which is platform specific.
  55. * Once this platform specific library has been installed, any changes or updates to
  56. * the java part of the program can be used without recompiling.
  57. \section Limitations
  58. * - <b> Arable Only.</b> At present JFM only implements parts of the original Silsoe
  59. * Whole Farm Model which refer to arable systems. Livestock and grassland are not included.
  60. * - <b> No GUI.</b> JFM is a set of classes rather than a pre-packaged application.
  61. * It is therefore highly extensible and useful for academic research but lacks
  62. * a graphical user interface that would make it useful to a more general user base. Implementation
  63. * of a GUI on top of the JFM engine would be relatively easy since the JFM uses xml as its
  64. * default input format.
  65. * - <b> Soils and Rainfall </b> The original Silsoe Whole farm model contains
  66. * algorithms to calculate the number of workable hours in a given period
  67. * based on rainfall and soiltype. These algorithms are not yet implemented in the JFM.
  68. \section roadmap Road Map
  69. * - <b> Social Objectives. </b> Objective functions for a variety of factors in the
  70. * farmer's decision making are to be taken into account. Designing these
  71. * social objectives is part of an ongoing research program
  72. * [http://www.relu.ac.uk/research/projects/SecondCall/Sutherland.htm]
  73. *
  74. * - <b> Validated Input. </b> One of the most user unfriendly aspects of JFM is its xml interface.
  75. * Since xml files must presently be written by hand by users it would be useful to create a DTD to
  76. * validate the xml input and provide feedback to the user on mistakes in their input files.
  77. */