Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
HYCAR-Hydro
airGR
Commits
eb3f809f
Commit
eb3f809f
authored
Apr 14, 2016
by
Delaigue Olivier
Browse files
Renommage des fonctions avec le suffixe HBAN
parent
db5eed9a
Changes
5
Hide whitespace changes
Inline
Side-by-side
R/Calibration_
HBAN
.R
→
R/Calibration_
Michel
.R
View file @
eb3f809f
...
...
@@ -27,7 +27,7 @@
#' @references
#' Michel, C. (1991),
#' Hydrologie appliquée aux petits bassins ruraux, Hydrology handout (in French), Cemagref, Antony, France.
#' @example tests/example_Calibration_
HBAN
.R
#' @example tests/example_Calibration_
Michel
.R
#' @seealso \code{\link{Calibration}}, \code{\link{Calibration_optim}},
#' \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
#' \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}},
...
...
@@ -57,7 +57,7 @@
#' \emph{$CritBestValue} \tab [numeric] theoretical best criterion value \cr
#' }
#**************************************************************************************************
Calibration_
HBAN
<-
function
(
InputsModel
,
RunOptions
,
InputsCrit
,
CalibOptions
,
FUN_MOD
,
FUN_CRIT
,
FUN_TRANSFO
=
NULL
,
quiet
=
FALSE
){
Calibration_
Michel
<-
function
(
InputsModel
,
RunOptions
,
InputsCrit
,
CalibOptions
,
FUN_MOD
,
FUN_CRIT
,
FUN_TRANSFO
=
NULL
,
quiet
=
FALSE
){
##_____Arguments_check_____________________________________________________________________
...
...
@@ -65,7 +65,7 @@ Calibration_HBAN <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_
if
(
inherits
(
RunOptions
,
"RunOptions"
)
==
FALSE
){
stop
(
"RunOptions must be of class 'RunOptions' \n"
);
return
(
NULL
);
}
if
(
inherits
(
InputsCrit
,
"InputsCrit"
)
==
FALSE
){
stop
(
"InputsCrit must be of class 'InputsCrit' \n"
);
return
(
NULL
);
}
if
(
inherits
(
CalibOptions
,
"CalibOptions"
)
==
FALSE
){
stop
(
"CalibOptions must be of class 'CalibOptions' \n"
);
return
(
NULL
);
}
if
(
inherits
(
CalibOptions
,
"HBAN"
)
==
FALSE
){
stop
(
"CalibOptions must be of class 'HBAN' if Calibration_
HBAN
is used \n"
);
return
(
NULL
);
}
if
(
inherits
(
CalibOptions
,
"HBAN"
)
==
FALSE
){
stop
(
"CalibOptions must be of class 'HBAN' if Calibration_
Michel
is used \n"
);
return
(
NULL
);
}
##_check_FUN_TRANSFO
...
...
@@ -101,7 +101,7 @@ Calibration_HBAN <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_
if
(
"StartParamDistrib"
%in%
names
(
CalibOptions
)){
PrefilteringType
<-
2
;
}
else
{
PrefilteringType
<-
1
;
}
if
(
PrefilteringType
==
1
){
NParam
<-
ncol
(
CalibOptions
$
StartParamList
);
}
if
(
PrefilteringType
==
2
){
NParam
<-
ncol
(
CalibOptions
$
StartParamDistrib
);
}
if
(
NParam
>
20
){
stop
(
"Calibration_
HBAN
can handle a maximum of 20 parameters \n"
);
return
(
NULL
);
}
if
(
NParam
>
20
){
stop
(
"Calibration_
Michel
can handle a maximum of 20 parameters \n"
);
return
(
NULL
);
}
HistParamR
<-
matrix
(
NA
,
nrow
=
500
*
NParam
,
ncol
=
NParam
);
HistParamT
<-
matrix
(
NA
,
nrow
=
500
*
NParam
,
ncol
=
NParam
);
HistCrit
<-
matrix
(
NA
,
nrow
=
500
*
NParam
,
ncol
=
1
);
...
...
R/DataAltiExtrapolation_
HBAN
.R
→
R/DataAltiExtrapolation_
Valery
.R
View file @
eb3f809f
...
...
@@ -40,7 +40,7 @@
#' \emph{$ZLayers } \tab [numeric] vector of median elevation for each layer \cr
#' }
#*****************************************************************************************************************
DataAltiExtrapolation_
HBAN
<-
function
(
DatesR
,
Precip
,
TempMean
,
TempMin
=
NULL
,
TempMax
=
NULL
,
ZInputs
,
HypsoData
,
NLayers
,
quiet
=
FALSE
){
DataAltiExtrapolation_
Valery
<-
function
(
DatesR
,
Precip
,
TempMean
,
TempMin
=
NULL
,
TempMax
=
NULL
,
ZInputs
,
HypsoData
,
NLayers
,
quiet
=
FALSE
){
##Altitudinal_gradient_functions_______________________________________________________________
...
...
man/Calibration_
HBAN
.Rd
→
man/Calibration_
Michel
.Rd
View file @
eb3f809f
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/Calibration_
HBAN
.R
% Please edit documentation in R/Calibration_
Michel
.R
\encoding{UTF-8}
\name{Calibration_
HBAN
}
\alias{Calibration_
HBAN
}
\title{Calibration algorithm
which min
imises the error criterion using the Irstea-HBAN procedure}
\name{Calibration_
Michel
}
\alias{Calibration_
Michel
}
\title{Calibration algorithm
opt
imises the error criterion
selected as objective function
using the Irstea-HBAN procedure
described by C. Michel
}
\usage{
Calibration_
HBAN
(InputsModel, RunOptions, InputsCrit, CalibOptions,
FUN_MOD,
FUN_CRIT, FUN_TRANSFO = NULL, quiet = FALSE)
Calibration_
Michel
(InputsModel, RunOptions, InputsCrit, CalibOptions,
FUN_MOD,
FUN_CRIT, FUN_TRANSFO = NULL, quiet = FALSE)
}
\arguments{
\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
...
...
@@ -29,95 +29,97 @@ Calibration_HBAN(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD,
[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 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
when
the model is calibrated \cr
\emph{$CritName } \tab [character] name of the calibration criterion \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
which min
imises the error criterion. \cr
Calibration algorithm
opt
imises 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
from
a rough predefined grid (considering various initial
values for each paramete) or from a list of initial parameter sets. \cr
A screening is first performed either
based on
a rough predefined grid (considering various initial
values for each paramete
r
) 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, the parameters are used in a transformed version, to obtain uniform
variation ranges (and thus a similar pace), while the true ranges might be quite different. \cr
At each iteration, we start from a parameter set of NParam values (NParam being the number of
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 (+/-
pace
). \cr
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 pace is either increased or decreased to adapt
the progression speed. A diagonal progress can occasionally be done. \cr
The calibration algorithm stops when the pace becomes too small. \cr
To optimise the exploration of the parameter space, transformation functions are used to convert
the model parameters. This is done using the TransfoParam functions.
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{
## load
of
catchment data
require
(airGR)
## load
ing
catchment data
library
(airGR)
data(L0123001)
## preparation of InputsModel object
InputsModel <- CreateInputsModel(FUN_MOD
=
RunModel_GR4J,DatesR
=
BasinObs$DatesR,
Precip
=
BasinObs$P,PotEvap
=
BasinObs$E)
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"))
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)
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])
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_
HBAN
)
CalibOptions <- CreateCalibOptions(FUN_MOD
=
RunModel_GR4J,
FUN_CALIB
=
Calibration_
Michel
)
## calibration
OutputsCalib <- Calibration_
HBAN
(InputsModel
=
InputsModel,RunOptions
=
RunOptions,
InputsCrit
=
InputsCrit,CalibOptions
=
CalibOptions,
FUN_MOD
=
RunModel_GR4J,FUN_CRIT
=
ErrorCrit_NSE)
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)
OutputsModel <- RunModel_GR4J(InputsModel = InputsModel,
RunOptions = RunOptions, Param = Param)
## results preview
plot_OutputsModel(OutputsModel
=
OutputsModel,Qobs
=
BasinObs$Qmm[Ind_Run])
plot_OutputsModel(OutputsModel
=
OutputsModel,
Qobs
=
BasinObs$Qmm[Ind_Run])
## 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)
cat(paste(" Crit ",OutputsCrit$CritName," ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel,
RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
cat(paste(" Crit ", OutputsCrit$CritName, " ",
round(OutputsCrit$CritValue, 4), "\\n", sep = ""))
## 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)
cat(paste(" Crit ",OutputsCrit$CritName," ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE, InputsModel = InputsModel,
RunOptions = RunOptions, Qobs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_KGE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)
cat(paste(" Crit ", OutputsCrit$CritName, " ",
round(OutputsCrit$CritValue, 4), "\\n", sep = ""))
}
\author{
Laurent Coron (August 2013)
Laurent Coron
, Claude Michel
(August 2013)
}
\references{
Michel, C. (1991),
Hydrologie appliquée aux petits bassins ruraux, Hydrology hand
out
(in French), Cemagref, Antony, France.
Hydrologie appliquée aux petits bassins ruraux, Hydrology hand
book
(in French), Cemagref, Antony, France.
}
\seealso{
\code{\link{Calibration}}, \code{\link{Calibration_optim}},
...
...
man/DataAltiExtrapolation_
HBAN
.Rd
→
man/DataAltiExtrapolation_
Valery
.Rd
View file @
eb3f809f
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/DataAltiExtrapolation_
HBAN
.R
% Please edit documentation in R/DataAltiExtrapolation_
Valery
.R
\encoding{UTF-8}
\name{DataAltiExtrapolation_
HBAN
}
\alias{DataAltiExtrapolation_
HBAN
}
\title{Altitudinal extrapolation of precipitation and temperature series}
\name{DataAltiExtrapolation_
Valery
}
\alias{DataAltiExtrapolation_
Valery
}
\title{Altitudinal extrapolation of precipitation and temperature series
described by A. Valéry
}
\usage{
DataAltiExtrapolation_
HBAN
(DatesR, Precip, TempMean, TempMin = NULL,
DataAltiExtrapolation_
Valery
(DatesR, Precip, TempMean, TempMin = NULL,
TempMax = NULL, ZInputs, HypsoData, NLayers, quiet = FALSE)
}
\arguments{
...
...
@@ -49,7 +49,7 @@ Forcing data (precipitation and air temperature) are extrapolated using gradient
This function is used by the \emph{CreateInputsModel} function. \cr
}
\author{
Laurent Coron, Pierre Brigode (June 2014)
Laurent Coron,
Audrey Valéry,
Pierre Brigode (June 2014)
}
\references{
Turcotte, R., L.-G. Fortin, V. Fortin, J.-P. Fortin and J.-P. Villeneuve (2007),
...
...
tests/example_Calibration_
HBAN
.R
→
tests/example_Calibration_
Michel
.R
View file @
eb3f809f
...
...
@@ -18,10 +18,10 @@ 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_
HBAN
)
CalibOptions
<-
CreateCalibOptions
(
FUN_MOD
=
RunModel_GR4J
,
FUN_CALIB
=
Calibration_
Michel
)
## calibration
OutputsCalib
<-
Calibration_
HBAN
(
InputsModel
=
InputsModel
,
RunOptions
=
RunOptions
,
OutputsCalib
<-
Calibration_
Michel
(
InputsModel
=
InputsModel
,
RunOptions
=
RunOptions
,
InputsCrit
=
InputsCrit
,
CalibOptions
=
CalibOptions
,
FUN_MOD
=
RunModel_GR4J
,
FUN_CRIT
=
ErrorCrit_NSE
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment