• Aucun résultat trouvé

L’idée principale de cette approche est de générer de petits programmes linéaires mixtes sur chaque sous-domaine, qui pourront être résolus assez rapidement afin d’améliorer le calcul des minorants et d’éliminer des éléments ne contenant pas le minimum global. Ainsi, cette technique doit être utilisée dans les cas où il est préférable de subdiviser le domaine plutôt que d’ajouter d’autres plans de coupe pour améliorer la relaxation linéaire, comme cela peut se faire dans les techniques basées sur une approche RLT standard.

Remarque 3.3.5 La technique robuste rART et la technique mixte MART peuvent bien entendu être combinées et nommées rMART. Il est donc possible d’obtenir des relaxations linéaires mixtes robustes. Pour cela, il suffit d’utiliser rAF2 à la place de AF2, puis d’adapter les propositions 3.2.2 et 3.3.4 en les combinant.

3.4 Intégration dans un algorithme de Branch and

Bound par intervalles

Afin de prouver l’efficacité de nos méthodes de reformulation décrites précé- demment, nous les avons insérées dans notre algorithme de Branch and Bound par intervalles, nommé IBBA dont le principe est décrit dans la section1.2. Notons tout de même qu’il existe de nombreux autres algorithmes de Branch and Bound basés sur l’arithmétique d’intervalles, par exemple GlobSol développé par Kearfott et al. [52], dans lesquelles nos méthodes peuvent très facilement être intégrées. Le principe fondamental reste le même, seules les techniques d’accélération diffèrent.

L’algorithme IBBA est résumé dans l’algorithme2du chapitre1. L’un des princi- paux avantages de cet algorithme réside dans sa modularité. En effet, il est très facile d’insérer ou de supprimer des techniques d’accélération. Par exemple à la ligne 6de l’algorithme2, la technique de propagation des contraintes est incluse pour réduire la taille des éléments traités, mais par la suite, certains tests numériques ont été réalisés en supprimant cette technique.

La technique de reformulation affine ART décrite dans les sections précédentes peut être aussi facilement insérée dans cet algorithme2. Elle intervient au niveau des lignes7 et8de l’algorithme 2. A chaque itération, pour chaque élément V1 et V2, le

programme linéaire associé (P2) est automatiquement généré et un solveur linéaire (tel que C-PLEX) le résout. Si le programme linéaire est sans solution réalisable, l’élément est éliminé. Dans le cas contraire, la solution du programme linéaire est utilisée pour calculer un minorant de la fonction objectif sur les sous-domaines Z1

ouZ2.

Remarque 3.4.1 Afin de prendre en compte la valeur du minimum courant dans la technique de reformulation affine, l’équation f(x) ≤ ˜f est ajoutée à l’ensemble des contraintes lorsque ˜f 6= +∞.

Algorithme 8 Technique de Reformulation Affine basée sur l’Arithmétique Affine : ARTAF

1: Soit V = (Z, fz, R) l’élément courant avec fz un minorant de f sur Z,

2: Initialiser un programme linéaire avec le même nombre de variables que le pro-

blème de départ (P1),

3: Générer la forme affine de f en utilisant AF1 ou AF2,

4: Expliciter c la fonction objectif de (P2) et Ef la borne inférieure de l’erreur de la

forme affine de f, c = (f1, . . . , fn), Ef = f0− f± avec AF1 et Ef = f0− f±− f−

avec AF2,

5: pour toute contrainte g du problème du départ (P1) faire 6: Calcul de G(Z) l’extension naturelle aux intervalles de g sur Z, 7: si g n’est pas satisfaite par intervalles alors

8: Générer la forme affine de g en utilisant AF1 ou AF2,

9: Ajouter les contraintes dans le programme linéaire (P2), comme décrit dans

la section 3.1,

10: finsi 11: fin pour

12: Résoudre le programme linéaire (P2) ainsi généré avec un solveur linéaire tel

que C-PLEX,

13: si le programme linéaire a une solution zsol alors

14: fz = max(fz, cTzsol+ Ef),

15: sinon si le programme linéaire est irréalisable alors 16: Éliminer l’élément V = (Z, fz, R)

17: finsi

L’algorithme 8 décrit toutes les étapes de la technique de reformulation affine ARTAF. Le but de cette méthode est d’accélérer la résolution du problème en ré-

duisant le nombre d’itérations et le temps de calcul de IBBA (algorithme 2). A la ligne 7de l’algorithme8, la proposition 3.1.10est utilisée pour réduire le nombre de contraintes ; ceci permet de limiter la taille du programme linéaire sans perdre d’in- formation. Le calcul réalisé en ligne 14 fournit un minorant de la fonction objectif du problème général sur le sous-domaine Z et ceci est prouvé grâce à la proposi-

tion 3.1.6. L’élimination en ligne 16 est déduite du corollaire 3.1.5. Si le solveur

linéaire ne trouve pas de solution en un temps raisonnable (environ une seconde) ou un nombre d’itérations fixé (pas plus de 10 fois le nombre de variables), le mi- norant fz n’est pas modifié et l’algorithme 2 continue comme si, à cette itération

uniquement, la technique n’était pas activée.

Remarque 3.4.2 L’arithmétique affine n’a pas de définition pour les fonctions al- lant à l’infini ; par exemple, lorsqu’une division par zéro apparaît. Dans ce cas, il est impossible de construire une linéarisation de la fonction. C’est pourquoi, si la fonc- tion objectif a des valeurs non-bornée sur le domaine considéré, le minorant n’est pas modifié et l’algorithme 2 continue sans utiliser la technique de reformulation affine à cette itération. En généralisant, s’il est impossible de linéariser une contrainte,

3.4 - Intégration dans IBBA la méthode continue sans inclure celle-ci dans le programme linéaire. Ainsi, le pro- gramme linéaire est plus relâché et le calcul du minorant de la fonction objectif reste valable.

Afin d’améliorer encore les performances de l’algorithme IBBA, nous avons ex- ploité davantage le point zsolobtenu par la résolution du programme linéaire (P2). En

effet, ce point vérifie le système généré par les relaxations linéaires des contraintes. Il peut donc être intéressant de tester le point T−1(zsol) dans le problème de départ

(P1) pour vérifier s’il est réalisable. Ce test additionnel a été intégré uniquement dans les versions IBBA+ARTAF2_primal+CP et IBBA+ARTAF2_dual+CP de notre

algorithme qui seront testées dans la section 3.5.4. Ce test supplémentaire s’est avéré efficace puisque le nombre d’améliorations du minimum courant par ce test fut équivalent à celui avec le test classique du point du milieu.

Dans la section 3.2, nous avons expliqué comment rendre robuste et fiable la technique de reformulation affine. L’algorithme 9 résume cette méthode que nous avons appelée rARTrAF. Il correspond à une adaptation de l’algorithme 8.

Dans un premier temps, nous utilisons rAF1 ou rAF2 avec les conversions entre rAF1/AF1 ou rAF2/AF2 pour produire un programme linéaire (P2), en utilisant l’équation (2.1) et les propositions 3.1.1 et 3.1.2. Puis la proposition 3.1.10 est uti- lisée ligne 7 de l’algorithme 9 pour réduire le nombre de contraintes, tout comme dans l’algorithme 8. Ainsi, dans la plupart des cas, le nombre de contraintes ajou- tées reste faible, et la résolution du dual est donc plus simple. De plus, nous n’avons pas besoin d’expliciter la solution primale, il est donc conseillé de générer directe- ment le problème dual (D2) et de le résoudre avec une résolution primale. Si une solution duale est trouvée, la proposition 3.2.2 certifie que le calcul de la ligne 16

de l’algorithme 9produit un minorant de la fonction objectif du problème (P1) sur l’intervalle Z. Dans le cas contraire, lorsque le solveur montre que le dual est non borné, la proposition3.2.3 produit un certificat d’infaisabilité du problème (P1) sur Z à la ligne 18-24; l’élément V pourra donc être supprimé.

Ainsi, dans cette section, nous avons décrit deux nouvelles méthodes d’accélé- ration qui peuvent être ajoutées dans tout algorithme de Branch and Bound par intervalles. rARTrAF (algorithme 9) inclue dans IBBA (algorithme 2) permet de

garder la propriété de robustesse aux erreurs numériques propre à ce type d’algo- rithme. Dans la prochaine section, nous étudierons son intégration et son impact sur les temps de résolution et le nombre d’itérations de notre algorithme de Branch and Bound par intervalles.

Algorithme 9 Technique de Reformulation Affine robuste basée sur l’Arithmétique Affine robuste : rARTrAF

1: Soit V = (Z, fz, R) l’élément courant avec fz un minorant de f sur Z,

2: Initialiser un programme linéaire avec le même nombre de variables que le pro-

blème de départ (P1),

3: Générer la forme affine de f en utilisant rAF1 ou rAF2,

4: En utilisant les conversions rAF1/AF1 ou rAF2/AF2, générer Ef et c du pro-

gramme linéaire (P2),

5: pour toute contrainte g du problème générale (P1) faire

6: Calculer G(Z) l’extension naturelle aux intervalles de g sur Z, 7: si g n’est pas satisfaite par intervalles alors

8: Générer la forme affine de g en utilisant les formes affines rAF1 ou rAF2

les conversions rAF1/AF1 ou rAF2/AF2,

9: Ajouter les contraintes linéaires associées à cette linéarisation dans le pro-

gramme linéaire (P2) tel que décrit dans la section3.1,

10: finsi 11: fin pour

12: Générer le programme dual (D2) associé au programme linéaire (P2), 13: Résoudre le dual (D2) avec un solveur linéaire primal,

14: si le programme dual a une solution (λs, ls, us) alors

15: (Λs, Ls, Us) = extension de (λs, ls, us) en intervalles, 16: fz = max  fz, RTε− ΛST[−∞, b] + LSTε− USTε  + Ef  ,

17: sinon si le programme dual est irréalisable alors

18: résoudre le programme (D3) associé au programme dual (D2) généré précé-

demment,

19: si le programme (D3) a une solution (λc, lc, uc) alors

20: (Λc, Lc, Uc) = extension de (λc, lc, uc) en intervalles, 21: si 0 6∈  ATΛ c− Lc+ Uc T ε− ΛcT[−∞, b] + LcTε− UcTε  alors 22: Eliminer l’élément V = (Z, fz, R) 23: finsi 24: finsi 25: finsi

Documents relatifs