From f8cd6e3b90bb506b03646aa9fa879ceeedd8c7a2 Mon Sep 17 00:00:00 2001 From: unknown <olivier.delaigue@ANPI1430.antony.irstea.priv> Date: Tue, 25 Oct 2016 14:47:27 +0200 Subject: [PATCH] Code simplification for the "Calibration_Michel" function --- R/Calibration_Michel.R | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/R/Calibration_Michel.R b/R/Calibration_Michel.R index 873c0036..f46aaf00 100644 --- a/R/Calibration_Michel.R +++ b/R/Calibration_Michel.R @@ -94,10 +94,11 @@ Calibration_Michel <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FU ##Creation_of_new_candidates_______________________________________________ + OptimParam <- is.na(CalibOptions$FixedParam) if(PrefilteringType==1){ CandidatesParamR <- CalibOptions$StartParamList; } - if(PrefilteringType==2){ DistribParamR <- CalibOptions$StartParamDistrib; DistribParamR[,!CalibOptions$OptimParam] <- NA; CandidatesParamR <- ProposeCandidatesGrid(DistribParamR)$NewCandidates; } + if(PrefilteringType==2){ DistribParamR <- CalibOptions$StartParamDistrib; DistribParamR[,!OptimParam] <- NA; CandidatesParamR <- ProposeCandidatesGrid(DistribParamR)$NewCandidates; } ##Remplacement_of_non_optimised_values_____________________________________ - CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam]; return(x); }); + CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!OptimParam] <- CalibOptions$FixedParam[!OptimParam]; return(x); }); if(NParam>1){ CandidatesParamR <- t(CandidatesParamR); } else { CandidatesParamR <- cbind(CandidatesParamR); } ##Loop_to_test_the_various_candidates______________________________________ @@ -214,10 +215,10 @@ Calibration_Michel <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FU ##Creation_of_new_candidates______________________________________________ - CandidatesParamT <- ProposeCandidatesLoc(NewParamOptimT,OldParamOptimT,RangesT,CalibOptions$OptimParam,Pace)$NewCandidatesT; + CandidatesParamT <- ProposeCandidatesLoc(NewParamOptimT,OldParamOptimT,RangesT,OptimParam,Pace)$NewCandidatesT; CandidatesParamR <- FUN_TRANSFO(CandidatesParamT,"TR"); ##Remplacement_of_non_optimised_values_____________________________________ - CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam]; return(x); }); + CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!OptimParam] <- CalibOptions$FixedParam[!OptimParam]; return(x); }); if(NParam>1){ CandidatesParamR <- t(CandidatesParamR); } else { CandidatesParamR <- cbind(CandidatesParamR); } @@ -250,7 +251,7 @@ Calibration_Michel <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FU } ##We_update_PaceDiag VectPace <- NewParamOptimT-OldParamOptimT; - for(iC in 1:NParam){ if(CalibOptions$OptimParam[iC]==TRUE){ + for(iC in 1:NParam){ if(OptimParam[iC]){ if(VectPace[iC]!=0){ PaceDiag[iC] <- CLG*PaceDiag[iC]+(1-CLG)*VectPace[iC]; } if(VectPace[iC]==0){ PaceDiag[iC] <- CLG*PaceDiag[iC]; } } } @@ -268,7 +269,7 @@ Calibration_Michel <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FU iNewOptim <- 0; iNew <- 1; CandidatesParamT <- NewParamOptimT+PaceDiag; if(!is.matrix(CandidatesParamT)){ CandidatesParamT <- matrix(CandidatesParamT,nrow=1); } ##If_we_exit_the_range_of_possible_values_we_go_back_on_the_boundary - for(iC in 1:NParam){ if(CalibOptions$OptimParam[iC]==TRUE){ + for(iC in 1:NParam){ if(OptimParam[iC]){ if(CandidatesParamT[iNew,iC]<RangesT[1,iC]){ CandidatesParamT[iNew,iC] <- RangesT[1,iC]; } if(CandidatesParamT[iNew,iC]>RangesT[2,iC]){ CandidatesParamT[iNew,iC] <- RangesT[2,iC]; } } } -- GitLab