Parameter estimation

Bound-constrained optimisation

Rameau uses a modified version of the Rosenbrock method [Rosenbrock, 1960] to optimise physical parameter values by confronting simulated hydrological variables with observations. The Rosenbrock method is a bound-constrained iterative numerical method used to find the minimum of an objective function in a multidimensional space. In Rameau, the global objective function \(F\) that is minimised is written as a weighted average:

\[F = \sum_{i=1}^n \frac{F_q^iP_q^i + F_h^iP_h^i}{P_q^i + P_h^i}\]

with

  • \(F_q^i\) the fitting criterion between observed and simulated river flows of the ith watershed.

  • \(P_q^i\) the weight allocated to the fitting criterion \(F_q^i\)

  • \(F_h^i\) the fitting criterion between observed and simulated groundwater levels of the i:sup:th watershed.

  • \(P_h^i\) the weight allocated to the fitting criterion \(F_h^i\)

Regression

Some parameters are estimated through linear or multiple regression depending on the parameter optimisation settings.

Regression for riverflow

During an optimisation procedure, one can estimate at most three parameters using a regression procedure: the drainage area, the minimum river flow, and the pumping river coefficient. The regression is achieved by using a least square minimisation algorithm provided by the fortran standard library.

The regression procedure tries to explain the relationship between the observed river flow time series \(Q_o\) (in \(\mathrm{m^3.s^{-1}}\)) with the simulated flow directly at model reservoir outlets (\(Q_w\) in \(\mathrm{mm}\)) and, possibly, with the river pumping time series.

During an optimisation iteration run, once the calculation of \(q_l\) is done, the following equation is solved through a regression procedure:

(1)\[Q_o = Aq_w + C_p^rQ_p + Q_e\]

The result of the regression gives access to \(A\), \(C_p^r\) and \(Q_e\). To enable the estimation of these variables by regression, the user needs to set the key opti to true for theses parameters:

[watershed.1]
river.area = { value = 100.0, opti = true }
river.exchange_riverflow = { value = 0.00000, opti = true }
pumping.river.coefficient = { value = 1.00000, opti = true }

If \(A\) is determined by regression, the correction factor for the drainage area is automatically set to zero and not optimised in the model.

Regression for groundwater level

Similarly, storage coefficient \(S\), base level \(H_b\) and the pumping groundwater coefficient \(C_p^g\) can be estimated using a similar regression procedure:

(2)\[H = \frac{0.1}{S}H_g + C_p^gQ_p^g + H_b\]

To enable the estimation of these variables by regression, the user needs to set the key opti to true for theses parameters:

[watershed.1]
groundwater.base_level = { value = 100.0, opti = true }
groundwater.storage.coefficient = { value = 100.0, lower = 0.10000, upper = 80.00000, opti = true, sameas = 0 }
pumping.groundwater.coefficient = { value = 1.00000, opti = true }

See Groundwater parameters and Physical parameters for more details on theses parameters.

The implementation of a simulation that takes groundwater pumping into account is presented in this tutorial example.

Multiple influences

In Equation (2), groundwater reservoir level, considered as a proxy of recharge, and groundwater pumping time series are supposed to explain the groundwater level time series of the piezometric well to simulate. In some cases, other processes can explain a part of the piezometric signal. This could be due to tidal effects, other pumping nearby, river levels, drainage flow in a mine, etc. To take into account these multiple influences, it is possible to enhance Equation (2) by adding other signal explanatory terms.

Let \(n\) be the number of additional influences, \(X_i\) the i-th influence, and \(A_i\) the associated influence coefficient. Equation (2) becomes:

(3)\[H = \frac{0.1}{S}H_g + C_p^gQ_p^g + \sum_{i=1}^n A_iX_i + H_b\]

Coefficients \(A_i\) are estimated using the same multiple regression procedure as before. To enable the estimation of these variables by regression, the user needs to set the key opti to true for theses parameters:

# Here n = 2 and two coefficients are configured
[watershed.1]
# First influence defined here
influence.groundwater.1.coefficient = { value = 1.00000, opti = true }
# Second influence defined here
influence.groundwater.2.coefficient = { value = 1.00000, opti = true }

See Influence for more details on theses parameters.

The implementation of a simulation that takes multiple influences into account is presented in this tutorial example.

Optimisation settings

Maximum iteration number

The maximum number of iterations of the bound-constrained method. If set to zero, no parameter estimation is performed.

[optimization]
maxit = 40

Starting and ending dates of optimisation

Parameters can be optimised only on a specific period.

[optimization]
starting_date = 2000-01-01 00:00:00.000
ending_date = 2010-12-31 00:00:00.000

River flow objective function

Possible criteria for river flows are NSE, KGE and KGE 2012, while for groundwater levels, the only criterion available is NSE.

[optimization]
river_objective_function = "nse"

River flow transformation

River flows can be transformed before computing the criterion. The available transformations are “no”, “square root”, “inverse”, “log” and “fifth root”.

Default value is “no”.

[optimization]
transformation = "no"

Optimisation method

All watersheds can be optimised at once, independently or by Strahler order.

[optimization]
method = "all" # "independent" or "strahler"

Selected watersheds for optimisation

Specific watersheds can be selected for the optimisation. If omitted, the default behaviour is to optimise all the watersheds at once.

[optimization]
selected_watersheds = [1, 2]

Verbosity of output

Print informations about the iterative process.

Default to false.

[optimization]
verbose = false

Watershed optimisation parameters

Weights

Weights allocated to the terms of the objective function are assigned per watershed and per type of variable. If river weights are equal to 0, observed river flows will not be used for estimating parameters. If groundwater weights are equal to 0, observed groundwater levels will be ignored. Default value for river weights is 1 and default value for groundwater weight is 0.

[watershed.1]
river.weight = 1
groundwater.weight = 0.5
[watershed.2]
river.weight = 2
groundwater.weight = 1

Bounded observation values

Observations can be bounded in order to focus on a specific range of observed values during the optimisation procedure. Default value both for groundwater and river is [0.0, 0.0], i.e. no bounds.

[watershed.1]
groundwater.obslim = [ 250.00000, 500.00000 ]
river.obslim = [ 1.00000, 500.00000 ]

Storage coefficient estimation method

If true, storage coefficient is estimated by regression. Otherwise, it will be estimated through the bound-constrained iterative method.

Default value is false.

[watershed.1]
groundwater.storage.regression = false