• Aucun résultat trouvé

3.5 Mise en place de l’algorithme de résolution

3.5.1 Présentation de la décomposition de Benders

Dans cette partie, nous présentons le principe et le fonctionnement de la décomposition de Benders, avant de voir comment elle s’applique à notre problème.

Principe de la décomposition

La décomposition de Benders [57, 50, 106, 54] permet de gagner en temps de calcul en accélérant la résolution d’un problème d’optimisation et s’applique aux problèmes qui ont la forme suivante :

min x∈Rn +,y∈Rm+ c0x + f (y) (2A) ax + F (y) ≥ b (2B) où c ∈ Rn, f (y) ∈ R, a ∈ Rq× Rn , F (y) ∈ Rq, b ∈ Rq

Nous retrouvons cette forme avec notre problème, où x correspond aux variables d’investissement (pro- blème de haut niveau), et y correspond aux variables du problème de marché (problème de bas niveau). C’est le même type de structure que celle des problèmes traités dans [54, 56, 52, 53].

La variable x est une variable coordinatrice (« complicating variable » en anglais) qui introduit une dépendance entre les contraintes du problème, tout en étant présente de manière indépendante vis-à-vis des autres variables d’optimisation dans la fonction objectif.

Le fait de fixer cette variable d’optimisation permet donc de rendre les contraintes indépendantes et, grâce à la forme de la fonction objectif il est possible de décomposer le problème initial en problèmes indépendants de taille inférieure.

Cette méthode se base sur le processus suivant : d’abord, nous trouvons la valeur optimale de x (dans notre cas, les variables d’investissement) à l’aide d’un problème maître (ce qui reviendrait à une résolution dont x serait l’unique variable d’optimisation), de sorte qu’elle coïnciderait avec une optimisation sur l’axe des abscisses telle qu’illustrée dans la figure 3.9), puis nous trouvons y (dans notre cas, les variables de marché) à l’aide d’un sous-problème pour lequel la valeur de x est fixée à la solution trouvée avec le problème maître (ce qui revient à une optimisation dans un plan d’abscisse fixée telle qu’illustrée sur la figure 3.9).

La solution de ce sous-problème est ensuite utilisée pour ajouter une contrainte à l’itération suivante pour le problème maître.

Ces deux étapes sont ensuite répétées jusqu’à ce que les solutions du problème maître et du sous- problème soient suffisamment proches par rapport à un critère défini. La convergence vers la solution opti- male du problème traité est assurée si l’enveloppe de sa fonction objectif est convexe vis-à-vis de la variable coordinatrice, ici x.

FIGURE3.9 – Principe de la décomposition de Benders

Présentation du problème maître

Le problème maître est défini pour l’itération k ∈ N, et pour y ∈ R fixé, par : min

x∈Rn +,α∈R

c0x + α (2C)

α ≥ αdown (2E)

∀p ∈ [[2 : k]]

α ≥ f (y(p−1)) + λ0(x − x(p−1)) (2F) où αdown ∈ R, λ ∈ Rn+.

La contrainte (2F) ajoutée au problème maître à chaque itération (sauf la première) constitue une borne inférieure pour la variable d’optimisation α. Cette borne inférieure est une approximation linéaire de la fonction f (y) au point trouvé à l’itération précédente et dans la suite, coïncide avec (3.35) pour notre problème.

La solution de ce problème maître pour l’étape k fournit x(k), α(k). L’image de la fonction objectif

en ce point constitue une borne inférieure Zdown(k) ∈ R pour la valeur de la fonction objectif du problème initial en la solution. En effet, ce problème correspond à une simplification du problème « MILP » initial31,

c’est-à-dire qu’il ne contient pas toutes les contraintes du problème. Par conséquent, la valeur trouvée pour la fonction objectif de ce problème sera forcément meilleure que la solution optimale du problème complet, qui comprend toutes les contraintes.

Présentation du sous-problème

Le sous-problème est défini pour l’itération k ∈ N par : min x,∈Rn +,y∈R m + c0x + f (y) (2G) ax + F (y) ≥ b (2H) x = x(k): (λ) (2I)

λ fournit le coût associé32à la contrainte (2I). Son signe permet de déterminer la direction dans laquelle la variable d’optimisation associée doit être modifiée (augmentation ou diminution de sa valeur) pour amé- liorer la solution. Dans la figure 3.10, nous illustrons le sens dans lequel la valeur de la fonction objectif va évoluer (augmentation ou diminution) pour trouver la solution optimale, en fonction du signe de cette variable duale.

FIGURE3.10 – Illustration du processus de résolution

La solution du sous-problème fournit y(k). L’image de la fonction objectif en ce point constitue une

borne supérieure Zup(k)∈ R pour la valeur de la fonction objectif du problème initial en la solution. En effet,

il correspond à une solution faisable du problème initial. Sa valeur sera donc supérieure ou égale à la valeur minimale pouvant être obtenue, par définition de l’optimum.

31. Nous entendons par problème initial, le problème MILP obtenu après le processus de transformation détaillé dans la section 3.4.2, impliquant l’introduction du ratio de disponibilité en « Day-ahead » β, l’utilisation des conditions de Karush-Kuhn-Tucker, et le théorème de dualité forte. Ces deux dernières parties du processus sont fournies en annexe.

32. Il s’agit de l’augmentation (dans le cas d’un problème de minimisation) de la valeur de la fonction objectif, ou autrement dit de la perte d’efficacité, liée au fait d’ajouter cette contrainte, par rapport à un cas où elle n’apparaitrait pas.

Résumé du processus de décomposition de Benders

Comme nous l’avons vu dans les sous-sections précédentes, nous sommes en mesure d’obtenir alter- nativement une borne supérieure et une borne inférieure pour le problème. S’il y a égalité entre les deux, l’optimum est donc trouvé.

De cette manière, si l’on considère un problème d’optimisation convexe, l’utilisation de ces deux pro- blèmes permet de trouver la solution optimale en suivant les étapes suivantes :

1. L’initialisation se fait pour k = 0, avec Zdown(0) et Zup(0)mis à −∞ et ∞, respectivement.

2. Nous résolvons le problème maître pour l’itération k + 1 et trouvons x(k+1). La valeur de sa fonction

objectif en la solution donne Zdown(k+1).

3. Nous résolvons le sous-problème pour l’itération k + 1 en utilisant x(k+1)pour fixer x dans ce sous-

problème. La valeur de sa fonction objectif en la solution donne Zup(k+1).

4. Nous comparons Zdown(k+1)et Zup(k+1). Si leur différence est suffisamment faible par rapport à un seuil

défini préalablement, Zup(k+1)et la solution associée sont retenus. Autrement, nous passons à l’itéra-

tion suivante et recommençons à la deuxième étape.

Notre algorithme a donc la structure illustrée dans la figure 3.11.

FIGURE3.11 – Algorithme de Benders

Grâce à cette décomposition, nous pouvons passer d’un problème de taille s × T × Ω à T × Ω problèmes de taille s et gagner en temps de calcul.