Calibrating MESH via OSTRICH using DDS algorithm

advertisement
Calibrating MESH via OSTRICH using DDS algorithm
(OSTRICH v1.8 r03.28.2011)
By
Amin Haghnegahdar
University of Waterloo
Civil & Environmental Engineering
ahaghneg@uwaterloo.ca
Adopted and updated from the OSTRICH manual v1.6 by L.S. Matott
for
IP3 Network Final Results Workshop
7-9 September 2011
Introduction

A model-independent calibration and optimization tool

Dr. L. Shawn Matott (2005)
http://www.civil.uwaterloo.ca/lsmatott/Ostrich/OstrichMain.html
http://www.groundwater.buffalo.edu/software/Ostrich/OstrichMain.html

Most important features of OSTRICH is that it is model-independent

OSTRICH uses minimization for optimization/calibration

OSTRICH implements classic numerical methods and popular heuristic algorithms
o Dynamically Dimensioned Search (DDS)
o Particle Swarm Optimization (PSO)
o Genetic Algorithm (real-coded and binary-coded)
o Simulated Annealing (3 variants)
o Gauss-Marquardt-Levenberg (GML) non-linear regression
o Fletcher-Reeves
o Steepest Descent
OSTRICH can calculate numerous regression statistics following a successful calibration exercise
o Observation Residuals
o Confidence Intervals
o Parameter Variance-Covariance
o Influential Observations
o Parameter Sensitivities
OSTRICH is available for both Linux and Windows platforms
o an MPI parallel version of OSTRICH for Linux-based parallel clusters
o OSTRICH can be configured to execute parallel versions of the underlying model executable, if
one is available
o OSTRICH GUI module using Visual Basic
Unconstrained Optimization
o parameters are continuously varying
o The only constraints are upper and lower boundaries (so-called ’side constraints’)
 Can incorporate constraints via penalty functions



1
General Constrained Optimization (GCOP) in OSTRICH

Chapter 6 of Documentation and User’s Guide Version 1.6

Anything other than least-squares calibration or pump-and-treat optimization, needs either
o i) generate a driver program (see Chapter 7) or
o ii) GCOP module

Math and Statistics: Statistical output for GCOP is not meaningful

We use the DDS algorithm (Tolson & Shoemaker, 2007)
o Heuristic stochastic global optimization
o Designed for efficient automatic calibration
o Has only one algorithm parameter (neighborhood size perturbation, r)
o Normally no parameter tuning required, default r=0.2
o Generates good (not best) results in modeller’s time frame
http://www.civil.uwaterloo.ca/btolson/software.htm
Input files (chapter 4 and 6):
 ostIn.txt:
o
Main OSTRICH input file that controls its settings
 Template files:
o
*.tpl files used to replicate the required model input files (explained later)
 Other files:
o
Batch/Script file to execute the simulation model and to supply OSTRICH with necessary files to
calculate cost (objective) function (explained later)
2
Configuring ostIn.txt:
Note: Can use “#” to comment out lines or insert comments
ProgramType:


Choice of the optimization algorithm: e.g. “DDS”, “ParticleSwarm”, etc. (section 4.2)
o Should know the exact name : we use DDS
Or use “ModelEvaluation” for a single/few model runs with the specified parameters and their values in
this file (can be used for quick testing)
ObjectiveFunction:

Always “GCOP” (General Constrained Optimization ) when anything other than least-squares calibration
or pump-and-treat optimization is used
3
ModelExecutable:


Model (or batch file) that will generate the necessary files needed by OSTRICH
Like “OST-MESH.bat” here (details later in “Other files” section)
PreserveBestModel: (not in the older versions or manual)


The batch file that preserves the simulation model (e.g. MESH) input files associated with the best found
parameter set by the optimizer in OSTRICH in the folder named “best”
Like “save_best.bat” here
File Pairs: (See section 4.3)



To pair (generate) the required model input files from their corresponding template (.tpl) files
There should be a template file pair for any input files containing design parameters
General syntax
4


<sep> shows where one filename ends and the next one begins. Semi-colon character ’;’ and the TAB
character. Spaces are not valid separator characters because OSTRICH allows spaces within file names.
Example
BeginParams (section 4.5)


Calibration parameter names, values, bounds and transformations (if any)
General syntax


<name>: The name of the parameters as used in the template file(s)
<initVal> : Initial value of the parameter in units specified by <txIn>
o A value or “random” or “extract” (extract from the existing input files)
<lowBnd> : Lower bound of the parameter, in units specified by <txIn>
<uprBnd> : Upper bound of the parameter, in units specified by <txIn>
o Also check the “minmax_parameters.txt” for allowed ranges by MESH




<txIn>, <txOst>, and <txOut>: These specify the type of transformation to be used by input files,
internally by OSTRICH and in the output files.
o none: no transformation.
o log10 : log base 10 transformation.
o ln : natural logarithm transformation
Example: Note: <format> was added recently to accommodate fixed format used by MESH
5
BeginInitialParams



Sets (lines) of design parameter values in the same order as specified in “BeginParams”
Used only for the ModelEvaluation mode
Example
BeginResponseVars (see sections 6.1 and 4.4)

Response variables that OSTRICH should read from model output files prior to evaluating costs and
constraints

<sep> shows where filename ends. Semi-colon character ’;’ and the TAB character. Spaces are not valid
separator characters because OSTRICH allows spaces within file names.
6

<key>, <line>, and <col>: First, OSTRICH Positions the output file parser at the first line in <file>
containing <key> word. If OSTRICH should begin parsing at the beginning of the file, then <key> should
be set to OST-NULL. Next, the parser uses the <line> and <col> values to locate the position of the
desired observation value. This value is then extracted and converted to a double precision number. The
parsing process is repeated until all observation values are read.

The <line> variable tells OSTRICH how many lines must be skipped, starting from the line containing
<key>, before the line containing the desired observation value is reached. Therefore, if the observation
value is on the same line as <key>, then <line>=0;

The <col> variable tells OSTRICH which column in the line contains the desired value; where each
column is separated by the <tok> variable, and column numbering begins at 1.


The <tok> variable is used to specify an alternative column separator to use when parsing the model
output file; the default column separator is whitespace (any number of space or TAB characters). If model
output uses an alternative format (such as comma separated values), then the <tok> variable should be set
accordingly.
Example


Note: So the value of NS is read by OSTRICH from first column of the 1st line of the “function_out.txt”
function_out.txt is generated by the Nash-Sutcliffe code and looks like
7
BeginTiedRespVars (see also section 4.8)

Response variables whose values are computed by OSTRICH as functions of one or more response variables
and/or parameters


<name>: The name of the new (tied) response variable(s)
<np>: The number of non-tied response variables and/or parameters. Valid values depend on the choice of
<type> (=actual number of variables/parameters when <type>=“wsum”)
<pname1>,<pname2>...<pnamenp> : The list of non-tied response variables and/or parameters


<type>: The type of function relationship between the tied and non-tied response variables. Valid values for
<type> are such as “linear”, “exp”, “wsum”
o wsum: The tied parameter is the weighted sum of the listed parameters.

<type data>: Depending on the choice of <type>, the syntax of this field varies
o If <type> = ”wsum”, the <type data> field should list the values of each weight, using the same
ordering as the preceding named list of parameters.

Example: Turns the regular Nash-Sutcliffe value to the negative NS since OSTRICH uses “minimization” for
optimizing
8
BeginGCOP

Example: NegNS is what is used eventually by OSTRICH to calculate the cost function
9
BeginConstraints

We did not use any constraint here
BeginDDSAlg (not in the Manual)





DDS-specific settings
Parameter: Neighborhood size perturbation, default=0.2
Number of maximum iterations (=objective function evaluation)
How DDS initializes the search (random or specified initial values)
Example:
10
Template files:




OSTRICH uses the template files to create syntactically correct model input files in preparation of
running the model
The contents of the template file should be identical to the paired model input file
o Values of calibration parameters are replaced with unique parameter names defined in the
ostIn.txt file
Be very careful with the names, their lengths and with spaces
Example:
Other files:


Extra (batch) files required to run the model and calculate the objective function (cost) by OSTRICH
Example: OST-MESH.bat
11

1_3_002: the current MESH executable

WtNash_MESH.exe: calculates the weighted Nash-Sutcliffe coefficient for the listed stations based on
the “MESH_output_streamflow.csv” file (located in BASINAVG1 folder)
o Requires the input file “NS_Ex-Stations.txt” in the same directory (BASINAVG1)
o Weights may be assigned based on the average station flows
o Considers optional period for model warm-up (spin-up)
o Use -1 as the station number to calculate weighted NS for all stations
o Example
Single Station (weight does not really matter in this case):
12
Multiple Stations:
13
Running OSTRICH (chapter 8)

To check before running

Place the required files in the working directory (e.g. “ost” here)
o This directory is located in the main directory of the model (e.g. MESH here)

Running OSTRICH
o Run “Ostrich.exe” directly
 No further organizing of files/directories and no progress screen (only for windows)
o Run a customized batch file (e.g. “Ostrich.bat”)
 To create an output folder and transfer output results into it
 To see the progress screen for each simulation (windows only)
 Etc.
 Often used as opposed to Ostrich.exe
o Example:
14
Output files (chapter 9):
 OstOutput0.txt:

Main output file, contains an optimization record along with statistical output (if applicable) and the final
best solution found
15
 OstErrors0.txt:

Error file, any errors encountered by OSTRICH are stored in this file.
 OstModel0.txt:

A sequential record of every model run is stored in this file.
16
 OstExeOut.txt:


The outputs of model runs are redirected to this file.
The output of each new model run will overwrite the contents of this file
17
18
Download