# ==============================================================================
import adaoBuilder, numpy
def test1():
- """Verification de la disponibilite de l'ensemble des algorithmes"""
+ """Verification de la disponibilite de l'ensemble des algorithmes\n(Utilisation d'un operateur matriciel)"""
Xa = {}
for algo in ("3DVAR", "Blue", "ExtendedBlue", "LinearLeastSquares", "NonLinearLeastSquares", "DerivativeFreeOptimization"):
print
#
return 0
+def test2():
+ """Verification de la disponibilite de l'ensemble des algorithmes\n(Utilisation d'un operateur fonctionnel)"""
+ Xa = {}
+ M = numpy.matrix("1 0 0;0 2 0;0 0 3")
+ def H(x): return M * numpy.asmatrix(numpy.ravel( x )).T
+ for algo in ("3DVAR", "Blue", "ExtendedBlue", "NonLinearLeastSquares", "DerivativeFreeOptimization"):
+ print
+ msg = "Algorithme en test : %s"%algo
+ print msg+"\n"+"-"*len(msg)
+ #
+ adaopy = adaoBuilder.New()
+ adaopy.setAlgorithmParameters(Algorithm=algo, Parameters={"EpsilonMinimumExponent":-10, "Bounds":[[-1,10.],[-1,10.],[-1,10.]]})
+ adaopy.setBackground (Vector = [0,1,2])
+ adaopy.setBackgroundError (ScalarSparseMatrix = 1.)
+ adaopy.setObservation (Vector = [0.5,1.5,2.5])
+ adaopy.setObservationError (DiagonalSparseMatrix = "1 1 1")
+ adaopy.setObservationOperator(OneFunction = H)
+ adaopy.setObserver("Analysis",Template="ValuePrinter")
+ adaopy.execute()
+ Xa[algo] = adaopy.get("Analysis")[-1]
+ del adaopy
+ #
+ M = numpy.matrix("1 0 0;0 2 0;0 0 3")
+ def H(x): return M * numpy.asmatrix(numpy.ravel( x )).T
+ for algo in ("ExtendedKalmanFilter", "KalmanFilter", "UnscentedKalmanFilter", "4DVAR"):
+ print
+ msg = "Algorithme en test : %s"%algo
+ print msg+"\n"+"-"*len(msg)
+ #
+ adaopy = adaoBuilder.New()
+ adaopy.setAlgorithmParameters(Algorithm=algo, Parameters={"EpsilonMinimumExponent":-10, })
+ adaopy.setBackground (Vector = [0,1,2])
+ adaopy.setBackgroundError (ScalarSparseMatrix = 1.)
+ adaopy.setObservation (Vector = [0.5,1.5,2.5])
+ adaopy.setObservationError (DiagonalSparseMatrix = "1 1 1")
+ adaopy.setObservationOperator(OneFunction = H)
+ adaopy.setEvolutionError (ScalarSparseMatrix = 1.)
+ adaopy.setEvolutionModel (Matrix = "1 0 0;0 1 0;0 0 1")
+ adaopy.setObserver("Analysis",Template="ValuePrinter")
+ adaopy.execute()
+ Xa[algo] = adaopy.get("Analysis")[-1]
+ del adaopy
+ #
+ M = numpy.matrix("1 0 0;0 1 0;0 0 1")
+ def H(x): return M * numpy.asmatrix(numpy.ravel( x )).T
+ for algo in ("ParticleSwarmOptimization", "QuantileRegression", ):
+ print
+ msg = "Algorithme en test : %s"%algo
+ print msg+"\n"+"-"*len(msg)
+ #
+ adaopy = adaoBuilder.New()
+ adaopy.setAlgorithmParameters(Algorithm=algo, Parameters={"BoxBounds":3*[[-1,3]], "SetSeed":1000, })
+ adaopy.setBackground (Vector = [0,1,2])
+ adaopy.setBackgroundError (ScalarSparseMatrix = 1.)
+ adaopy.setObservation (Vector = [0.5,1.5,2.5])
+ adaopy.setObservationError (DiagonalSparseMatrix = "1 2 3")
+ adaopy.setObservationOperator(OneFunction = H)
+ adaopy.setObserver("Analysis",Template="ValuePrinter")
+ adaopy.execute()
+ Xa[algo] = adaopy.get("Analysis")[-1]
+ del adaopy
+ #
+ print
+ msg = "Tests des ecarts attendus :"
+ print msg+"\n"+"="*len(msg)
+ verify_similarity_of_algo_results(("3DVAR", "Blue", "ExtendedBlue", "4DVAR", "DerivativeFreeOptimization"), Xa)
+ verify_similarity_of_algo_results(("ExtendedKalmanFilter", "KalmanFilter", "UnscentedKalmanFilter"), Xa)
+ print " Les resultats obtenus sont corrects."
+ print
+ #
+ return 0
+
def almost_equal_vectors(v1, v2, precision = 1.e-15, msg = ""):
"""Comparaison de deux vecteurs"""
print " Difference maximale %s: %.2e"%(msg, max(abs(v2 - v1)))
if __name__ == "__main__":
print '\n AUTODIAGNOSTIC \n'
test1()
+ test2()