<< Click to Display Table of Contents >> Parameter preprocessing |
![]() ![]() ![]() |
![]() | Parameter ordering |
There are many occasions where the parameters that are provided to a model should be somewhat different from those that are manipulated by PEST. Ordering of parameters is one such occasion. Suppose that a model requires three parameters named par1, par2 and par3. Suppose that we would like to insist that their values maintain a certain order as they are altered by PEST, for example: par1 ≤ par2 ≤ par3 PEST allows a user to place upper and lower bounds on the values of parameters. However these bounds cannot be the values of other parameters. So we have to alter the way that parameters are defined if ordering relationships such as these are to be respected. We let PEST manipulate 3 parameters. The first is par1. We name the other two parameters ratpar2 and ratpar3. ("rat" stands for "ratio".) We then inform PEST that ratpar2 and ratpar3 each have a lower bound of 1. The parameters that the model sees are then calculated as: par2=par1 * ratpar2 par3 = par2 * ratpar3 So where are these calculations done? Option1 is to use a general model preprocessor named PAR2PAR that is supplied with PEST. Option 2 (if you are using PEST_HP) is to employ so-called "secondary parameters". We will look at each of these options in turn. (Of course there is a third option. This is to program the above equations into the model. You can do this if you wrote the model yourself.) |
PAR2PAR is a general parameter preprocessor that is supplied with PEST. Therefore it should be one of the first programs that features in the batch or script file that PEST runs as the model sandwich. PAR2PAR is documented in Part 2 of the PEST manual. PAR2PAR reads an input file that lists the values of some or all parameters that PEST is currently estimating. You will need to prepare a template of this file so that PEST can record current parameter values in it on each occasion that it runs the model. You must also supply PAR2PAR with a set of equations which use these parameters. These equations can be of arbitrary complexity. These equations assign values to "derived parameters" or "secondary parameters". These secondary parameters, together with the original parameters, can then be written to model input files. Like PEST, PAR2PAR writes model input files using templates of these files. PAR2PAR's role is pictured below. |
If you use PEST_HP, then you do not need to include PAR2PAR in the model sandwich. PEST_HP provides secondary parameter functionality through the "parameter data" section of the PEST control file that it reads. You simply insert equations (of arbitrary complexity) into this section that define new parameters. The template files that PEST_HP uses to write model input files can include both primary and secondary parameters. (However, they do not need to include all primary parameters if these are made redundant by secondary parameters.) Here is part of the "parameter data" section of a PEST_HP control file.
|
CMAES_HP is a global optimiser that is supplied with the PEST_HP suite. Formulation and solution of an "optimisation under uncertainty" problem requires that the model that calculates management outcomes from decision variables actually be a suite of models. Each member of this suite employs a different parameter field. Collectively, these parameter fields should comprise samples of the posterior parameter probability distribution. Decision variables then maximise or minimise a user-specified management outcome under model-calculated constraints that are worst case (or that approach worst case), given the uncertainties of system hydraulic properties. CMAES_HP maximises or minimises decision variables that are featured as "parameters" in the PEST control file that it reads. Meanwhile, prepared realisations of "file parameters" (normally realisations of hydraulic properties) are read from a suite of files. CMAES_HP reads as many realisations of these parameters as it is asked to (this number can change during the course of the optimisation process), and writes these to pertinent model input files using templates of those files in the usual manner. It runs the model using each of these parameter fields. |