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