• Aucun résultat trouvé

Etant donné un problème de minimisation

2 Le sélecteur de valeur Bound-Impact

Definition 1 Etant donné un problème de minimisation

(maximisation), l’heuristique de choix de valeurBIVS

sélec-tionne la valeur dont l’affectation, une fois propagée, offre la plus petite (grande) borne inférieure (supérieure) pour la variable objectif.

Il s’agit donc de simuler chaque affectation possible et mesurer leur impact sur la fonction objectif, afin de descendre dans la direction la plus prometteuse.

PuisqueBIVSest uniquement un sélecteur de valeur,

il est possible de le combiner avec les heuristiques de choix de variables existantes. Cela offre des possibili-tés très intéressantes d’usages.

BIVS trouve ses origines dans la méthode Strong

branching, utilisée en optimisation linéaire en

nombres entiers, et l’heuristique IBS, utilisée en

programmation par contraintes. Ces deux techniques s’appliquent á l’ensemble des variables candidates au branchement et mesurent un impact, sur la fonction de coût pour la première et sur la réduction de l’espace de recherche pour la seconde. Étant une

heuristique de choix de valeur, BIVS ne considère

qu’une variable à la fois, ce qui en réduit le surcoût algorithmique.

BIVS introduisant une étape d’exploration en

lar-geur, il est intéressant de le positionner vis-à-vis

d’HBFS [8]. Leurs principales différences sont : 1)

la composante « largeur » de BIVS est locale au

do-maine de la variable de décision courante, i.e. lo-cale au noeud courant, alors qu’elle porte sur les fils gauches et droits de tout l’arbre de recherche dans le

cas d’HBFSet 2)BIVSest un sélecteur de valeur alors

qu’HBFS est une stratégie de parcours de l’espace

de recherche, équipée d’une heuristique de choix de

variables-valeurs.BIVSetHBFSsont combinables.

Enfin, puisque la phase de simulation peut conduire à identifier plus tôt des affectations non réa-lisables, un dernier parallèle peut être fait avec la no-tion de Singleton Arc Consistency [9], restreinte à la variable de décision courante.

3 Evaluations

BIVS a été implémenté dans le solveur de

contraintes Choco Solver 4.0.5 [10] et est dorénavant utilisé dans l’heuristique par défaut pour traiter les problèmes d’optimisation. Les expériences suivantes ont été réalisées sur un ordinateur Mac Pro 8-core Intel Xeon E5 @3Ghz sous l’environnement MacOS 10.12.5 et Java 1.8.0_25.

Dans cette expérience, nous considérons le TSP, un problème combinatoire classique dont la satisfaction est triviale, toute permutation étant réalisable, mais la gestion des coût rend le problème NP-difficile. Nous considérons le modèle PPC le plus répandu du TSP, reposant sur des variables de décision représentant

les successeurs de chaque noeud, une contrainteCIR

-CUIT et des contraintes ELEMENT pour capturer le

coût unitaire de chaque trajet. Nous comparons en-suite les résultats obtenus par trois heuristiques diffé-rentes :

DEFAULT choix de variable :DOMWDEG; choix de valeur : sélection de la borne inférieure. Cela correspond à l’heuristique par défaut du sol-veur, et donc à ce que la plupart des utilisateurs obtiendront.

MINCOST choix de variable : ordre statique ; choix

de valeur : sélection du successeur le plus proche du noeud courant (d’après la matrice de distance). Il s’agit de l’approche classique pour un utilisateur avancé, capable de spécifier sa propre heuristique de recherche.

BIVS choix de variable : ordre statique ; choix de

va-leur : vava-leur conduisant à la plus petite borne

inférieur pour l’objectif (BIVS). Il s’agit de la

contribution de l’article.

Les résultats obtenus pour la première solution trouvée et au bout de 30 secondes sont affichés sur la Table 1. Ces résultats confirment qu’il est essentiel d’intégrer la fonction objectif dans l’heuristique de

branchement. De plus, assez étonnamment,BIVS

per-met d’obtenir de biens meilleurs résultats queMIN

-COST, malgré son surcoût algorithmique.

Afin d’étudier le comportement de BIVS sur un

plus large panel de problèmes, nous considérons

Taille Heuristique 1eresol. 1eresol. der. sol. instance temps (s) coût coût

10 DEFAULT 0.01 748 241 10 MINCOST 0.01 380 241 10 BIVS 0.01 310 241 50 DEFAULT 0.02 3775 2043 50 MINCOST 0.03 629 352 50 BIVS 0.60 455 327 100 DEFAULT 0.16 7627 6008 100 MINCOST 0.17 748 497 100 BIVS 9.80 570 428

TABLE1 – Évaluation deBIVSsur le TSP

les 403 instances MiniZinc [11, 12] issues des der-nières compétitions de solveurs en optimisation. Nous comparons les résultats obtenus en suivant

l’heuristique donnée dans le fichier de l’instance (FIX)

avec différentes heuristiques boites-noires (ABS, IBS

et DOMWDEG1). Enfin, nous évaluons la

combinai-son de DOMWDEG avec BIVS. La figure 1 indique,

pour chaque heuristique, le nombre d’instances pour lesquelles le solveur a trouvé la meilleure solution. Chaque exécution disposait d’un temps limite de 15

minutes. Clairement, BIVS permet d’améliorer la

ca-pacité du solveur à trouver la meilleure solution. Il est donc pertinent d’utiliser ce sélecteur dans un cadre boite-noire. Best 200 220 240 260 280 300 219 213 233 258 286 #Instances FIX IBS ABS DOMWDEG {DOMWDEG-BIVS}

FIGURE1 – Évaluation de BIVS sur les instances du challenge MiniZinc

4 Conclusion

Cet article introduit l’heuristique de choix de

va-leur Bound-Impact (BIVS), qui sélectionne la valeur

d’une variable de décision, offrant la meilleure borne sur la variable objectif après application et propaga-tion de son affectapropaga-tion. Cette heuristique, à la fois gé-nérique et performante, est très utile lorsqu’il s’agit de calculer rapidement de bonnes solutions, ce qui est le cas de la majorité des applications industrielles.

Références

[1] J.-G. Fages and C. Prud’homme, “Making the first solution good !” in ICTAI, 2017.

[2] P. Refalo, “Impact-based search strategies for constraint programming,” in Principles and Prac-tice of Constraint Programming, 2004, pp. 557–571. [3] F. Boussemart, F. Hemery, C. Lecoutre, and L. Sais, “Boosting systematic search by weigh-ting constraints,” in ECAI, 2004, pp. 146–150. [4] L. Michel and P. Van Hentenryck,

“Activity-based search for black-box constraint program-ming solvers,” in CPAIOR, 2012, pp. 228–243. [5] C. Lecoutre, L. Sais, S. Tabary, and V. Vidal, “Last

conflict based reasoning,” in ECAI 2006, Inclu-ding (PAIS 2006), ProceeInclu-dings, ser. Frontiers in Ar-tificial Intelligence and Applications, vol. 141. IOS Press, 2006, pp. 133–137.

[6] R. M. Haralick and G. L. Elliott, “Increasing tree search efficiency for constraint satisfaction pro-blems,” in IJCAI’79. Morgan Kaufmann Publi-shers Inc., 1979, pp. 356–364.

[7] S. Kadioglu, M. Colena, S. Huberman, and C. Ba-gley, “Optimizing the cloud service experience using constraint programming,” in Principles and Practice of Constraint Programming, ser. LNCS,

G. Pesant, Ed., vol. 9255. Springer, 2015, pp.

627–637.

[8] D. Allouche, S. De Givry, G. KATSIRELOS, T. Schiex, and M. Zytnicki, “Anytime hybrid best-first search with tree decomposition for weighted CSP,” in CP 2015, 2015, p. 17 p. [9] C. Bessiere and R. Debruyne, “Theoretical

ana-lysis of singleton arc consistency and its exten-sions,” Artif. Intell., vol. 172, no. 1, pp. 29–41, 2008.

[10] C. Prud’homme, J.-G. Fages, and X. Lorca, Choco Solver Documentation, TASC, INRIA Rennes, LINA CNRS UMR 6241, COSLING S.A.S., 2016. [Online]. Available : http://www.choco-solver. org

[11] N. Nethercote, P. J. Stuckey, R. Becket, S. Brand, G. J. Duck, and G. Tack, “Minizinc : towards a standard cp modelling language,” in CP. Springer-Verlag, 2007, pp. 529–543.

[12] NICTA, MiniZinc and FlatZinc,

http ://www.g12.cs.mu.oz.au/minizinc/,

Actes JFPC 2018

Vers un syst`eme de contraintes pour l’analyse des

erreurs de pr´ecision des calculs sur les flottants

Remy Garcia

1†

Claude Michel

1

Marie Pelleau

1

Michel Rueher

1

1

Universit´e Cˆote d’Azur, CNRS, I3S, France

{pr´enom.nom}@i3s.unice.fr

R´esum´e

Les calculs sur les nombres flottants induisent des erreurs li´ees aux arrondis n´ecessaires `a la clˆoture de l’en-semble des flottants. Ces erreurs, symptomatiques de la distance entre le calcul sur les flottants et le calcul sur les r´eels, sont `a l’origine de nombreux probl`emes, tels que la pr´ecision ou la stabilit´e de ces calculs. Elles font l’objet de nombreux travaux qui s’appuient sur une sur-estimation des erreurs effectives. Si ces approches per-mettent une estimation de l’erreur, estimation qui peut ˆetre affin´ee en d´ecoupant l’espace de recherche en sous-domaines, elles ne permettent pas, `a proprement parler, de raisonner sur ces erreurs et, par exemple, de produire un jeu de valeurs d’entr´ee capable d’exercer une erreur donn´ee. Afin de pallier ce manque et d’enrichir les possi-bilit´es d’analyses de ces erreurs de pr´ecision, nous intro-duisons dans un solveur de contraintes sur les flottants un domaine dual `a celui des valeurs, le domaine des er-reurs. Ce domaine est associ´e `a chacune des variables du probl`eme. Nous introduisons aussi les fonctions de projections qui permettent le filtrage de ces domaines ainsi que les m´ecanismes n´ecessaires `a l’analyse de ces erreurs.

Abstract

Floating-point computations induce errors linked to the rounding operations required to close the set of floating-point numbers. These errors, which are sympto-matic of the distance between the computations over the floats and the computation over the real numbers, are at the origin of many problems, such as the precision or the stability of floating-point computations. They are the subject of numerous works which are based on an ove-restimation of actual errors. These approaches allow an estimate of the error, an estimate that can be refined by splitting the search space into subdomains, but they do not, strictly speaking, make it possible to reason about

∗Ces travaux ont ´et´e partiellement support´es par l’ANR CO-VERIF (ANR-15-CE25-0002).

†Papier doctorant : Remy Garcia1est auteur principal.

these errors and, for example, to produce input values that excercise a given error. In order to overcome this lack and to enrich the possibilities of analysis of these errors, we introduce in a solver for constraints over the floats, a domain dual to that of the values, the domain of the errors. This domain is associated with each of the variables of the problem. We also introduce the projec-tion funcprojec-tions that allow the filtering of these domains as well as the mechanisms required for the analysis of these errors.

1 Introduction

Les calculs sur les nombres flottants induisent des

erreurs li´ees aux arrondis n´ecessaires `a la clˆoture de

l’ensemble des flottants. Ces erreurs, symptomatiques de la distance entre le calcul sur les flottants et le calcul

sur les r´eels, sont `a l’origine de nombreux probl`emes,

tels que la pr´ecision ou la stabilit´e de ces calculs. Elles sont d’autant plus critiques que l’utilisateur de ces cal-culs fait le plus souvent abstraction de la nature parti-culi`ere de l’arithm´etique des flottants et les consid`ere comme des calculs sur les r´eels. Identifier, quantifier et

localiser ces erreurs est une tˆache ardue qui ne peut,

le plus souvent, qu’ˆetre accomplie `a l’aide d’outils qui

l’automatisent.

Un exemple bien connu de d´eviation du calcul li´ee

aux erreurs de calcul sur les flottants est le polynˆome

de Rump [14] :

333.75b6+ a2(11a2b2− b6− 121b4− 2) + 5.5b8+ a/(2b)

avec a = 77617 et b = 33096. La valeur exacte de cette expression, calcul´ee en utilisant la biblioth`eque de

calcul GMP [7], est −54767/66192 ≈ −0.827396056.

Lorsque cette expression est ´evalu´ee avec des flot-tants simples et un arrondi au plus pr`es, le

une valeur tr`es ´eloign´ee de la valeur r´eelle. L’impor-tance de la diff´erence entre ces deux calculs, qui est de

≈ −6.3382530011411 × 1029, souligne l’int´erˆet d’outils

d’analyse des erreurs d’arrondi.

Les erreurs de calcul sur les flottants font l’objet de nombreux travaux qui s’appuient sur une surestima-tion des erreurs effectives. Ainsi l’interpr`ete abstrait Fluctuat [6, 5] combine l’arithm´etique affine et les zo-notopes afin d’analyser la robustesse des programmes sur les flottants. PRECiSA [15, 13] se base sur une ana-lyse statique du programme pour ´evaluer les erreurs d’arrondi. Les travaux sur l’am´elioration automatique du code de Nasrine Damouche [3], ainsi que ceux d’Eva Darulova [4], s’appuient sur une ´evaluation de l’erreur d’arrondi afin d’estimer la distance entre l’expression sur les flottant et l’expression sur les r´eels. Si ces ap-proches permettent une estimation de l’erreur, esti-mation qui peut ˆetre affin´ee en d´ecoupant l’espace de recherche en sous-domaines, elles ne permettent pas, `

a proprement parler, de raisonner sur ces erreurs et, par exemple, de produire un jeu de valeurs d’entr´ee capable d’exercer une erreur donn´ee.

Afin de pallier ce manque et d’enrichir les possibili-t´es d’analyses de ces erreurs de pr´ecision, nous intro-duisons dans un solveur de contraintes sur les flottants

[16, 10, 1, 11, 12] un domaine dual `a celui des valeurs, le

domaine des erreurs. Ce domaine est associ´e `a chacune

des variables du probl`eme. Nous introduisons aussi les fonctions de projections qui permettent le filtrage de

ces domaines ainsi que les m´ecanismes n´ecessaires `a

l’analyse de ces erreurs.

Plus pr´ecis´ement, nous nous positionnons sur l’ana-lyse de la d´eviation des calculs en flottants par rapport aux r´eels. En particulier, nous ignorons volontairement la possibilit´e d’une erreur physique initiale sur les don-n´ees d’entr´ees. Et pour des raisons de simplicit´e, nous nous restreignons aux quatre op´erations arithm´etiques de base. Cette simplification permet aussi un calcul

exact des valeurs sur les r´eels1, tant des valeurs des

expressions que des erreurs de calcul. Enfin, le mode d’arrondi est suppos´e ˆetre le mode d’arrondi par d´e-faut, i.e., l’arrondi au plus pr`es pair.

2 Notation et d´efinitions

L’ensemble des nombres flottants, un sous-ensemble fini des rationnels, a ´et´e introduit pour approximer les nombres r´eels sur un ordinateur. La norme IEEE pour les nombres flottants [9] d´efinie le format des diff´erents types de flottants ainsi que le comportement des op´e-rations arithm´etique sur ces nombres. Dans la suite,

1. En utilisant une biblioth`eque de calcul sur les rationnels et aux limitations de m´emoire pr`es.

les flottants sont restreint au plus courant, i.e. les flot-tants binaires en simple pr´ecision sur 32 bits et les flottants binaires en double pr´ecision sur 64 bits.

Un nombre flottant binaire v est repr´esent´e par un

triplet (s, e, m) o`u s est le signe de v, e son exposant

et m sa mantisse. Quand e > 0, v est normalis´e et sa valeur est donn´ee par :

(−1)s× 1.m × 2e−bias

o`u le bias permet de repr´esenter les valeurs n´egatives

de l’exposant. Par exemple, pour les flottants 32 bits, s vaut 1 bit, e vaut 8 bits, m vaut 23 bits et bias est

´egal `a 127.

x+d´esigne le plus petit nombre flottant strictement

plus grand que x tandis que x d´esigne le plus grand

nombre flottant strictement plus petit que x. C’est-`

a-dire que x+ est le successeur de x alors que xest son

pr´ed´ecesseur.

Un ulp, pour unit in the last place, est la distance qui s´epare deux flottants cons´ecutifs. Cependant, cette d´efinition est ambigu¨e pour les flottants qui sont des puissances de 2, tel que 1.0 : dans ce cas, et si x > 0,

alors x+

− x = 2 × (x − x). `A chaque fois que cela

sera n´ecessaire, une formulation explicite de la distance sera utilis´ee.

3 Quantification de la d´eviation du calcul

Les calculs sur les flottants se distinguent des calculs sur les r´eels par l’utilisation d’arrondis. L’ensemble des nombres flottants ´etant un sous-ensemble fini des nombres r´eels, le r´esultat d’une op´eration sur les flot-tants n’est pas, en g´en´eral, un nombre flottant. Afin de clore l’ensemble des nombres flottants pour ces op´era-tions, ce r´esultat doit ˆetre arrondi au nombre flottant le plus proche selon une direction d’arrondi pr´ealable-ment choisie.

La norme IEEE 754 [9] d´efinit le comportement de l’arithm´etique des flottants. Pour les quatre op´erations de base, cette norme impose un arrondi correct : le r´e-sultat d’une op´eration sur les flottants doit ˆetre ´egal `

a l’arrondi du r´esultat de l’op´eration ´equivalente sur

les r´eels. On a alors z = x y = round(x · y) o`u z,

x et y sont des nombres flottants, , l’une des quatre

op´erations arithm´etiques de base sur les flottants, `a

sa-voir,⊕, , ⊗ et , · ´etant l’op´eration ´equivalente sur

les r´eels et, round, la fonction d’arrondi. Cette pro-pri´et´e limite l’erreur introduite par une op´eration sur

les flottants `a±1

2U lp(z) pour les op´erations

correcte-ment arrondies au plus proche pair, l’arrondi le plus courant.

D`es lors que le r´esultat d’une op´eration sur les flot-tants est arrondi, ce r´esultat est diff´erent du r´esultat attendu sur les r´eels. Et chacune des op´erations d’une

Addition : z = x⊕ y → ez= ex+ ey+ e

Soustraction : z = x y → ez= ex− ey+ e

P roduit : z = x⊗ y → ez= xFey+ yFex+ exey+ e

Division : z = x y → ez =yFex− xFey

yF(yF+ ey) + e

Figure 1 – Calcul de la d´eviation pour les op´erations de base expression complexe est susceptible d’introduire une

diff´erence entre le r´esultat escompt´e sur les r´eels et le r´esultat obtenu sur les flottants. Alors que pour une op´eration donn´ee le flottant obtenu est optimal, en termes d’arrondi, le cumul de ces approximations peut

conduire `a des d´eviations importantes comme dans le

cas du polynˆome de Rump.

L’origine de la d´eviation d’un calcul sur les flottants

par rapport `a son ´equivalent sur les r´eels se situant

au niveau de chaque op´eration ´el´ementaire, il est

pos-sible de reconstruire cette d´eviation `a partir de la

com-position du comportement de chaque op´eration ´el´e-mentaire. Consid´erons l’une de ces op´erations, la sous-traction. Si les variables d’entr´ee de ces op´erations r´e-sultent d’un calcul, elles sont entach´ees d’une erreur. Par exemple, pour la variable x, la d´eviation sur le

cal-cul de x, exest donn´ee par ex= xR− xF o`u xRd´enote

le r´esultat attendu sur les r´eels et xF d´enote le r´esultat

obtenu sur les flottants. Notez qu’`a la diff´erence d’une

erreur physique, exest sign´e. Ce choix est rendu

n´eces-saire pour capturer correctement des comportements sp´ecifiques aux flottants comme les compensations des erreurs qui peuvent intervenir au sein d’un calcul sur les flottants.

La d´eviation du calcul due `a la soustraction peut alors

ˆetre calcul´ee de la mani`ere suivante : pour z = x y,

l’erreur sur z, ez est ´egale `a (xR− yR)− (xF yF).

Puisque ex= xR− xF et ey = yR− yF, on a

ez= ((xF+ ex)− (yF+ ey))− (xF yF)

La d´eviation entre le r´esultat sur les r´eels et le r´esultat sur les flottants pour une soustraction peut donc se

calculer grˆace `a la formule suivante :

ez= ex− ey+ ((xF− yF)− (xF yF))

Dans cette formule, le terme ((xF− yF)− (xF yF))

caract´erise l’erreur commise par l’op´eration de

sous-traction, que nous noterons e . La formule se simplifie

alors en :

ez= ex− ey+ e

Elle comporte deux ´el´ements : d’une part la combinai-son des d´eviations qui entachent les valeurs d’entr´ee

et, d’autre part, la d´eviation introduite par l’op´eration ´el´ementaire.

La figure 1 formule la d´eviation du calcul pour les quatre op´erations de base. Pour chacune de ces for-mules, le calcul de l’erreur combine les d´eviations qui entachent les valeurs d’entr´ee avec l’erreur introduite par l’op´eration courante. On peut aussi observer que pour le produit et la division cette d´eviation est pro-portionnelle aux valeurs d’entr´ee.

L’ensemble de ces formules permet le calcul de la diff´erence entre le r´esultat attendu sur les r´eels et ce-lui obtenu sur les flottants pour une expression

com-plexe. C’est `a partir d’elles qu’est bˆati notre solveur

de contraintes sur les erreurs sur les flottants.

4 Domaines d’erreurs

Dans un CSP classique, `a toute variable x est

as-soci´eDx son domaine de valeurs. Celui-ci d´enote

l’en-semble des valeurs possibles que cette variable peut prendre. Dans le cas des nombres flottants, le domaine des valeurs est repr´esent´e par un intervalle de flottants `

a bornes dansF :

xF = [xF, xF] ={xF∈ F, xF ≤ xF≤ xF}

avec xF ∈ F et xF∈ F.

Les erreurs de calcul constituent une autre

dimen-sion `a prendre en compte. Elles n´ecessitent un

do-maine sp´ecifique de par la nature distincte des

´el´e-ments `a repr´esenter, mais aussi, des valeurs possibles

des erreurs qui appartiennent `a l’ensemble des r´eels.

Un domaine des erreurs est donc introduit ; domaine

associ´e `a chaque variable du probl`eme. Et, puisque les

contraintes trait´ees ici sont r´eduites aux quatre