Lauren Hay: Hi.
This is Lauren Hay with the USGS National Research Program’s Modeling of Watershed
Systems group.
This training video will explain PRMS parameter calibration using Luca.
If you have not done so already, go to our website to get the PRMS and Luca executables
and manuals.
On the Software page will be links to Luca and PRMS
You need to download the Luca software, the Luca manual, and it's probably helpful to
download this JAWRA paper that goes through the theory behind multiple-objective stepwise
calibration.
The Luca manual explains things in detail.
Keep in mind the GUI has changed from when the manual was published.
PRMS Calibration with Luca.
Luca uses a multiple-objective stepwise calibration procedure.
This example is from the PRMS manual in appendix 3.
The multiple objective stepwise calibration in this example has four steps.
The first step calibrates the parameters PRMS uses to calculate solar radiation.
The second step calibrates parameters PRMS uses to calculate potential evapotranspiration.
The third step calibrates the streamflow volume parameters.
The fourth step calibrates the streamflow timing parameters.
Luca uses the shuffle complex evolution approach for global optimization.
This is a flow chart from the Luca manual.
If you want more information on the SCE optimization algorithm, then read the Luca manual and read
the references by Duan and others.
Within Luca, there are a couple of different objective function choices.
This screen shot is from the Luca manual.
The user has a choice of normalized root mean square error, Nash Sutcliffe goodness of fit,
absolute difference, and absolute difference in the logs.
The user can also choose correlation, which was added after the manual was published.
This shows a table to help with the 4-step Luca setup for the Merced River Basin example
from appendix 3 in the PRMS manual.
It’s probably a good idea to make a table similar to this before you start using Luca.
The ‘Calibration step and data set’ lists the four step calibration process -- solar
radiation, PET, streamflow volume, and streamflow timing – and the time steps for objective
function evaluation.
I am using one objective function on a mean monthly time step for solar radiation and
PET.
Streamflow volume uses three objective functions on annual mean, mean monthly, and monthly
mean time steps.
Streamflow timing uses two objective functions on daily and monthly mean time steps.
The objective function associated with each step is listed in the second column.
For each step the parameters that are being calibrated and the range for calibration are
listed in the third and fourth columns, respectively.
Many of these parameters are dimensioned by HRU or month.
The fifth column indicates whether the individual values for each parameter are calibrated individually
or by their mean.
Now I will go through the Luca GUI.
Note the progress of the GUI is listed in the blue shaded area on the left.
The GUI will prompt you with 13 different steps that will need to be filled out before
you can run Luca.
The first page of the GUI is Start Session.
When you start Luca, it will ask you whether you want to start a new session, or open an
existing session file.
I'm going to start a new session.
Rounds & Steps.
The second GUI step wants you to name the session and indicate the number of Rounds
and Steps.
We will leave this at 1 round and 1 step for simplicity.
To get a good calibration, I usually set the number of rounds between 4 and 6.
Directory & Input Files.
The next step sets up your directory and input structure.
You will need to indicate the Project Directory – where the work will be done.
The PRMS model executable, control file, parameter file, and data file.
You also need to indicate where you want the Luca-generated files to be written.
Calibration Period.
You now need to input the model initialization start date and the calibration start and end
dates.
Parameter Selection.
Since I only set this up for 1 step, there is only 1 tab with Step 1.
If you had additional steps you would have to set up each of the steps here by selecting
the tabs.
I have chosen 2 parameters, dday_intcp and dday_slope to calibrate.
If the Available Parameters column is not properly populated, then you need to run the
PRMS executable with the –print command.
Luca reads the parameter names from the par_name file generated from the –print command.
Calibration Strategy.
The step tabs are along the top.
We only have 1 step.
Each parameter that you have chosen for a given step is listed with its initial value
from the parameter file.
In this case, dday_intcp is dimensioned by month, thus the 12 values.
You can either calibrate the mean value or calibrate each month individually.
Be careful with this option.
In this case, clicking on individual will give you 12 versus 1 parameter if you click
on mean.
You can unclick some of the months if you don't want to calibrate them.
For example, you may want to not calibrate the snow adjustment parameter in the summer.
The ‘Parameters are binary’ button is used for parameters like psta_nuse, which
is either a 0 or 1, indicating whether you want to use that station for precipitation
distribution.
You can optimize station choice using this option by letting Luca find the best set of
stations that give the best volumes of stream flow.
You need to set the lower and upper bounds for each parameter here as well.
SCE Control Parameters.
You now need to set your SCE control parameters which are defaulted automatically according
to table 3 in the Luca manual.
Number of Objective Functions.
On this page, the user needs to enter the number of objective functions for each step.
Multi-Objective Function Setup.
Now you have to setup the objective function calculations.
You can either minimize or maximize the objective function.
Choose minimize unless you choose correlation as your objective function type.
If you chose more than 1 objective function on the previous page, the tabs would show
up here for each objective function.
You need to choose the objective function type and the weight associated with each.
The Data Subdivide lets you choose subsets of your data for calibration.
For example, say your objective function is using measured and simulated streamflow.
If you only want to use the high flow days you could make a data file that gives every
day a zero, except for the days that you consider to be high flows, which you could indicate
with a 1.
Then, you click the data subdivide, enter the filename and enter a 1 in the data subdivide
value box.
This is a very effective way to subset your data sets for calibration.
The Time Step lets you summarize your data to a given timestep when calculating the objective
functions.
Ignore the Subdaily option.
You can calibrate on a daily time step with a running mean.
You can calibrate to a monthly mean, mean monthly, or annual mean.
You can choose a period within your data that you want to calibrate to – for example maybe
you only want to consider the spring.
Simulated & Observed Variables.
Now, you need to select the simulated and observed variables for each calibration step.
If you have run PRMS with the –print command, then all the output variables should show
up in the simulated variable list.
Your observed runoff is a variable in the Statvar File.
If you have more than one streamgage in your input data file, then you will have to choose
the appropriate node number.
If you were following the calibration table and wanted to calibrate Solar Radiation, then
you would choose basin_potsw as your simulated variable and choose external source and enter
filename that has the observed solar radiation.
If you click on Range, then your external data source contains a minimum and maximum
for each time step.
This is a good option if you understand the error in your measured data.
Output Files.
If you click the Generate Calibration Trace File in this step, then Luca will save every
single PRMS calibration run.
This makes a gigantic file.
People like to plot response surfaces, so they click this button.
I would caution you about clicking this if you don't have a lot of space on your machine.
Save Session.
This is where you can save the Luca setup that you just made.
You can save the session file, and then you can re-start Luca and load this session file.
Calibration Run.
This is the last page in the Luca setup.
When you are ready to run, then click the Run Calibration button.
Going back to the 4-step calibration procedure for the Merced River basin example from appendix
3 in the PRMS manual.
This gives you an example of what to look at after the calibration is finished.
I like to go through each calibration step and look at the measured and final simulated
variables.
In the first step, we calibrate to mean monthly values of solar radiation.
So this graphic shows you mean monthly measured (gray) and simulated (red for calibration
and blue for evaluation period) solar radiation.
Here is the same plot for the 2nd step – PET.
For streamflow volumes, step 3, I look at streamflow summarized to each of the objective
function time steps.
Mean annual streamflow.
Mean monthly stream flow for the calibration and evaluation periods.
And monthly mean streamflow
For streamflow timing, step 4, I look at annual Nash Sutcliffe values.
Most people look at the Nash Sutcliffe over the whole period of record, but sometimes
it's really useful to look at it year by year.
When you see a year that really sticks out from the rest of them, you might want to look
more closely at that year.
Always look at your daily hydrographs.
That's PRMS Calibration with Luca.
Some other resources you may want to investigate include a parameter sensitivity paper by Steve
Markstrom.
Here is a table from his paper that indicates the most sensitive PRMS parameter by process.
This could be very helpful when you are setting up a multi-step calibration.
If you have any more questions, you should click on the Help button on our website and
fill out our form and submit it, and we'll get back to you.
Thank you.