From eb3f809f86414c791f7624710dbe4004d1dc4a80 Mon Sep 17 00:00:00 2001 From: Olivier Delaigue <olivier.delaigue@irstea.fr> Date: Thu, 14 Apr 2016 15:59:04 +0200 Subject: [PATCH] Renommage des fonctions avec le suffixe HBAN --- ...alibration_HBAN.R => Calibration_Michel.R} | 8 +- ..._HBAN.R => DataAltiExtrapolation_Valery.R} | 2 +- man/Calibration_HBAN.Rd | 128 ----------------- man/Calibration_Michel.Rd | 130 ++++++++++++++++++ ...BAN.Rd => DataAltiExtrapolation_Valery.Rd} | 12 +- ...on_HBAN.R => example_Calibration_Michel.R} | 4 +- 6 files changed, 143 insertions(+), 141 deletions(-) rename R/{Calibration_HBAN.R => Calibration_Michel.R} (98%) rename R/{DataAltiExtrapolation_HBAN.R => DataAltiExtrapolation_Valery.R} (99%) delete mode 100644 man/Calibration_HBAN.Rd create mode 100644 man/Calibration_Michel.Rd rename man/{DataAltiExtrapolation_HBAN.Rd => DataAltiExtrapolation_Valery.Rd} (91%) rename tests/{example_Calibration_HBAN.R => example_Calibration_Michel.R} (95%) diff --git a/R/Calibration_HBAN.R b/R/Calibration_Michel.R similarity index 98% rename from R/Calibration_HBAN.R rename to R/Calibration_Michel.R index 152ac7a5..20600c56 100644 --- a/R/Calibration_HBAN.R +++ b/R/Calibration_Michel.R @@ -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); diff --git a/R/DataAltiExtrapolation_HBAN.R b/R/DataAltiExtrapolation_Valery.R similarity index 99% rename from R/DataAltiExtrapolation_HBAN.R rename to R/DataAltiExtrapolation_Valery.R index 7a5354b6..8b001bb1 100644 --- a/R/DataAltiExtrapolation_HBAN.R +++ b/R/DataAltiExtrapolation_Valery.R @@ -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_______________________________________________________________ diff --git a/man/Calibration_HBAN.Rd b/man/Calibration_HBAN.Rd deleted file mode 100644 index 924f74cf..00000000 --- a/man/Calibration_HBAN.Rd +++ /dev/null @@ -1,128 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Calibration_HBAN.R -\encoding{UTF-8} -\name{Calibration_HBAN} -\alias{Calibration_HBAN} -\title{Calibration algorithm which minimises the error criterion using the Irstea-HBAN procedure} -\usage{ -Calibration_HBAN(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} - -\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} - -\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE} -} -\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 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{$CritBestValue} \tab [numeric] theoretical best criterion value \cr - } -} -\description{ -Calibration algorithm which minimises the error criterion. \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 -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 -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 -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. -} -\examples{ -## load of catchment data -require(airGR) -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_HBAN) - -## calibration -OutputsCalib <- Calibration_HBAN(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 -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="")) - -## 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="")) - -} -\author{ -Laurent Coron (August 2013) -} -\references{ -Michel, C. (1991), - Hydrologie appliquée aux petits bassins ruraux, Hydrology handout (in French), Cemagref, Antony, France. -} -\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}}, - \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}. -} - diff --git a/man/Calibration_Michel.Rd b/man/Calibration_Michel.Rd new file mode 100644 index 00000000..8a576b1f --- /dev/null +++ b/man/Calibration_Michel.Rd @@ -0,0 +1,130 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Calibration_Michel.R +\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, + FUN_MOD, FUN_CRIT, FUN_TRANSFO = NULL, quiet = FALSE) +} +\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} + +\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE} +} +\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{ +## loading 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) + +## 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 +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 = "")) + +## 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 = "")) + +} +\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{ +\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}}, + \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}. +} + diff --git a/man/DataAltiExtrapolation_HBAN.Rd b/man/DataAltiExtrapolation_Valery.Rd similarity index 91% rename from man/DataAltiExtrapolation_HBAN.Rd rename to man/DataAltiExtrapolation_Valery.Rd index 1d71705c..6a95b62a 100644 --- a/man/DataAltiExtrapolation_HBAN.Rd +++ b/man/DataAltiExtrapolation_Valery.Rd @@ -1,11 +1,11 @@ % 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), diff --git a/tests/example_Calibration_HBAN.R b/tests/example_Calibration_Michel.R similarity index 95% rename from tests/example_Calibration_HBAN.R rename to tests/example_Calibration_Michel.R index 75b7832f..efc26721 100644 --- a/tests/example_Calibration_HBAN.R +++ b/tests/example_Calibration_Michel.R @@ -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) -- GitLab