journée utilisateurs OpenTURNS 3

Transcription

journée utilisateurs OpenTURNS 3
Open TURNS
Journée Utilisateurs #3
18 mai 2010
Journée Utilisateurs Open TURNS #3
Ordre du jour
Open TURNS et son Consortium
Nouveautés de la 0.13.2
Portage windows
Nouvelles interfaces utilisateurs
Ajouts scientifiques et technologiques
Modifications de la documentation
Open TURNS et les modules
Le mécanisme de module
Réseaux bayésiens
•
Présentation « Réseaux bayésiens » (PH Wuillemin - Université Paris 6 / LIP6)
•
Le module OT-Agrum : présentation et cas d’application
Mixtures de lois
•
Le module OT-MixMod : présentation et cas d’application
Open TURNS et ses interfaces
Améliorations de la TUI
La GUI Eficas
L’interface Phimeca
L’interface Anatole3D
Exposés d’études
Exposé 1 : Calculs de dynamique ferroviaire (Ch. Funfschilling – SNCF)
Exposé 2 : Incertitudes de mesure : le projet PLUME (A. Scattolin/JCh. Combier – AIRBUS)
Perspectives (à plus ou moins long terme)
Processus stochastiques
Calcul Haute Performance
Approche bayésienne
Chaos polynomial creux
Open TURNS pour quoi faire?
Open TURNS a pour mission de propager les incertitudes à travers un modèle jusqu’à une variable d’intérêt,
en proposant des fonctionnalités pour quantifier les incertitudes, en vue de hiérarchiser leur influence sur la
variable d'intérêt. Open TURNS permet aussi de remplacer le modèle par une surface de réponse.
Open TURNS est le support logiciel à la Méthodologie de Traitement des Incertitudes mise au point par EDF
R&D et enrichie très largement par d’autres industriels :
Etape A : Spécification du modèle : variables incertaines, modèle, variable(s) d’intérêt, critère
d’analyse (Min/Max, Tendance centrale, Dépassement de seuil)
Etape B : Quantification des incertitudes : détermination de la loi jointe du vecteur aléatorie d’entrée
Etape C : Propagation des incertitudes : quantification du critère d’analyse
Etape C’ : Hiérarchisation des incertitudes
Open TURNS, c’est ….
Une librairie C++ fournissant des services de calculs d’incertitudes
Une application autonome avec une IHM graphique
Un module python proposant des opérateurs de haut niveau
Mais aussi une documentation :
scientifique : Reference Guide,
Utilisateur : Use Cases Guide, User Manual, Examples Guide
technique : Architecture Guide, Wrapper Guide, Contribution Guide, Windows port doc.
… et une communauté sympathique :
Openturns.org : site officiel de l’outil,
share.openturns.org : site d’échanges autour de l’outil
Open TURNS et son Consortium
Le Consortium Open TURNS s’organise autour de 2 Comités en étroite collaboration :
Comité de Pilotage :
•
de définir les grandes orientations de l’outil : évolution métier et architecturale (portage
sous différents environnements, …)
•
d’entériner le contenu des versions et leur date de sortie
•
de valider les contributions externes (un protocole de contribution a été précisé
récemment)
•
de faire le lien avec les projets utilisant Open TURNS (Opus, CISSI, ….)
•
d’organiser annuellement une Journée Utilisateurs Open TURNS
Comité Technique :
•
est le garant du contenu d’Open TURNS (code + documentation)
•
réalise les audits des contributions proposées
•
organise les co-développements et la production des releases d’Open TURNS
Open TURNS et son Consortium
Comment contribuer / interagir avec Open TURNS ?
Niveau 1 : le contributeur veut partager autour de l’outil en proposant des fonctionnalités en
plus (développées sous forme de module C++ ou python), un script particulier (pré / post
traitement de données, couplage avec un outil open source, ….)
Pas d’exigences particulières à respecter (outre la qualité scientifique minimum!)
Le dépôt reste de la responsabilité de son auteur
Site de partage share.openturns.org
Niveau 2 : le contributeur voudrait donner à sa contribution le « Label Open TURNS »
Contribution à la librairie C++, à la TUI python, en langage R
Conséquence : la contribution est à la charge de l’équipe Open TURNS (…)maintenance,
diffusion,
Critères qualité Open TURNS à respecter (au final) : code source + documentation, qui
sont décrits dans le Coding Rules Guide + Contribution Guide
N’hésitez pas à contacter l’un de nous pour tout projet, ou qu’il en soit et quel qu’il soit!
Les contacts
EDF : supprimé
EADS : supprimé
Phimeca : supprimé
… ou via vos contacts spécifiques (projets, conférences, …)
Open TURNS et son site Web
Actuellement
http://trac.openturns.org/ ou wwww.openturns.org
- site avec les informations officielles
Open TURNS et son site Web
Actuellement
http://share.openturns.org/ - site (blog) libre dédié à l’échange entre utilisateurs
Open TURNS et son site Web
Actuellement
http://www.openturns.org/ - site unifié avec différentes zones facilement accessibles
Nouveautés de la 0.13.2
Portage Windows
Objectif : rendre disponible sous Windows la librairie C++ et le module python d’Open TURNS
Principes :
•
Linux reste la plateforme de développement
•
Sous windows, pour pouvoir intégrer dans un produit logiciel la librairie Open TURNS
C++, il est obligatoire d’utiliser le compilateur gcc pour compiler le produit logiciel
intégrant Open TURNS (gcc produit la librairie Open TURNS sous Windows)
•
On fournit le nécessaire pour pouvoir intégrer la librairie Windows dans d’autres
projets logiciel windows ainsi que des exemples d’implémentations de wrappers sous
windows, ce qui permet aux utilisateurs de développer des wrappers sous windows
Concrêtement : 2 paquets OT et OT-devel
•
0T : tous les binaires associés au produit OT + dépendances (R, …) permet
d’obtenir un environnement de travail autonome pour utilisation d’OT (mais ne permet
pas d’intégrer OT dans un autre produit logiciel ni de développer des wrappers)
•
OT-devel : fournit en plus les fichiers d’en-tête de la librairie Open TURNS ainsi qu’un
environnement de développement compatible Open TURNS (gcc sous windows,
autotools, …)
Documentation : Windows Port Documentation qui détaille :
•
Installer l’environnement de cross compilation sous linux
•
Comment générer la plate-forme windows sous linux
•
Comment installer la plate-forme windows
•
Quelques exemples de wrapper sous windows
Nouveautés de la 0.13.2
Open TURNS est intégré à la version unstable de Debian
Responsabilité : Christophe Prud’homme, Université Joseph Fourier, Grenoble
Intérêt pour Open TURNS : élargissement de la communauté des développeurs et utilisateurs
potentiels
Nouvelles interfaces utilisateurs
Eficas : interface graphique open source, qui, via 2 catalogues, propose :
Une aide à l’écriture des scripts python
Une aide à l’écriture des fichiers de couplage
Téléchargeable sur le site de partage d’Open TURNS share.openturns.org
Lien avec les types de données python : (en cours d’enrichissement)
Lien avec les listes python
Pretty print implémenté pour la plupart des objets usuels : NumericalSample, Matrix,
…
Lien avec les n-uplet python (tuple)
Nouveautés de la 0.13.2
Ajouts technologiques :
Modularisation de la TUI
Mécanisme de remontée des erreurs depuis le wrapper :
•
Objectif : rendre plus explicite le message d’erreur indiquant qu’une erreur
d’exécution du wrapper a eu lieu
•
Auparavant : le message était noyé dans le fichier log qui n’était pas affiché par
défaut
•
Actuellement : on peut afficher le message émis par le wrapper (ie renseigné par
l’utilisateur)
•
Conséquences : modification des signatures des fonctions déclarées dans le wrapper
Nouveautés de la 0.13.2
Ajouts scientifiques
Nouveaux algorithmes de différentiation numérique, d’optimisation
Nouveaux algorithmes de reconstruction à noyaux pour le cas 1D
Nombreuses améliorations en terme de précision numérique ou d’efficacité
Modifications de la documentation :
La modularisation du Use Cases Guide avec table des matières interactive
Liens entre documentations : Use Cases Guide vers le User Manual et le Reference Guide,
Architecture Guide et Wrapper Guide : disponibles en Latex / anglais
Coding Rules Guide remis à jour
Windows Port Guide
Versions html des documentations disponibles sur le site
Open TURNS et les modules
Mécanisme de module d’Open TURNS
Accès simplifié au développement interne d’Open TURNS
Cycle de développement plus rapide (compilation, tests, etc.)
A réserver aux nouvelles fonctionnalités
Exemples de 2 modules produits depuis la JU#2 de juin 2009 :
Module OT-Agrum : lien avec la librairie open source aGrUM
•
qui permet de modéliser et simuler des modèles graphiques (dont les réseaux
bayésiens)
•
qui est développée par le laboratoire d’informatique de Paris 6 : LIP6
•
travail réalisé en collaboration avec Pierre-Henri Wuillemin
Intérêt pour Open TURNS : diffusion de l’outil et de la démarche Incertitudes dans la
communauté des Réseaux Bayésiens + enrichissement de la démarche Incertitudes
Module OT-MixMod : lien avec la librairie open source MixMod
•
qui permet de reconstruire une mixture gaussienne ou multinomiale sur un
échantillon multi varié pour de l’analyse discriminante et de la classification
•
qui est développée par l’Université de Franche Compté
•
travail réalisé par Nolwenn Balin (EADS IW)
Intérêt pour Open TURNS : enrichissement de l’étape de quantification de la démarche
Incertitudes : reconstruction semi paramétrique multi variée
Pourquoi les RB dans la démarche Incertitudes?
La démarche Incertitudes nécessite (Etape B) de quantifier les variables incertaines
Or, parfois, nous ne possédons aucune donnée directe sur la variable d’entrée que l’on veut rendre
incertaine mais :
On a des données sur des variables amont
On connaît les relations d’influence de ces variables amont sur la variable que l’on veut rendre
incertaine
Influence : elle peut être …
Déterministe : y = f (x1, … xn)
Probabiliste : selon l’état de (x1, … xn), la variable y peut prendre plusieurs états avec des
probabilités définies. En d’autres mots, on connaît la loi de y sachant (x1, … xn) :
( y| (x1, … xn) )
Les Réseaux Bayésiens apparaissent comme une nouvelle méthode de quantification
des incertitudes et viennent enrichir l’Etape B de la démarche.
Le module OT-Agrum : structure
création de réseaux bayésiens
Communication entre les 2 mondes
propagation de lois
OT_Agrum (C++)
aGrUM (C++)
BayesNetAgrum
BayesNet
OpenTURNS (C++)
Distribution
otagrum (python)
pyAgrum (python)
BayesNetAgrum
BayesNet
openturns (python)
Distribution
from pyAgrum import *
from openturns import *
from otagrum import *
---------------------------
Le module OT-Agrum : le cas simple d’une plante
On s’intéresse à une plante et on aimerait connaître la hauteur qu’elle atteindra potentiellement … par
exemple pour évaluer le risque que la plante nécessite un pot plus grand que le balcon ….
Mais …. Nous ne possédons aucune donnée directe sur la hauteur habituellement atteinte par ce genre de
plantes, ce qui interdit tout traitement statistique ….
Alors, que sait-on?
On connaît l’influence de la qualité de la lumière ainsi que du taux d’humidité de l’atmosphère
sur la croissance de la plante
On peut quantifier la qualité de la lumière chez nous ainsi que le taux d’humidité sur le lieu de
la plante
On va pouvoir accéder à la variabilité de la croissance de la plante via une modélisation par
réseaux bayésiens!
Imaginons …
Quelques données météo d’un lieu (tropical ?) :
Les trois quarts du temps, le balcon est en plein soleil
A l’ombre, il fait humide 8 fois sur 10
En plein soleil, l’air est sec dans 6 fois sur 10
Quelques souvenirs de cours de biologie :
En pleine lumière, si l’air est humide, la plante profite : elle grandit en moyenne
de 90 cm avec une variation de ± 10cm. Si l’air est trop sec, elle ne dépassera pas
les 30 cm, mais on peut raisonnablement espérer aux environs de 15 cm.
A l’ombre, si l’air est trop sec, la plante a du mal à survivre : elle ne dépassera
pas les 20 cm et peut tout aussi bien mourir! Si l’air est humide, elle poussera
quand même le plus souvent de 30 cm, d’au moins 15cm, mais ne dépassera pas
les 50 cm.
Le module OT-Agrum : le cas simple d’une plante
Construction de la structure du Réseau Bayésien :
3 variables : Light, Moisture, Height
Plusieurs liens d’influence : Lumière -> Humidité, (Lumière, Humidité) -> Croissance
Quantification du Réseau Bayésien : remplissage de tables de probabilités conditionnelles
Moisture
Dry
Wet
Light
Dim
Bright
Height ≈ Uniforme (0, 20)
Height ≈ Triangulaire (0, 15, 30)
Moisture
Dry
Wet
0.2
0.6
0.8
0.4
Light
Light
Dim
Bright
Height ≈ Triangulaire (15, 30, 50)
Height ≈ Normal (90, 10)
0.25
0.75
Dim
Bright
Le module OT-Agrum : le cas simple d’une plante
Croissance en milieu diversifié
Croissance dans la cave …
Croissance en zone 100% humide
Le module OT-Agrum : le cas d’une hauteur de digue
On s’intéresse au dimensionnement d’une digue de protection d’habitations contre les crues d’un fleuve
3/5
Q
H=
KS B
Zm - Zv
L
H : hauteur d’eau au niveau
Zm et Zv : côtes du fond du cours d’eau en amont et en aval
Q : débit du fleuve
L et B : longueur et largeur du tronçon du cours d’eau étudié
KS : coefficient de frottement de Strickler
du lit du cours d’eau
Zd : hauteur de la digue
Objectif : comparer H et Zd en tenant compte des variabilités des entrées : KS, Zm et Zv et Q!
Calculer Probabilité (H + Zv > Zd)
On a des données directes pour quantifier la variabilité de KS, Zm et Zv
Mais la loi du débit dépend du mois et de l’arrivée de phénomènes extrêmes
de type crue ou étiage
Le module OT-Agrum : le cas d’une hauteur de digue
Lois des variables KS, Zm et Zv
KS : Normale tronquée (µ
µ = 30, σ = 7.5, min = 0)
Zv = Triangulaire (min = 49, mode = 50, max = 51)
Zm = Triangulaire (min = 54, mode = 55, max = 56)
Loi du débit Q : réseau bayésien
Relevés tri annuels pour le débit statistiques
Etude du passé probabilité d’apparition de crue / etiage en
fonction du mois : crue plutôt en automne, étiage plutôt
en été
Lois Gamma pour les débits par mois en année « normale »
Loi de Weibull pour le débit en etiage
Loi de Gumbel pour le débit en crue
Distribution du Débit selon les scenarios :
Année normale
Année en crue
Année en étiage
… propagée jusqu’à la hauteur d’eau au niveau de la digue
Le module OT-Agrum : le cas d’une hauteur de digue
Débit lors d’une année courante
Débit lors d’une crue
Débit lors d’un Etiage
Le module OT-Agrum : le cas d’une hauteur de digue
Supposons une hauteur de digue de 58 mètres (*) … sommes-nous à l’abri ? trop craintifs ? …
En année Normale
En année de Crue
En année d’Etiage
Proba (H + Zv > 58 m) = 3.0 e-3
Proba (H + Zv > 58 m) = 0.40
Moyenne = 50.82 m
IC (95%) = [2.4 e-3; 3.5e-3]
IC (95%) = [0.32; 0.48]
Ecart-type = 0.51
Moyenne = 52.6 m
Moyenne = 57.5 m
Ecart-type = 1.5 m
Ecart-type = 4.2 m
(*) cet exemple est fictif : toute ressemblance avec un quelconque ouvrage serait complètement fortuite …
Le module OT-MixMod
Module OT-MixMod
Open TURNS et ses interfaces : la TUI
Améliorations de la TUI
simplifier encore l’écriture des scripts Open TURNS
s’interfacer avec d’autres modules Python
Utilisation des listes et des tuples pour les collections :
>>> pt = NumericalPoint( 2 )
>>> pt[0] = 10.
>>> pt[1] = 20.
>>> length = pt.getDimension()
>>> for i in range( length ):
>>>
print pt[i]
>>>
>>>
>>>
>>>
>>>
>>>
>>>
pt = NumericalPointWithDescription( 2 )
pt[0] = 10.
pt[1] = 20.
desc = Description( 2)
desc[0] = ‘x’
desc[1] = ‘y’
pt.setDescription( desc )
Suppression du « cast » inutile :
>>> dc = DistributionCollection( 2 )
>>> dc[0] = Distribution( Normal(0., 0.5) )
>>> dc[1] = Distribution( Uniform(1., 2.) )
>>>
ou
>>>
>>>
>>>
>>>
pt = NumericalPoint( (10., 20.) )
pt = NumericalPoint( [10., 20.] )
length = len( pt )
for coord in pt:
print coord
>>> pt = NumericalPointWithDescription
( ((‘x’,10.), (‘y’,20.)) )
>>> dc = DistributionCollection(
( Normal(0., 0.5), Uniform(1., 2.) )
)
Open TURNS et ses interfaces : la TUI
Améliorations de la TUI
simplifier encore l’écriture des scripts Open TURNS
s’interfacer avec d’autres modules Python
base
common
• NumericalPoint
wrapper
• NumericalPointWithDescription
typ
• TestResult
statistics
• UniVariatePolynomial
func
• UserDefinedPair
diff
• toutes les collections…
optim
solver
Pretty printing :
graph
uncertainty
>>> pt = NumericalPoint( (10., 20.) )
model_dist
>>> print pt
isoprobabilistictransformation
[10,20]
analytical
>>> print repr( pt )
experiment
class=NumericalPoint name=Unnamed dimension=2 values=[10,20]
simulation
Décomposition du module Python en 19 sous-modules chargeables indépendamment :
metamodel
>>> from openturns.wrapper import *
orthogonalbasis
>>> from openturns.func import *
stattests
Classes concernées :
• ConfidenceInterval
• Description
• Graph
• Histogram
• HistogramPair
• Indices
• Interval
Création de wrapper « à la volée » :
>>> wrp = WrapperFile.FindWrapperByName( ‘poutre’ )
>>> model = NumericalMathFunction( wrp )
Open TURNS et ses interfaces : la GUI EFICAS
La GUI Eficas = Interface graphique écrite en Python2.x / Qt4 pour simplifier l’écriture :
des fichiers de description des wrappers (XML)
des scripts d’étude probabiliste (Python)
téléchargeable sur share.openturns.org (avec les instructions d’installation)
intégration à la formation Open TURNS EDF R&D
anyWrapper.xml
EFICAS
pour
Open TURNS
Wrapper
myWrapper.xml
myWrapper.comm
EFICAS
pour
Open TURNS
Study
myStudy.py
Python
Open TURNS
myStudy.comm
Résultat
Open TURNS et ses interfaces : la GUI EFICAS
La GUI Eficas pour Open TURNS Wrapper :
100% des fonctionnalités du wrapper
La GUI Eficas pour Open TURNS Study :
Seules certaines fonctionnalités sont supportées
100% des distributions
Modèle physique issu d’un wrapper uniquement (ni analytique en ligne ni Python)
Affectation des distributions aux variables du modèle physique
Matrice de corrélation des variables
Une seule variable de sortie dans le modèle physique
3 types de critères :
MinMax : Plan d’expérience, Échantillonnage aléatoire
Tendance centrale : Décomposition de Taylor, Échantillonnage aléatoire
Dépassement de seuil :
Simulation : Monte Carlo, LHS, Tirage d’importance
FORM / SORM : Cobyla, AbdoRackwitz
100% des résultats : Numériques, Graphiques
anyWrapper.xml
Modèle
Variables
Distributions
Corrélation
Critère
Résultats
Open TURNS – l’interface PHIMECA – PhimecaSoft 3.0
Pourquoi PhimecaSoft® ?
PhimecaSoft® est né en même temps que Phimeca (en 2001) pour :
A) Capitaliser au sein de Phimeca au sein d’un outil pratique d’utilisation les méthodes utiles aux
études réalisées par les ingénieurs de Phimeca
B) Etre une vitrine du savoir faire de Phimeca
C) Etre un relais des études de Phimeca auprès de ses clients
Pourquoi une v3.0 ?
La variété des études est de plus en plus grande : de la fiabilité mécanique à la méthodologie
incertitudes nécessité de repenser l’organisation et l’IHM
Après pas loin de 10 ans, il devenait nécessaire de mettre à plat le code et le contenu scientifique
(corrélations / copules)
Pourquoi une base Open TURNS ?
Après quelques années d’utilisation Open TURNS est maintenant « mature »
Eviter des doublons de développement (par les mêmes équipes)
Intégrer de nouvelles fonctionnalités (traitement statistique)
Open TURNS – l’interface PHIMECA – PhimecaSoft 3.0
Principe
Utilisation de la librairie Open TURNS
Interface réalisée avec Qt4
Modification de l’interface (en particulier l’arbre des études)
Architecture
PhiBOOT
PhiScript
OpenTURNS
Open TURNS – l’interface PHIMECA – PhimecaSoft 3.0
Environnement Linux / Windows
Langage de commande Python
Open TURNS – l’interface PHIMECA – PhimecaSoft 3.0
Nombreuses lois implémentées +
traitement statistique de données
Quelques modules
complémentaires à Open TURNS
Tous les services associés à un
code commercial (hotline, etc)
Open TURNS – Interfaces métiers
Open TURNS – Interfaces métiers
Exposés d’études Open TURNS
Exposé 1 : Calculs de dynamique ferroviaire (Ch. Funfschilling – SNCF)
Exposé 2 : Incertitudes de mesure : le projet PLUME (A. Scattolin/JCh. Combier – AIRBUS)
Perspectives (à plus ou moins long terme)
Processus stochastiques
L’objectif est de pouvoir introduire dans OpenTURNS des capacités de modélisation,
d’estimation et de propagation d’incertitudes décrites par des processus et champs
stochastiques. Le périmètre envisagé est le suivant:
Processus stochastique à valeur scalaire, vectorielle, champ scalaire ou vectoriel
Champ stochastique à valeur scalaire ou vectorielle
Processus de Markov, processus gaussiens, discrets ou continus, image de tels processus par un
fonction numérique ou une fonctionnelle
Champs isotropes ou anisotropes
Les cas d’utilisation pilotant la conception de cette extension vont de la modélisation de
politiques de maintenance à la modélisation de processus vectoriels par la méthode de Box et
Jenkins, en passant par la modélisation aérodynamique par champs stochastiques
Calcul Haute Performance
L’objectif est double:
Permettre l’utilisation aisée de chaînes de calcul déployées sur des infrastructures de calcul réparties
(grilles, clusters…)
Offrir des algorithmes et des structures de données probabilistes performants tant dans l’utilisation de
la mémoire (support des grands volumes de données) que dans celle des ressources de calcul
(algorithmes multithreadés)
La stratégie adoptée est de s’appuyer sur une abstraction générique des systèmes de batch
(libbatch, drmaa) pour le développement d’un wrapper Open TURNS distribué, et l’utilisation
des Thread Building Block pour l’implémentation des algorithmes les plus critiques d’Open
TURNS
Perspectives (à plus ou moins long terme)
Approche bayésienne
La modélisation d’une loi jointe par conditionnement en cascade
La réactualisation bayésienne d’une loi à priori par assimilation de données
Polynômes de chaos creux
Il s’agit de valoriser le travail de thèse de Géraud Blatman, qu a développé une technique
adaptative creuse de décomposition en chaos polynomial.
Ce travail devrait conduire au développement d’algorithmes de régression creuse type
LARS/LASSO utilisables hors du cadre du chaos polynomial, utile pour la sélection de
variables.
Accessibilité depuis Scilab
Le support de Scilab comme langage de projection de SWIG (Simplified Wrapper Interface
Generator) est en cours de développement et a fait l’objet d’un Google Summer of Code en
2009, qui a fortement accéléré le développement.
Lorsque ce travail sera achevé, il sera possible d’interfacer une librairie C ou C++ à Scilab via
SWIG, de manière identique à celle permettant d’interfacer OpenTURNS avec python. Il sera
alors possible d’utiliser pleinement OpenTURNS dans l’environnement Scilab.
Cette action est pilotée par Michael Baudin de Scilab
Discussions
La parole est à vous!