#-*-coding:iso-8859-1-*-
#
-# Copyright (C) 2008-2016 EDF R&D
+# Copyright (C) 2008-2017 EDF R&D
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
)
def run(self, Xb=None, Y=None, U=None, HO=None, EM=None, CM=None, R=None, B=None, Q=None, Parameters=None):
- self._pre_run()
- if logging.getLogger().level < logging.WARNING:
- self.__iprint, self.__disp = 1, 1
- self.__message = scipy.optimize.tnc.MSG_ALL
- else:
- self.__iprint, self.__disp = -1, 0
- self.__message = scipy.optimize.tnc.MSG_NONE
- #
- # Paramètres de pilotage
- # ----------------------
- self.setParameters(Parameters)
- #
- if self._parameters.has_key("Bounds") and (type(self._parameters["Bounds"]) is type([]) or type(self._parameters["Bounds"]) is type(())) and (len(self._parameters["Bounds"]) > 0):
- Bounds = self._parameters["Bounds"]
- logging.debug("%s Prise en compte des bornes effectuee"%(self._name,))
- else:
- Bounds = None
+ self._pre_run(Parameters)
#
# Correction pour pallier a un bug de TNC sur le retour du Minimum
if self._parameters.has_key("Minimizer") == "TNC":
if "InnovationAtCurrentState" in self._parameters["StoreSupplementaryCalculations"]:
self.StoredVariables["InnovationAtCurrentState"].store( _Innovation )
#
- Jb = 0.5 * (_X - Xb).T * BI * (_X - Xb)
- Jo = 0.5 * _Innovation.T * RI * _Innovation
- J = float( Jb ) + float( Jo )
+ Jb = float( 0.5 * (_X - Xb).T * BI * (_X - Xb) )
+ Jo = float( 0.5 * _Innovation.T * RI * _Innovation )
+ J = Jb + Jo
#
self.StoredVariables["CostFunctionJb"].store( Jb )
self.StoredVariables["CostFunctionJo"].store( Jo )
x0 = Xini,
fprime = GradientOfCostFunction,
args = (),
- bounds = Bounds,
+ bounds = self._parameters["Bounds"],
maxfun = self._parameters["MaximumNumberOfSteps"]-1,
factr = self._parameters["CostDecrementTolerance"]*1.e14,
pgtol = self._parameters["ProjectedGradientTolerance"],
- iprint = self.__iprint,
+ iprint = self._parameters["optiprint"],
)
nfeval = Informations['funcalls']
rc = Informations['warnflag']
x0 = Xini,
fprime = GradientOfCostFunction,
args = (),
- bounds = Bounds,
+ bounds = self._parameters["Bounds"],
maxfun = self._parameters["MaximumNumberOfSteps"],
pgtol = self._parameters["ProjectedGradientTolerance"],
ftol = self._parameters["CostDecrementTolerance"],
- messages = self.__message,
+ messages = self._parameters["optmessages"],
)
elif self._parameters["Minimizer"] == "CG":
Minimum, fopt, nfeval, grad_calls, rc = scipy.optimize.fmin_cg(
args = (),
maxiter = self._parameters["MaximumNumberOfSteps"],
gtol = self._parameters["GradientNormTolerance"],
- disp = self.__disp,
+ disp = self._parameters["optdisp"],
full_output = True,
)
elif self._parameters["Minimizer"] == "NCG":
args = (),
maxiter = self._parameters["MaximumNumberOfSteps"],
avextol = self._parameters["CostDecrementTolerance"],
- disp = self.__disp,
+ disp = self._parameters["optdisp"],
full_output = True,
)
elif self._parameters["Minimizer"] == "BFGS":
args = (),
maxiter = self._parameters["MaximumNumberOfSteps"],
gtol = self._parameters["GradientNormTolerance"],
- disp = self.__disp,
+ disp = self._parameters["optdisp"],
full_output = True,
)
else: