Optimisation globale déterministe Programmation par intervalles et branch and bound
A lorigine zSoit la fonction: f(x,y) = y 6 + x 2 (11 x 2 y 2 - y y 4 - 2) y 8 + x / (2y) zSi lon calcule f(77617,33096), on obtient environ zLa valeur correcte est zLa programmation par intervalle a été utilisée au départ pour éviter les erreurs darrondi.
Opérations élémentaires zSoit deux intervalles X=[a,b] et Y=[c,d] zX+Y=[a+c,b+d] et X-Y=[a-d,b-c] zX*Y= y[ac,bd] si a>0 et c>0 y[bc,bd] si a>0 et c<0<d y[bc,ad] si a>0 et d<0 y[ad,bc] si a 0 y[bd,ad] si a<0<b et d<0 y[ad,bc] si b 0 y[ad,ac] si b<0 et c<0<d y[bd,ac] si b<0 et d<0 y[min(bc,ad),max(ac,bd)] si a<0<b et c<0<d
La division Il faut étendre R en lui ajoutant + zX/Y= [b/c,+ ] si b<0 et d=0 [-,b/d] et [b/c,+ ] si b<0 et c<0<d [-,+ ] si a<0<b [-,a/c] si a>0 et d=0 [-,a/c] et [a/d,+ ] si a>0 et c<0<d [a/d,+ ] si a>0 et c=0
Autres opérations zToutes les opérations peuvent être étendues à la programmation par intervalle. zPour les fonctions monotones: yF([a,b])=[f(a),f(b)] si f croissante yF([a,b])=[f(b),f(a)] si f décroissante yExemple: Exp([a,b])=[e a,e b ] zLes compositions de fonction se traitent en composant les fonctions dextension sur les intervalles.
Le problème de dépendance zSoit X=[a,b], X-X = [a-b,b-a]<>[0,0]! zDe la même façon (X-1)(X+1) <> X 2 -1 z([0,2]-1)([0,2]+1)=[-1,1]*[1,3]=[-3,3] z[0,2] 2 -1=[0,4]-1=[-1,3] zLassociativité est conservée: yA+(B+C)=(A+B)+C yA(BC)=(AB)C zDistributivité perdue: A(B+C)<>AB+AC
Branch and bound zNom générique recouvrant des techniques de recherche divisant lespace de recherche et éliminant des parties de lespace en fonction de bornes. zDans le cas présent, cest la division de lespace en sous intervalle qui crée les branches, et le calcul dun estimateur par intervalle qui crée les bornes.
Minimisation zInitialiser: L<-{[a,b]} et e=estimateur de f sur [a,b] yExtraire I=[c,d] de L. Si e<c, réitérer. Si lintervalle vérifie le test de fin, réitérer. Si L est vide: fin. yConstruire I 1 =[c,(c+d)/2] et I 2 =[(c+d)/2,d]. yCalculer F(I 1 )=[x 1,y 1 ], F(I 2 )=[x 2,y 2 ], e 1 et e 2. yPrendre e=min(e,e1,e2) ySi x 1 <e alors insérer I 1 dans L ySi x 2 <e alors insérer I 2 dans L yRéitérer.
Calcul dun estimateur zSoit X=[a,b]. Plusieurs méthodes: yMoyen le plus simple: e=f((a+b)/2) yTechnique de sampling: prendre n points régulièrement répartis dans X yTechnique stochastique: tirer au hasard n points dans X yCalculer f(x) et F(X) et regarder si le signe de la dérivée est constant sur X, auquel cas f est monotone
Insertion dun élément zPlusieurs possibilités pour insérer: yFirst In First Out yEn fonction de la taille de lintervalle (le plus grand en tête) yEn fonction de lestimateur (le plus petit en tête) yEn fonction de la borne inférieure (la plus petite en premier) yetc…
Test de fin zPlusieurs possibilités: yLa taille de lintervalle est inférieure à une quantité fixée. yLa taille de limage de lintervalle est inférieure à une quantité fixée… yEtc…
Extension à plus dune dimension zPour une fonction à plusieurs variables, la dichotomie se fait variable par variable. zOn coupera systématiquement en deux lintervalle le plus grand parmi ceux décrivant toutes les variables. zOn fait évoluer en conséquence le test de fin.
Quand lutiliser zMéthode extrêmement efficace lorsquil y a peu de variables. zLe temps de calcul croit comme 2 N ou N désigne le nombre de variables.