ETHZ_Logo RAMSES_Logo_Right   RAMSES   RAMSES_Logo_Left Systems Ecology  
Start    search button      Modules:   A-Z   Function   Layer        QuickRefs:   DM   AuxLib   AuxLibE   SciLib   EasyMW   MW   ISIS   RMSLib

DEFINITION MODULE IdentifyPars;

  (*******************************************************************

    Module  IdentifyPars     (Version 1.2)

      Copyright (c) 1990-2006 by Olivier Roth, Andreas Fischlin and
      ETH Zurich.

    Purpose   Identifies parameters of a "ModelWorks" model
              implemented as a model definition program.

    Remarks   Uses internally the "Dialog Machine", the mandatory
              client interface of ModelWorks, i.e. SimBase and
              SimMaster, and from the optional client interface the
              module SimObjects. Moreover the auxiliary library
              modules Lists, IRand, and Matrices (actually consisting
              of many modules).

              Note, this module exists in several implementation
              versions, since the more complex identification routines
              such as Powell have been implemented in form of large
              libraries.  The simple implementation does not
              import from this package and has therefore the advantage
              of being much smaller; however, as a consequence, the
              method Powell can't be used in this version (On the Macintosh
              check the version text with the Get Info command to verify
              which version you are currently using).

              Implementation restriction: A maximum of 1024 parameters
              can be identified at once.


    Programming

      o Design
        Olivier Roth              19/05/1990

      o Implementation
        Olivier Roth              19/05/1990
        Andreas Fischlin          24/01/1993


    ETH Zurich
    Systems Ecology
    CHN E 35.1
    Universitaetstrasse 16
    8092 Zurich
    SWITZERLAND

    URLs:
        <mailto:RAMSES@env.ethz.ch>
        <http://www.sysecol.ethz.ch>
        <http://www.sysecol.ethz.ch/SimSoftware/RAMSES>


    Last revision of definition:  08/06/2002  AF

  *******************************************************************)


  TYPE
    RealFct = PROCEDURE (): REAL;
    MinMethod = (halfDouble, amoeba, price, random, brent, powell, simplex);

  (* Description of the different methods can be found in:
    + Press, H.W., Flannery, B.P., Teukolsky, S.A. & Vetterling, W.T., 1986,
      "Numerical Recipes: the Art of Scientific Computing", Cambridge University Press,
      New York, 818pp.
    + Price, W.L., 1976, "A controlled random search procedure for global
      optimisation", The Computer Journal 20(4): 367-370.
   *)


  PROCEDURE MarkParForIdentification( VAR p: REAL );
  PROCEDURE UnmarkParForIdentification( VAR p: REAL );
  PROCEDURE UnmarkAllParsForIdentification;
  (* maintains a list of parameters which are to be identified later
      with the identification procedures of this module (see
      below). You may mark or unmark any parameter from that list
      by means of the 3 procedures above, given the parameters have
      been previously declared to ModelWorks by SimBase.DeclP. or
      interactively by a call to procedure MinimizeAfterDialog (see
      below). *)


  PROCEDURE SetDefltMinim(     meth: MinMethod;
                               maxIter: INTEGER;
                               convC: REAL      );
  PROCEDURE GetDefltMinim( VAR meth: MinMethod;
                           VAR maxIter: INTEGER;
                           VAR convC: REAL      );
  (* Set/get the default minimization method "meth", the default maximum
    number of iterations "maxIter", and the default convergence
    criterion value "convC". These procedures are typically called
    before "MinimizeAfterDialog" to assure meaningfull default
    settings. *)



  PROCEDURE MinimizeDialog(VAR method: MinMethod; VAR convC: REAL;
                           VAR maxIter: INTEGER;
                           VAR cancOrNoPs, anyPRChanged: BOOLEAN);
  (* Opens a scrollable selector box in which you may choose and select
     (mark) parameters interactively to be identified.  The range
     in which the parameters ought to be identified can also be
     edited.  Typically you call Minimize with the returned
     parameters unless cancOrNoPs is TRUE (cancOrNoPs denotes
     either that the user has cancelled the dialog or that she/he
     has marked no parameters for identification.  anyPRChanged
     returns TRUE only if the user has edited the identification
     range of some parameters, i.e. the interval in which
     parameters are to be identified.  To learn about which parameters
     have been marked for identification you can use SimObjects and
     inspect field chAttr=identify (where identify=1C) in the
     ObjectHeader of all parameters.  Note, any parameter with the
     identifier "logPIFlagIdent", "ignMVFlagIdent", "scalePIIdent" or
     with field chAttr = hide, (where hide = 2C), will not be displayed
     in the parameter list.  The parameters with the listed identifiers
     are reserved for use by auxiliary module IdentParMod.  *)



  PROCEDURE Minimize( method: MinMethod;  convC: REAL;
                      maxIter:  INTEGER;  func: RealFct );
  (* Executes all necessary runs to perform an identification. "method"
     specifies one of the above listed identification methods,
     "convC" stands for a convergence criterion value, "maxIter"
     denotes the maximum number of iterations, and "func" is a
     function procedure returning the value of the performance
     index by calling e.g. SimRun and then
     SimDeltaCalc.GetDeltaStat. Note: "maxIter" is NOT the exact
     maximal number of performed SimRun's, since an iteration
     consists usually of several runs (depending on the selected
     identification method). *)

  PROCEDURE SuppressAllMonitoring;
  PROCEDURE ResetAllMonitoring;
  (* Above two procedures are a convenient way to suppress or reset all
     monitoring during an identification.  Typically you call
     SuppressAllMonitoring just before calling Minimize or
     ResetAllMonitoring to resume the "normal" monitoring after
     returning from Minimize.  *)


  PROCEDURE MinimizeAfterDialog( func: RealFct );
  (* Calls first MinimizeDialog and then Minimize as given by the
     returned parameter values.  MinimizeAfterDialog operates on the
     default parameter values.  "func" is the procedure computing the
     performance index (i.e.  it calls e.g.  SimRun and then
     SimDeltaCalc.GetDeltaStat).  Note that this routine calls first
     SuppressAllMonitoring before calling Minimize.  It also resets
     all monitoring according to the defaults at the end of Minimize.
     *)


END IdentifyPars.

  Contact RAMSES@env.ethz.ch Last updated: 25-Jul-2011 [Top of page]