images/eficas_close.png \
images/eficas_open.png \
images/eficas_saveas.png \
+ images/eficas_valid.png \
images/yacs_containerlog.png
install-data-local:
Description
+++++++++++
-This algorithm realizes an estimation of the state of a dynamic system by
-minimization of a cost function :math:`J` without gradient. It is a method that
-doesn't use the derivatives of the cost function. It fall in the same category
+This algorithm realizes an estimation of the state of a system by minimization
+of a cost function :math:`J` without gradient. It is a method that doesn't use
+the derivatives of the cost function. It fall for example in the same category
then the :ref:`section_ref_algorithm_ParticleSwarmOptimization`.
This is an optimization method allowing for global minimum search of a general
Minimizer
This key allows to choose the optimization minimizer. The default choice is
"POWELL", and the possible ones are "POWELL" (modified Powell unconstrained
- minimizer, see [Powell]_), "SIMPLEX" (nonlinear constrained minimizer), "CG"
- (simplex of Nelder-Mead unconstrained minimizer, see [Nelder]_). It is
- recommended to stay with the default.
+ minimizer, see [Powell]_), "SIMPLEX" (simplex or Nelder-Mead unconstrained
+ minimizer, see [Nelder]_). It is recommended to stay with the default.
+ Remark: the default "POWELL" method perform a dual outer/inner loops
+ optimization, leading then to less control on the cost function evaluation
+ number because it is the outer loop limit than is controled. If precise
+ control on this cost function evaluation number is required, choose the
+ "SIMPLEX" one.
Example : ``{"Minimizer":"POWELL"}``
images/eficas_close.png \
images/eficas_open.png \
images/eficas_saveas.png \
+ images/eficas_valid.png \
images/yacs_containerlog.png
install-data-local:
Description
+++++++++++
-Cet algorithme réalise une estimation d'état d'un système dynamique par
-minimisation d'une fonctionnelle d'écart :math:`J` sans gradient. C'est une
-méthode qui n'utilise pas les dérivées de la fonctionnelle d'écart. Elle entre
-dans la même catégorie que
-l':ref:`section_ref_algorithm_ParticleSwarmOptimization`.
+Cet algorithme réalise une estimation d'état d'un système par minimisation d'une
+fonctionnelle d'écart :math:`J` sans gradient. C'est une méthode qui n'utilise
+pas les dérivées de la fonctionnelle d'écart. Elle entre par exemple dans la
+même catégorie que l':ref:`section_ref_algorithm_ParticleSwarmOptimization`.
C'est une méthode d'optimisation permettant la recherche du minimum global d'une
fonctionnelle d'erreur :math:`J` quelconque de type :math:`L^1`, :math:`L^2` ou
Minimizer
Cette clé permet de changer le minimiseur pour l'optimiseur. Le choix par
défaut est "POWELL", et les choix possibles sont "POWELL" (minimisation sans
- contrainte de type Powell modifiée, voir [Powell]_), "SIMPLEX" (minimisation
- sans contrainte de type simplexe ou Nelder-Mead, voir [Nelder]_). Il est
- conseillé de conserver la valeur par défaut.
+ contraintes de type Powell modifiée, voir [Powell]_), "SIMPLEX"
+ (minimisation sans contraintes de type simplexe ou Nelder-Mead, voir
+ [Nelder]_). Il est conseillé de conserver la valeur par défaut. Remarque :
+ la méthode par défaut "POWELL" effectue une optimisation par boucles
+ imbriquées interne/externe, conduisant ainsi à un contrôle relaché du nombre
+ d'évaluations de la fonctionnelle à optimiser. Si un contrôle précis du
+ nombre d'évaluations de cette fonctionnelle est requis, il faut choisir le
+ "SIMPLEX".
Exemple : ``{"Minimizer":"POWELL"}``
name = "MaximumNumberOfFunctionEvaluations",
default = 15000,
typecast = int,
- message = "Nombre maximal de d'évaluations de la function",
+ message = "Nombre maximal de d'évaluations de la fonction",
minval = -1,
)
self.defineRequiredParameter(
self.eficas_editor.saveFile()
filename = self.filename[:self.filename.rfind(".")] + '.py'
if not os.path.exists(filename):
- msg = "Cannot find the COMM associated python file for YACS\n"
- msg += "generation. Is your case correct?\n"
+ msg = "Cannot find the COMM/PY associated EFICAS/Python files for YACS\n"
+ msg += "generation. Is your case correct? Try to close and re-open the\n"
+ msg += "case with the ADAO/EFICAS editor."
return msg
if not os.environ.has_key("ADAO_ROOT_DIR"):
(stdoutdata, stderrdata) = p.communicate()
if not os.path.exists(self.yacs_filename):
msg = "An error occured during the execution of the ADAO YACS Schema\n"
- msg += "Creator. If SALOME is launched by command line, see errors\n"
+ msg += "Creator. If SALOME GUI is launched by command line, see errors\n"
msg += "details in your terminal.\n"
return msg
return rtn
msg += traceback.format_exc()
return msg
return rtn
+
+ def validationReportforJDC(self):
+ rtn = "<i>Validation report is empty.</i>"
+ if self.eficas_editor.jdc:
+ rtn = u"Validation report for the selected ADAO case:\n\n"
+ rtn += unicode( self.eficas_editor.jdc.report())
+ return rtn
import adaoModuleHelper
from daUtils.qtversion import useQT5
if useQT5:
- from PyQt5 import QtGui,QtCore
+ from PyQt5 import QtGui, QtCore
+ from PyQt5.QtWidgets import QApplication, QMessageBox
else:
- from PyQt4 import QtGui,QtCore
+ from PyQt4 import QtGui, QtCore
+ from PyQt4.QtGui import QApplication, QMessageBox
def waitCursor():
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
def restoreCursor():
- QtGui.QApplication.restoreOverrideCursor()
+ QApplication.restoreOverrideCursor()
def gui_warning(parent, msg="An error occurs" ):
"""
This function displays a message dialog box displaying the specified message.
"""
- QtGui.QMessageBox.warning( parent, "Alerte", msg)
+ QMessageBox.warning( parent, "Alerte", msg)
+
+def gui_information(parent, msg="Information" ):
+ """
+ This function displays a message dialog box displaying the specified message.
+ """
+ QMessageBox.information( parent, "Information", msg, QMessageBox.Close)
def getActiveStudyId():
"""
This function displays a message dialog box displaying the specified message.
"""
gui_warning(getDesktop(),msg)
+
+def information(msg):
+ """
+ This function displays a message dialog box displaying the specified message.
+ """
+ gui_information(getDesktop(),msg)
'OPEN_ADAOCASE_ID',
'SAVE_ADAOCASE_ID',
'SAVE_AS_ADAOCASE_ID',
+ 'VALIDATE_ADAOCASE_ID',
'CLOSE_ADAOCASE_ID',
'YACS_EXPORT_ID',
],offset=6950)
UI_ELT_IDS.OPEN_ADAOCASE_ID:"openAdaoCase",
UI_ELT_IDS.SAVE_ADAOCASE_ID:"saveAdaoCase",
UI_ELT_IDS.SAVE_AS_ADAOCASE_ID:"saveasAdaoCase",
+ UI_ELT_IDS.VALIDATE_ADAOCASE_ID:"validateAdaoCase",
UI_ELT_IDS.CLOSE_ADAOCASE_ID:"closeAdaoCase",
UI_ELT_IDS.YACS_EXPORT_ID:"exportCaseToYACS",
}
# Refresh GUI -> appelle currentSelectionChanged()
adaoGuiHelper.refreshObjectBrowser()
+#######
+#
+# Gestion de la validation d'un cas
+# 1: la fonction validateAdaoCase est appelee par le GUI SALOME
+#
+#######
+
+ def validateAdaoCase(self):
+ adaoLogger.debug("Validation du cas par un rapport sur le JDC")
+ self.harmonizeSelectionFromEficas()
+ salomeStudyItem = adaoGuiHelper.getSelectedItem()
+ for case_name, adao_case in self.cases.iteritems():
+ if adao_case.salome_study_item.GetID() == salomeStudyItem.GetID():
+ msg = adao_case.validationReportforJDC()
+ adaoGuiHelper.gui_information(SalomePyQt.SalomePyQt().getDesktop(), msg)
+ break
+
#######
#
# Gestion de la connexion avec YACS
-# 1: la fonction exportCasToYACS exporte l'etude vers YACS
+# 1: la fonction exportCaseToYACS exporte l'etude vers YACS
#
#######
def exportCaseToYACS(self):
a = sgPyQt.createAction( UI_ELT_IDS.SAVE_AS_ADAOCASE_ID, "Save as case", "Save as case", "Save an ADAO case as", "eficas_saveas.png" )
sgPyQt.createMenu(a, mid)
sgPyQt.createTool(a, tid)
+ a = sgPyQt.createAction( UI_ELT_IDS.VALIDATE_ADAOCASE_ID, "Validate case", "Validate case", "Validate an ADAO case", "eficas_valid.png" )
+ sgPyQt.createMenu(a, mid)
+ sgPyQt.createTool(a, tid)
a = sgPyQt.createAction( UI_ELT_IDS.CLOSE_ADAOCASE_ID, "Close case", "Close case", "Close an ADAO case", "eficas_close.png" )
sgPyQt.createMenu(a, mid)
sgPyQt.createTool(a, tid)