Projet Miaou

previous up next contents
Précédent : Grands domaines d'application Remonter : Projet MIAOU, Mathématiques et Informatique Suivant : Résultats nouveaux



Logiciels

Le logiciel hyperion



Participants : José Grimm , Fabien Seyfert , Franck Wielonsky


 
Résumé : hyperion est un logiciel destiné à l'identification de fonctions de transfert rationnelles multivariables strictement propres à partir de mesures fréquentielles ; il est complémentaire de logiciels pour automaticiens comme Matlab, scilab, etc. Destiné essentiellement à valider les algorithmes développés dans le projet Miaou, le logiciel hyperion est encore peu diffusé hors du projet ; cependant, suite à une collaboration qui dure depuis quelques années, le CNES a acheté les droits d'utilisation de ce logiciel.

Le logiciel hyperion se caractérise par son architecture : il s'agit d'un interprète Lisp, compatible avec LeLisp de l'Inria. Nous avons récemment rajouté un interprète LLM3, et validé cet interprète en chargeant le compilateur complice, qui est fourni sous forme de code lap, et qui génère du lap (traduit en langage machine dans LeLisp, mais interprété dans hyperion). On compte à terme récupérer le langage de commande de sisyphe et l'intégrer dans hyperion, de telle sorte que l'utilisateur ne voit pas le langage Lisp, mais un langage plus évolué (comparable à celui de Maple).

Ce qui caractérise hyperion par rapport à d'autres interprètes Lisp est le fait que les polynômes, les matrices, et les matrices de polynômes sont des objets de base. Les opérations arithmétiques (somme, produit, etc), traitent ces objets, et font les conversions nécessaires (multiplier une matrice de nombres complexes par un polynôme réel est une opération valide, le résultat étant une matrice de polynômes à coefficients complexes).

Les coefficients des polynômes sont, soit des nombres flottants (double précision), soit des nombres en quadruple précision, soit des nombres en précision illimitée. La quadruple précision a été implémentée il y a quelques années car elle est nécessaire pour l'identification de fonctions de transfert de degré élevé. Notons que sur certaines architectures (Sun par exemple), il est possible d'utiliser des flottants sur 128 bits, sur d'autres (Dec Alpha) cela n'est possible que depuis Fortran. Le principal avantage de coder la quadruple précision en soft, plutôt que d'utiliser le hard, est que le résultat est indépendant de l'architecture (par résultat, on entend ici la convergence de l'algorithme d'identification, et non les valeurs numériques de la fonction de transfert, pour laquelle une précision de 5 chiffres est largement suffisante).

L'algorithme arl2, qui constitue la base du logiciel hyperion, consiste essentiellement à minimiser une certaine fonction $\psi(Q)$. Le calcul de cette fonction n'est pas facile et celui de ses dérivées moins encore. C'est ainsi que nous avons écrit un module de différentiation automatique pour générer, grâce à hyperion, le code C de la fonction, de sa dérivée première en mode inverse, et de sa dérivée seconde (en mode direct). Le lecteur intéressé par la différentiation automatique, et les divers modes de différentiation pourra consulter le rapport d'activité du projet SAFIR de l'Inria-Sophia.

Dans le cas matriciel (multientrées, multisorties), on veut minimiser $\psi(Q)$ par rapport à toutes les matrices $Q$ intérieures de degré de McMillan fixé. Cet ensemble est une variété différentielle, pour laquelle il n'existe pas d'atlas très simple. Celui que l'on utilise conduit à l'algorithme de Schur tangentiel [1]. L'une des difficultés essentielles consiste à maîtriser le changement de cartes : dans quel cas faut-il changer de carte, et comment choisir une nouvelle carte. Dans le cas $p=2$ (cas où on veut identifier un quadripôle comme celui du CNES), nous maîtrisons assez bien cette difficulté ; le cas général est encore en phase d'étude.

L'algorithme d'identification proprement dit consiste en deux phases séparées. Dans un premier temps, on identifie chaque voie sous la forme d'une fonction de degré infini, dans l'espace de Hardy (ou Hardy-Sobolev). Si le degré cherché est $m$ (typiquement de l'ordre de 400), il s'agit de trouver $\lambda$ tel que $M(\lambda)$ soit égal à une valeur $M_0$ donnée par l'utilisateur. La fonction $M$ est croissante, et calculer $M$ revient simplement à inverser une matrice de taille $m$. La complexité de cet algorithme est donc proportionnelle à $m^3$ et, si $m$ est raisonnable, la phase correspondante prend peu de temps. Le résultat final de l'approximation dépend fortement du choix de $M_0$ : de nombreux essais peuvent être nécessaires.

La deuxième phase consiste à appliquer un algorithme arl2 d'approximation rationnelle sur l'ensemble de toutes les voies. Si $F$ est la matrice des $F_{ij}$ déterminée à l'étape précédente, il s'agit de trouver une fraction $G$, rationnelle, stable, de degré de McMillan fixé, telle que $F-G$soit le plus petit possible en norme $L^2$. Dans le cas de degré 8 (cas du CNES), cette étape prend de l'ordre de 2 heures de CPU pour trouver un minimum local, plusieurs heures pour chercher d'autres minima locaux (on ne peut garantir que l'algorithme trouve le minimum absolu). Par contre, si on sait a priori que $G$ est proche de $G_0$, quelques secondes suffisent. Par exemple, si on cherche à évaluer l'influence d'un paramètre $t$, on veut minimiser la norme de $F_t-G_t$, et on peut utiliser comme condition initiale pour $t=t_i$la valeur trouvée à l'itération $t_{i-1}$ précédente. C'est ainsi que nous avons calculé 600 valeurs $G_t$ pour le film « L'automatique : surveillance, prédiction et contrôle », disponible sur le serveur http://www.inria.fr/audiovisuel .


previous up next contents Précédent : Grands domaines d'application Remonter : Projet MIAOU, Mathématiques et Informatique Suivant : Résultats nouveaux