message = "État initial imposé (par défaut, c'est l'ébauche si None)",
)
self.requireInputArguments(
- mandatory= ("Xb", "Y", "HO"),
- optional = ("R"),
+ mandatory= ("Xb", "Y", "HO", "R"),
)
self.setAttributes(tags=(
"Optimization",
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))
#
- if R is None:
- RI = 1.
- RdemiI = 1.
- else:
- RI = R.getI()
- if self._parameters["Minimizer"] == "LM":
- RdemiI = R.choleskyI()
+ RI = R.getI()
+ if self._parameters["Minimizer"] == "LM":
+ RdemiI = R.choleskyI()
#
# Définition de la fonction-coût
# ------------------------------
self.__adaoObject[ename] = None
for ename in ("ObservationOperator", "EvolutionModel", "ControlModel"):
self.__adaoObject[ename] = {}
+ for ename in ("BackgroundError", "ObservationError"):
+ self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.)
+ for ename in ("EvolutionError",):
+ self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.e-16)
for ename in ("Observer", "UserPostAnalysis"):
self.__adaoObject[ename] = []
self.__StoredInputs[ename] = [] # Vide par defaut
if __hasNotExecute:
self._lineSerie.append("%s.execute()"%(self._objname,))
if __upa is not None and len(__upa)>0:
- __upa = __upa.replace("ADD.",str(self._objname)+".")
+ __upa = __upa.replace("ADD",str(self._objname))
self._lineSerie.append(__upa)
def _addLine(self, line=""):
"Ajoute un enregistrement individuel"
#
elif __command == "UserPostAnalysis" and type(r) is dict:
if 'STRING' in r:
- __UserPostAnalysis = r['STRING'].replace("ADD.",str(self._objname)+".")
+ __UserPostAnalysis = r['STRING'].replace("ADD",str(self._objname))
__commands.append( "set( Concept='UserPostAnalysis', String=\"\"\"%s\"\"\" )"%(__UserPostAnalysis,) )
elif 'SCRIPT_FILE' in r and os.path.exists(r['SCRIPT_FILE']):
__UserPostAnalysis = open(r['SCRIPT_FILE'],'r').read()
#
# Initialisations
# ---------------
- #
- # Opérateur non-linéaire pour la boucle externe
Hm = HO["Direct"].appliedTo
#
- # Précalcul des inversions de B et R
BI = B.getI()
RI = R.getI()
#
- # Point de démarrage de l'optimisation
Xini = selfA._parameters["InitializationPoint"]
#
HXb = numpy.asmatrix(numpy.ravel( Hm( Xb ) )).T
"""
#
# Initialisation
+ # --------------
if selfA._parameters["EstimationOf"] == "State":
M = EM["Direct"].appliedTo
#
#
# Initialisations
# ---------------
- #
- # Opérateurs
Hm = HO["Direct"].appliedTo
#
- # Utilisation éventuelle d'un vecteur H(Xb) précalculé
if HO["AppliedInX"] is not None and "HXb" in HO["AppliedInX"]:
HXb = Hm( Xb, HO["AppliedInX"]["HXb"] )
else:
HBHTpR = R + Ht * BHT
Innovation = Y - HXb
#
- # Point de démarrage de l'optimisation
Xini = numpy.zeros(Xb.shape)
#
# Définition de la fonction-coût
#
# Initialisations
# ---------------
- #
- # Opérateurs
Hm = HO["Direct"].appliedTo
Ha = HO["Adjoint"].appliedInXTo
#
- # Utilisation éventuelle d'un vecteur H(Xb) précalculé
if HO["AppliedInX"] is not None and "HXb" in HO["AppliedInX"]:
HXb = Hm( Xb, HO["AppliedInX"]["HXb"] )
else:
HtMb = HtMb.reshape(Y.size,Xb.size) # ADAO & check shape
selfA.StoredVariables["JacobianMatrixAtBackground"].store( HtMb )
#
- # Précalcul des inversions de B et R
BI = B.getI()
RI = R.getI()
#
- # Point de démarrage de l'optimisation
Xini = selfA._parameters["InitializationPoint"]
#
# Définition de la fonction-coût
#
# Initialisations
# ---------------
- #
- # Opérateurs
Hm = HO["Direct"].appliedTo
Ha = HO["Adjoint"].appliedInXTo
#
- # Précalcul des inversions de B et R
BT = B.getT()
RI = R.getI()
#
- # Point de démarrage de l'optimisation
Xini = numpy.zeros(Xb.shape)
#
# Définition de la fonction-coût