Calibration_Michel.Rd 6.55 KB
Newer Older
1
2
3
4
5
6
\encoding{UTF-8}
\name{Calibration_Michel}
\alias{Calibration_Michel}
\title{Calibration algorithm optimises the error criterion selected as objective function using the Irstea-HBAN procedure described by C. Michel}
\usage{
Calibration_Michel(InputsModel, RunOptions, InputsCrit, CalibOptions,
7
  FUN_MOD, FUN_CRIT, FUN_TRANSFO = NULL, verbose = TRUE)
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
}
\arguments{
\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}

\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}

\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}

\item{CalibOptions}{[object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details}

\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}

\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}

\item{FUN_TRANSFO}{(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined}

24
\item{verbose}{(optional) [boolean] boolean indicating if the function is run in verbose mode or not, default=TRUE}
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
}
\value{
[list] list containing the function outputs organised as follows:
         \tabular{ll}{
         \emph{$ParamFinalR  }  \tab   [numeric] parameter set obtained at the end of the calibration \cr
         \emph{$CritFinal    }  \tab   [numeric] error criterion selected as objective function obtained at the end of the calibration \cr
         \emph{$NIter        }  \tab   [numeric] number of iterations during the calibration \cr
         \emph{$NRuns        }  \tab   [numeric] number of model runs done during the calibration \cr
         \emph{$HistParamR   }  \tab   [numeric] table showing the progression steps in the search for optimal set: parameter values \cr
         \emph{$HistCrit     }  \tab   [numeric] table showing the progression steps in the search for optimal set: criterion values \cr
         \emph{$MatBoolCrit  }  \tab   [boolean] table giving the requested and actual time steps over which the model is calibrated \cr
         \emph{$CritName     }  \tab   [character] name of the calibration criterion used as objective function \cr
         \emph{$CritBestValue}  \tab   [numeric] theoretical best criterion value \cr
         }
}
\description{
Calibration algorithm optimises the error criterion selected as objective function. \cr
\cr
The algorithm is based on a local search procedure. 
First, a screening is performed using either a rough predefined grid or a list of parameter sets
and then a simple steepest descent local search algorithm is performed.
}
\details{
A screening is first performed either based on a rough predefined grid (considering various initial 
values for each parameter) or from a list of initial parameter sets. \cr
The best set identified in this screening is then used as a starting point for the steepest 
descent local search algorithm. \cr
For this search, since the ranges of parameter values can be quite different,
simple mathematical transformations are applied to parameters to make them vary
in a similar range and get a similar sensitivity to a predefined search step.  This is done using the TransfoParam functions. \cr
During the steepest descent method, at each iteration, we start from a parameter set of NParam values (NParam being the number of 
free parameters of the chosen hydrological model) and we determine the 2*NParam-1 new candidates 
by changing one by one the different parameters (+/- search step). \cr
All these candidates are tested and the best one kept to be the starting point for the next    
iteration. At the end of each iteration, the the search step is either increased or decreased to adapt    
the progression speed. A composite step can occasionally be done. \cr
The calibration algorithm stops when the search step becomes smaller than a predefined threshold. \cr
}
\examples{
library(airGR)
unknown's avatar
unknown committed
65
66

## loading catchment data
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
data(L0123001)

## preparation of InputsModel object
InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR4J, DatesR = BasinObs$DatesR, 
                                 Precip = BasinObs$P, PotEvap = BasinObs$E)

## calibration period selection
Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"), 
               which(format(BasinObs$DatesR, format = "\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))

## preparation of RunOptions object
RunOptions <- CreateRunOptions(FUN_MOD = RunModel_GR4J, InputsModel = InputsModel, 
                               IndPeriod_Run = Ind_Run)

## calibration criterion: preparation of the InputsCrit object
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel, 
                               RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])

## preparation of CalibOptions object
CalibOptions <- CreateCalibOptions(FUN_MOD = RunModel_GR4J, FUN_CALIB = Calibration_Michel)

## calibration
OutputsCalib <- Calibration_Michel(InputsModel = InputsModel, RunOptions = RunOptions, 
                                 InputsCrit = InputsCrit, CalibOptions = CalibOptions, 
                                 FUN_MOD = RunModel_GR4J, FUN_CRIT = ErrorCrit_NSE)

## simulation
Param <- OutputsCalib$ParamFinalR
OutputsModel <- RunModel_GR4J(InputsModel = InputsModel,
                              RunOptions = RunOptions, Param = Param)

## results preview
99
plot(OutputsModel, Qobs = BasinObs$Qmm[Ind_Run])
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

## efficiency criterion: Nash-Sutcliffe Efficiency
InputsCrit  <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel, 
                                RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

## efficiency criterion: Kling-Gupta Efficiency
InputsCrit  <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE, InputsModel = InputsModel, 
                                RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_KGE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
}
\author{
Laurent Coron, Claude Michel (August 2013)
}
\references{
Michel, C. (1991),
       Hydrologie appliquée aux petits bassins ruraux, Hydrology handbook (in French), Cemagref, Antony, France.
}
\seealso{
119
\code{\link{Calibration}},
120
121
122
123
124
         \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, 
         \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
}