next up previous


Le logiciel hyperion

Projet miaou

Le logiciel hyperion est un logiciel développé à l'Inria depuis 1994, d'abord dans le projet Safir, puis dans le projet Miaou. Il s'agit d'un interprète Lisp écrit en C++, dont la fonction essentielle est de trouver une approximation rationelle de degré de McMillan n, à partir de données fréquentielles incomplètes.

En entrée, le programme prend $n\times m$ fichiers. Dans chaque fichier, il y a le nombre de points, puis, pour chaque point, la fréquence, la partie réelle et la partie imaginaire. Ceci donne un certain nombre de fonctions fijdéfinies en des points, et complétée au moyen de splines cubiques pour en faire une fonction fij définie sur un intervalle.

À l'aide d'une transformation homographique, on considère cette fonction comme une fonction définie sur un intervalle du cercle unité.

Une première étape de calcul est la phase de complétion analytique. Pour chaque fij, on cherche une fonction gij analytique (i.e. stable) qui approxime fij au mieux sur l'intervalle de données, et qui ne soit pas trop grande en dehors de l'intervalle de mesure. Il faut pour cela régler un paramètre M. Cette première étape peut ne pas marcher si l'objet à identifier est instable, ou s'il y a des retards. Il est possible de compenser les retards au moyen de deux paramètres supplémentaires $\alpha$ et $\beta$. On fait également l'hypothèse que le système est strictement propre, i.e. la valeur à l'infini est nulle. Si elle ne l'est pas, l'utilisateur peut la donner, ou utiliser l'algorithme de complétion de Sobolev.

Cette première phase est rapide, mais souvent plusieurs essais sont nécessaires pour trouver la bonne valeur (ou une valeur acceptable) de M et des autres paramètres.

La deuxième phase consiste à trouver un approximant rationnel matriciel de degré de McMillan donné de gij. Le degré de McMillan est la dimension minimale d'une réalisation physique. Cette quantité doit être donnée par l'utilisateur. En règle générale, hyperion commence par chercher le meilleur approximant au degré 1, puis 2, 3 etc. Il est possible de lui demander de commencer la recherche directement au degré n, mais il n'y a aucune garantie que ceci fonctionne ; dans ce cas une condition initiale aléatoire est choisie. Il est possible de donner une condition initiale. Si celle-ci est proche de la solution optimale, hyperion la trouve rapidement.

L'algorithme d'approximation rationnelle de hyperion consiste à minimiser une fonction $\psi$ dans une variété différentielle dont la dimension est np (p est le degré, et n le minimum entre les deux dimemsions de la matrices). Cette variété est non triviale, il faut utiliser des cartes locales, et en changer de temps en temps. On utilise une heuristique de calcul de cartes qui fonctionne correctement dans un certain nombre de cas étudiés, mais qui a été peu testé dans le cas p>2.

Comme la variété sur laquelle on travaille n'est pas compacte, la procédure de changement de cartes peut échouer sur le bord de la variété. On peut montrer théoriquement que le point cherché n'est pas sur le bord de la variété, mais la trajectoire utilisée par l'optimiseur peut se diriger vers le bord de la variété. Dans ce cas, l'algorithme échoue, et une autre condition initiale peut être utilisée.

Par ailleurs, l'algorithme d'optimisation donne un minimum local. Il n'est pas possible de savoir s'il s'agit du minimum global ou non. Lorsque la condition initiale à l'ordre n provient d'un optimal global à l'ordre inférieur, alors une de ces conditions initiales permet de trouver un minimum local. En résumé : l'algorithme donne souvent de bons résultats, mais aucune garantie ne peut être donnée. Le temps de calcul peut dépendre beaucoup de la fonction à approximer. Souvent, plusieurs heures sont nécessaires.

Tous les paramètres utilisés pour la complétion analytique et l'approximation rationelle peuvent être donnés dans un fichier de paramètre, et passés à hyperion. En utilisation normale, l'interprète de commandes n'est pas visible par l'utilisateur. On trouvera une description commentée d'une session hyperion, dans le rapport technique 219, « Identification d'un filtre hyperfréquences par approximation dans le domaine complexe » (mars 1998).


next up previous
Jose Grimm
2000-04-03