Génération automatique de bonnes extensions aux intervalles Charlie Vanaret Institut de Recherche en Informatique de Toulouse, France [email protected] Mots-clés : calcul par intervalles, encadrements rigoureux, surestimation, programmation génétique 1 Motivation L’analyse par intervalles est une branche de l’analyse numérique développée depuis les années 1960 [2]. Initialement dédié au contrôle des erreurs d’arrondis, le calcul par intervalles s’est rapidement révélé être un outil puissant pour le calcul ensembliste, et a été exploité dans de nombreuses disciplines (optimisation, résolution, intégration numérique, ...). Calculer sur intervalles consiste à encadrer tout nombre réel x non représentable exactement sur une machine par un intervalle à bornes flottantes X = [X, X]. Il est alors possible de construire des extensions aux intervalles F d’une fonction à valeurs réelles f en étendant aux intervalles toutes les opérations élémentaires. Un encadrement rigoureux de l’image f (X) de f sur l’intervalle X est alors numériquement garanti : f (X) := {f (x) | x ∈ X} ⊂ F (X) (1) Plusieurs extensions aux intervalles peuvent être définies. L’extension naturelle FN , la plus simple, consiste à remplacer les variables par leurs domaines et les opérations élémentaires par leurs équivalents sur intervalles. Les différentes extensions produisent généralement des encadrements plus ou moins précis en raison du problème de dépendance : lorsqu’une variable x apparaît plusieurs fois dans une expression, les occurrences de x sont décorrélées. Ainsi, l’expression X − X avec X = [0, 5] produit l’intervalle [−5, 5], non réduit à 0. Un théorème de Moore (Théorème 1) indique néanmoins que l’extension naturelle produit un encadrement optimal sous certaines hypothèses. Théorème 1 (Optimalité de l’extension naturelle [2]) Soit f une fonction continue sur un intervalle X. Si l’expression de f ne contient qu’une seule occurrence de x ∈ X, on a f (X) = FN (X) (aux arrondis près). Il est parfois possible de reformuler symboliquement une expression afin de faire disparaître les occurrences multiples. Par exemple, la fonction f (x) = x2 − 2x, dont l’extension naturelle souffre du problème de dépendance, peut être transformée en l’expression optimale g(x) = (x− 1)2 − 1. Une technique alternative, particulièrement puissante, consiste à vérifier si la fonction est monotone par rapport à une variable x. Sans perte de généralité, si f est décroissante par rapport à x sur l’intervalle X, alors f (X) = [f (X), f (X)] ⊂ [F (X), F (X)]. Le calcul de f (X) est alors réduit à deux évaluations ponctuelles aux bornes de X. Lorsque l’expression de f est complexe (nombre important de variables, nombreuses compositions de fonctions élémentaires), il est en général non trivial de reformuler son expression ou de calculer ses dérivées partielles sur intervalles de manière précise. Dans cet article, nous décrivons un outil de génération automatique d’extensions aux intervalles permettant de réduire ou de supprimer la surestimation due au problème de dépendance. 2 Génération automatique d’extensions aux intervalles La recherche d’une bonne extension aux intervalles F d’une fonction f peut être modélisée par le problème d’optimisation suivant. Sur un domaine X donné, on cherche à interpoler f sur un ensemble fini de points {xi }i∈{1,...,N } ∈ X N , en minimisant la largeur des encadrements obtenus par F sur un nombre fini d’intervalles {Xi }i∈{1,...,N } ⊂ X N : minimiser F µ(w(F (X1 )), . . . , w(F (XN ))) sous contraintes d(FN (xi ), F (xi )) = 0, ∀i ∈ {1, . . . , N } – µ est une fonction d’agrégation (par exemple, la somme ou le max) ; – w(X) = X − X est la largeur d’un intervalle X ; – d est la distance entre deux intervalles définie par : d(X, Y ) = 0 si X ∩ Y 6= ∅ si X < Y si Y < X Y −X X − Y (2) – {xi } et {Xi } sont par exemple générés aléatoirement. Nous proposons de résoudre ce problème d’optimisation par la programmation génétique [1] : une extension aux intervalles candidate est modélisée par un arbre syntaxique abstrait, représentant une composition de fonctions élémentaires (appartenant à un ensemble prédéterminé). Par exemple, la fonction h(x) = 3 cos(x − 1) peut être représentée par l’arbre Mult(3, Cos(Sub(Var("x"), Int(1)))). Des opérateurs stochastiques basés sur la théorie de l’évolution (sélection, croisement, mutation) permettent de faire évoluer itérativement un ensemble de solutions candidates dans l’espoir de converger vers une solution satisfaisante. 3 Tests préliminaires sur des cas simples Des tests préliminaires sur des cas simples (Tableau 1) devront prouver la validité de l’approche. Pour certains cas, la solution attendue est une simple reformulation à une occurrence unique. Pour d’autres, un résultat similaire à l’évaluation par monotonie est attendu. Description Extension naturelle Reformulation optimale Réduction du nombre d’occurrences Soustraction Multiplication Carré 1 Carré 2 (Lennard-Jones) Trigo X −X 0 X · X avec X = [−2, 4] X2 X 2 − 2X (X − 1)2 − 1 1 ) X6 4( X16 − 12 )2 − 1 cos(X) sin(Y ) − sin(X) cos(Y ) sin(Y − X) T X + (1 − T )Y avec T = [0, 1] [T (X − Y ) + Y , T (X − Y ) + Y ] X cos(X) − X avec X = [1, 2] [X cos(X) − X, X cos(X) − X] 4( X112 − Analyse de monotonie Interpolation linéaire Non-linéaire TAB. 1 – Reformulations optimales d’expressions analytiques Références [1] John R Koza. Genetic programming : on the programming of computers by means of natural selection, volume 1. MIT press, 1992. [2] R. E. Moore. Interval Analysis. Prentice-Hall, 1966.