Génération automatique de bonnes extensions aux intervalles

publicité
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.
Téléchargement