Projet Safir

previous up next contents
Précédent : Présentation générale et objectifs Remonter : Projet SAFIR, Systèmes Algébriques et Suivant : Grands domaines d'application



Fondements scientifiques

Algorithmique en Algèbre et en Géométrie

Mots-clés : algèbre linéaire, géométrie effective, fiabilité, lien symbolique-numérique, matrice structurée, résolution de systèmes polynomiaux, précision limitée, preuve de programme


Résumé : La géométrie algébrique effective joue un rôle important dans un éventail très large d'applications, allant de la chimie à l'infographie en passant par la robotique et la vision. L'algèbre commutative, l'algorithmique des polynômes, la géométrie des monômes, l'analyse de complexité et de stabilité, les matrices structurées, les liens entre calcul symbolique et numérique sont des ingrédients importants de ce domaine.


Dans le projet SAFIR, depuis sa création en 1991, se sont développées des compétences solides en algorithmique et en programmation dans le domaine de la résolution algébrique de problèmes géométriques. Ces compétences se sont traduites à la fois par des résultats théoriques, des applications, et dans la visibilité du projet dans la communauté scientifique internationale.

Une des originalités de la communauté du calcul formel en France est de se focaliser sur l'algorithmique des mathématiques, par opposition au développement de logiciels. La tradition française en géométrie algébrique y est pour beaucoup. L'INRIA occupe néanmoins une place particulière dans ce contexte, et le projet SAFIR a eu parmi ses buts initiaux de développer des activités de recherche et de développement sur les logiciels de calcul formel.

Les choses ont pourtant évolué ces dernières années, et, par exemple à l'occasion de projets européens comme PoSSo, des logiciels spécialisés et efficaces ont été produits implémentant des résultats fondamentaux d'algorithmique. Des développements de bibliothèques d'algorithmes spécialisés dans les systèmes Maple, Reduce, ont aussi eu lieu. Le projet SAFIR a participé à son niveau à ce mouvement, avec les logiciels MixedVolume et Bastat, et actuellement avec la bibliothèque ALP.

Par l'évolution parallèle des machines et des algorithmes, des applications pratiques possibles du calcul formel ont trouvé ces dernières années un écho dans la communauté (par exemple, la robotique). Le projet européen FRISCO rassemble les efforts de plusieurs équipes dans cette direction. Dans ce mouvement, les logiciels tiennent un rôle central. En outre, la vulgarisation des outils de calcul formel, difficile dans le milieu industriel, a eu plus de succès dans l'enseignement (Maple intervient maintenant dans la formation des futurs ingénieurs). SAFIR a oeuvré dans ce sens, avec l'organisation d'écoles destinées aux ingénieurs et aux chercheurs.

Dans beaucoup de domaines appliqués, le traitement d'un problème passe souvent par des étapes de modélisation, d'analyse du modèle, et de résolution. Ainsi la mise en équation produit un problème mathématique, dont la résolution amène à concevoir à la fois un algorithme, puis son implémentation et son application.

Notre démarche s'attache donc à dégager, dans des domaines où la géométrie, l'algèbre et l'algorithmique jouent un rôle important, des méthodes basées sur le calcul formel pour le traitement de ces différentes étapes. Notre démarche est ainsi motivée à la fois par des considérations théoriques en géométrie algébrique effective, mais aussi par leurs applications en robotique, en vision artificielle, en géométrie algorithmique et leurs réalisations pratiques.

Analyser les propriétés des objets mathématiques qui apparaissent dans ces problèmes à partir d'exemples suffisamment génériques (par leurs occurrences pratiques et les problèmes qu'ils illustrent), rechercher des méthodes puissantes pour les exploiter, développer à la fois les méthodes effectives en mathématiques et les logiciels qui les rendent utilisables sont donc des points sur lesquels nous nous penchons.

Dans l'étape de modélisation, notre approche s'appuie sur la théorie des invariants et le calcul formel en géométrie. Ainsi le formalisme de Grassmann-Cayley fournit des outils pour analyser les correspondances dans les images, l'étude des lieux critiques des mécanismes à plusieurs corps fait intervenir des calculs dans la Grassmannienne des droites.

Dans la phase d'analyse, la géométrie algébrique effective fournit des méthodes et outils, permettant de mieux comprendre la géométrie des solutions, leur dimension, leur degré, ... La structure des équations et plus particulièrement des monômes dans ces équations soulèvent des problèmes liés à la géométrie des polytopes convexes (une autre manière de voir la programmation linéaire, entière ou non), et conduit à des calculs sur les cônes et sous-réseaux de $Z^{n}$.

La résolution explicite des problèmes quant à elle, fait appel à une analyse des structures des objets manipulés (matrice de Toeplitz, Hankel, ...) et soulève des questions de complexité théorique, mais aussi de stabilité numérique, devant prendre en compte l'incertitude sur les données. Dans ces problèmes à la frontière entre le calcul numérique et symbolique, les polynômes et les matrices jouent un rôle central.

Les problèmes étudiés en algèbre linéaire ne se limitent pas à ceux qui proviennent de l'étude de systèmes polynomiaux. Les algorithmes de calcul des réductions de Hermite et de Smith sont étudiés avec un souci de contrôle de complexité incluant la taille des objets élémentaires manipulés [LLM96].

Aspects logiciels du calcul formel

Mots-clés : interface homme-machine, éditeur de formules, reconnaissance de formules, base de formules, base de données déductives, communication, protocole


L'objectif général de ce thème est l'amélioration des systèmes de calcul formel. Trois directions ont été choisies : les interfaces homme-machine, la conception de bases de données de formules mathématiques et la coopération entre systèmes (échange d'objets mathématiques).

Dans le domaine des interfaces, un objectif serait de réaliser une interface qui puisse faire abandonner l'interface « papier-crayon » au mathématicien ou à l'ingénieur. Nous sommes encore bien éloigné de ce résultat. Plusieurs problèmes difficiles se posent : les systèmes de calcul formel insistent pour imposer une forme particulière aux résultats et même aux expressions rentrées par l'utilisateur alors que la compréhension d'une formule passe souvent par lui donner une forme particulière, leur interface se fait à travers un langage de commande qui est aussi un langage de programmation, pas vraiment adapté à une interaction « graphique », et pour finir, peu d'idées ont pu être réellement expérimentées dans ce domaine. L'expérience de l'utilisation des systèmes de calcul formel que nous avons acquise dans différents contextes (de l'enseignement en premier et second cycles universitaires à la résolution de problèmes industriels) nous amène naturellement à proposer quelques solutions intéressantes dans le domaine des interfaces. Nous nous sommes donc engagés dans le projet de conception d'une interface de qualité, tant au niveau de l'ergonomie que de l'affichage des formules, qui soit conçue comme une plate-forme d'expérimentation pour pouvoir aisément tester nos idées. En complément du mode de saisie traditionnel dans ce type d'interface (au clavier), nous étudions également le problème de la reconnaissance de formules mathématiques imprimées ou saisies directement par l'utilisateur au moyen d'une tablette graphique (par des techniques de grammaires de graphes avec résolution des ambiguïtés).

La plupart des systèmes de calcul formel intègrent tout un ensemble de connaissances non algorithmiques, que l'on peut aussi qualifier de déclaratives, directement dans leur code comme des intégrales ou des sommes particulières. Une idée naturelle est de regrouper ces connaissances dans une base de données pour pouvoir en rajouter facilement et les partager entre plusieurs systèmes. Les bases de données classiques ne conviennent évidemment pas, car elles n'ont pas la connaissance mathématique indispensable : prise en compte de la commutativité, des éléments neutres, déterminations d'instances de formules, etc. La réalisation d'une telle base qui soit à la fois suffisamment efficace pour être utilisable en pratique et suffisamment puissante dans son mécanisme de recherche et de reconnaissance, pose divers problèmes qui se situent au carrefour entre les techniques et outils du calcul formel et ceux de la déduction automatique.

La communauté de calcul formel a reconnu depuis quelques années l'importance de définir un standard pour la communication d'objets mathématiques (communication inter-processus, par courrier électronique, par archivage dans des bases de données etc). Un effort international, OpenMath, a été initié dans ce sens et nous y participons très activement. Les problèmes sont multiples : trouver le bon niveau de définition des objets, prendre en compte la variété des applications qui peuvent utiliser un tel standard ou encore intégrer OpenMath avec les standards actuels ou à venir pour les documents électroniques ou la communication entre applications (SGML, XML, CORBA, OLE ..., cf. aussi notre travail dans le groupe de travail HTML-Math du Consortium Web). Un standard dans ce domaine est aussi un premier pas vers la mise au point d'une nouvelle architecture pour les systèmes de calcul formel (et plus généralement pour les systèmes de calcul scientifique au sens le plus large) à base de composants OpenMath qui pourrait permettre de résoudre les difficiles problèmes rencontrés aujourd'hui pour réaliser et maintenir un système de calcul formel.

Différentiation Automatique

Mots-clés : différentiation automatique, transformation de code, code adjoint, dérivée


La Différentiation Automatique est une technique qui permet d'ajouter aux calculs effectués par un code des calculs de dérivées. Cette technique est basée sur la modélisation d'un code par une composition de fonctions élémentaires. La différentiation du code revient alors à l'application de la règle de dérivation des fonctions composées.

La méthode dite de l'adjoint consiste à discrétiser un nouveau problème dont les inconnues sont les dérivées cherchées, elle donne de bons résultats mais n'est applicable que dans les cas où le modèle est mathématiquement adéquat, elle ne permet donc pas de traiter de nombreux problèmes industriels plus complexes. De plus, les variables supplémentaires qui apparaissent ne sont pas des dérivées, mais des variables duales et n'ont donc aucune signification physique. Un code adjoint est donc très difficile et très long à mettre au point (plusieurs années). Le mode inverse de Différentiation Automatique correspond à l'écriture automatique de code adjoints.

La Différentiation Automatique est une technique très puissante, car elle permet d'obtenir des dérivées exactes (aux erreurs machine près) même si le problème n'est pas décrit par des équations. De plus, les codes scientifiques sont en perpétuelle évolution pour raffiner les modèles, la Différentiation Automatique permet alors de ne maintenir qu'un code (celui du modèle) au lieu de deux (celui du modèle et de sa dérivée).

Deux modes de Différentiation Automatique ont été définis suivant la façon dont la dérivation est effectuée : le mode inverse (dérivées calculées dans le sens inverse du code initial) et le mode direct (dérivées calculées dans le sens du code initial).

Le lien entre un programme numérique et une composition de fonctions peut être vu de la façon suivante. Dans le programme numérique, il y a $n$variables d'entrée, $p$ variables de sortie et $N$ variables auxiliaires. Chaque instruction correspond à une fonction

\begin{displaymath}f_{i}~:~D_{i} \subset {\bf R}^{N} \longrightarrow {\bf R}^{N}.\end{displaymath}



Le programme calcule alors la fonction composée

\begin{displaymath}f~:~D \subset {\bf R}^{n} {~{\mathop{\hookrightarrow}\limits... ... R}^{N}{~{\mathop{\longrightarrow}\limits^{\psi}}~}{\bf R}^{p}\end{displaymath}$\phi$e



$\phi$ et $\psi$ désignant l'injection et la surjection canoniques.

Chaque fonction $f_{i}$ modifie peu de variables, sa matrice jacobienne $Df_i(x)$ (formée par les dérivées partielles) se calcule facilement en utilisant les règles élémentaires de dérivations d'expression, telles que << la dérivée d'une somme est la somme des dérivées >>.

Pour $x \in {\bf R}^{N}$ donné, on pose

\begin{displaymath}x_{0} = x \qquad x_{i} = f_{i}(x_{i-1}), \;\; i=1, \ldots, m.\end{displaymath}



D'après la règle de dérivation des fonctions composées, on a  

\begin{equation}Df(x) = D{\psi}(x_{m}) \cdot Df_{m}(x_{m-1}) \cdot Df_{m-1}... ...dots \cdot Df_{2}(x_{1}) \cdot Df_{1}(x_{0}) \cdot D{\phi}(x)\end{equation}


et en transposant toutes ces matrices  

\begin{equation}{Df}^*(x) = {D{\phi}}^{*}(x) \cdot {Df}^{*}_{1}(x_{0}) \cdot... ...m-1}(x_{m-2}) \cdot {Df}^{*}_{m}(x_{m-1}) {D{\psi}}^{*}(x_{m}) .\end{equation}

La formule ([*]) permet d'obtenir le mode direct de calcul de la matrice jacobienne (du gradient si $p=1$). La difficulté essentielle consiste à bien optimiser le programme ainsi obtenu pour éviter tous les calculs inutiles, notamment ceux qui aboutissent à des contributions nulles.

Le mode inverse ou adjoint correspond à l'application de l'identité ([*]) ; il peut être beaucoup plus performant pour certains calculs de gradients, mais nécessite en général de grandes capacités de stockage en mémoire afin de conserver les valeurs des $x_{i}$ qui sont utilisés dans l'ordre inverse, de $x_{m}$ à $x_{0}$. Sa mise en oeuvre optimisée est délicate et nécessite des stratégies combinant stockage et recalcul.

Il existe deux classes de systèmes de Différentiation Automatique : ceux qui fonctionnent par transformation de programme, et ceux qui fonctionnent par surcharge d'opérateurs. Les premiers, en générant un nouveau code, permettent une très grande flexibilité ; les seconds sont plus rapides à développer et à diffuser car ils sont constitués d'une simple bibliothèque. Une liste de tous les systèmes actuels est visible à l'adresse :
http://www.mcs.anl.gov/Projects/autodiff/AD_Tools/

Calcul Formel pour la modélisation et la simulation

Mots-clés : base de formules, génération de code, modélisation, simulation


Résumé : Une des préoccupations quotidiennes du monde industriel, la modélisation et la simulation de systèmes physiques est un domaine d'application naturel du calcul formel. Notre activité consiste à concevoir et à implémenter un environnement pour la modélisation et la simulation basé sur les techniques de calcul formel.


Un problème de modélisation-simulation comporte plusieurs étapes, il s'agit de :

Les techniques de calcul formel sont naturellement très adaptées pour résoudre ce genre de problème puisque :

Néanmoins, la résolution de tels problèmes n'est pas réalisable directement avec les logiciels de calcul formel existants, trop généraux et qui ne possèdent ni toutes les fonctionnalités nécessaires, ni la capacité de traiter les problèmes de grande taille issus du monde industriel. La volonté d'améliorer les possibilités d'utilisation du calcul formel pour la modélisation et la simulation industrielle nous amène à travailler à la conception et à la réalisation d'un ensemble de composants spécifiques, communiquant entre eux pour composer un environnement dédié.

Plus spécifiquement, les axes de développement que nous poursuivons sont :

En liaison avec les travaux du projet sur la communication d'objets mathématiques, une préoccupation importante est la communication entre ces applications et leur interface avec des logiciels déjà existants afin de produire des outils réellement utilisables et utilisés.



previous up next contents Précédent : Présentation générale et objectifs Remonter : Projet SAFIR, Systèmes Algébriques et Suivant : Grands domaines d'application