#
# Calcul de l'innovation
# ----------------------
+ if Y.size != HXb.size:
+ raise ValueError("The size %i of observations Y and %i of observed calculation H(X) are different, they have to be identical."%(Y.size,HXb.size))
+ if max(Y.shape) != max(HXb.shape):
+ raise ValueError("The shapes %s of observations Y and %s of observed calculation H(X) are different, they have to be identical."%(Y.shape,HXb.shape))
d = Y - HXb
logging.debug("%s Innovation d = %s"%(self._name, d))
#
# Précalcul des inversion appellée dans les fonction-coût et gradient
# -------------------------------------------------------------------
- BI = B.I
- RI = R.I
+ if B is not None:
+ BI = B.I
+ elif Parameters["B_scalar"] is not None:
+ BI = 1.0 / Parameters["B_scalar"]
+ #
+ if R is not None:
+ RI = R.I
+ elif Parameters["R_scalar"] is not None:
+ RI = 1.0 / Parameters["R_scalar"]
#
# Définition de la fonction-coût
# ------------------------------
logging.debug("%s Nombre maximal de pas d'optimisation = %s"%(self._name, str(maxiter)))
if Parameters.has_key("CostDecrementTolerance") and (Parameters["CostDecrementTolerance"] > 0):
ftol = float(Parameters["CostDecrementTolerance"])
- factr = 1./ftol
+ factr = ftol * 1.e14
else:
ftol = 1.e-7
- factr = 1./ftol
+ factr = ftol * 1.e14
logging.debug("%s Diminution relative minimale du cout lors de l'arret = %s"%(self._name, str(1./factr)))
if Parameters.has_key("ProjectedGradientTolerance") and (Parameters["ProjectedGradientTolerance"] > -1):
pgtol = float(Parameters["ProjectedGradientTolerance"])
logging.debug("%s Maximum des composantes du gradient lors de l'arret = %s"%(self._name, str(gtol)))
InnerMinimizerList = ["CG", "NCG", "BFGS"]
if Parameters.has_key("InnerMinimizer") and (Parameters["InnerMinimizer"] in InnerMinimizerList):
- InnerMinimizer = str( Parameters["Minimizer"] )
+ InnerMinimizer = str( Parameters["InnerMinimizer"] )
else:
InnerMinimizer = "BFGS"
logging.debug("%s Minimiseur interne utilisé = %s"%(self._name, InnerMinimizer))
- logging.debug("%s Norme du gradient lors de l'arret = %s"%(self._name, str(gtol)))
#
# Minimisation de la fonctionnelle
# --------------------------------
fprime = GradientOfCostFunction,
args = (),
bounds = Bounds,
- maxfun = maxiter,
+ maxfun = maxiter-1,
factr = factr,
pgtol = pgtol,
iprint = iprint,