0% ont trouvé ce document utile (0 vote)
35 vues36 pages

04 Slides

Le document traite de l'algorithme du simplexe pour l'optimisation, en présentant des exemples de programmes linéaires et leur transformation en forme équationnelle. Il explique la méthode pour trouver une base initiale et les étapes de l'algorithme, y compris l'initialisation et la boucle principale. Des concepts tels que la solution admissible et la vérification des coefficients sont également abordés.

Transféré par

nightcorevnclub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues36 pages

04 Slides

Le document traite de l'algorithme du simplexe pour l'optimisation, en présentant des exemples de programmes linéaires et leur transformation en forme équationnelle. Il explique la méthode pour trouver une base initiale et les étapes de l'algorithme, y compris l'initialisation et la boucle principale. Des concepts tels que la solution admissible et la vérification des coefficients sont également abordés.

Transféré par

nightcorevnclub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Méthodes et modélisation

pour l’optimisation
M1 informatique, 2024/2025
04 — L’algorithme du simplexe (suite)
La semaine dernière
max x1 + x2 max x1 + x2
x1 - x 2 ≤ 2 x1 - x 2 + x3 = 2
x1 ≤ 3 x1 + x4 = 3
x2 ≤ 2 x2 + x5 = 2
x 1 , x2 ≥ 0 x1, x2, x3, x4, x5 ≥ 0

programme initial forme équationnelle

x3 = 2 - x 1 + x2
x4 = 3 - x 1
x5 = 2 - x2
z = 0 + x1 + x2
tableau
La semaine dernière
x3 = 2 - x 1 + x2 x 1 = 2 + x 2 - x3
x4 = 3 - x 1 x4 = 1 - x 2 + x3
x5 = 2 - x2 pivot x5 = 2 - x 2
z = 0 + x1 + x2 z = 2 + 2x2 - x3
base {3, 4, 5} solution (0, 0, 2, 3, 2) base {1, 4, 5} solution (2, 0, 0, 1, 2)
x1 entre, x3 sort x2 entre, x4 sort

x1 = 3 - x4 x1 = 3 - x 4
x 2 = 1 + x 3 - x4 x2 = 2 - x5
x5 = 1 - x 3 + x4 x 3 = 1 + x 4- x 5
z = 4+ x3 - 2x4 z = 5 - x4- x5
base {1, 2, 5} solution (3, 1, 0, 0, 1) base {1, 2, 3} solution (3, 2, 1, 0, 0)
x3 entre, x5 sort
La semaine dernière
max x1 + x2
x1 = 3 - x4
x1 - x 2 + x3 = 2
x2 = 2 - x5
x1 + x4 = 3
x 3 = 1 + x 4- x 5
x2 + x5 = 2
z = 5 - x4- x5
x1, x2, x3, x4, x5 ≥ 0
base {1, 2, 3} solution (3, 2, 1, 0, 0)
l u t i o n
l a s o
coeffs ≤ 0 — terminaison e r q ue !
v é r i s s i bl e max x1 + x2
a d m i
est
x1 - x 2 ≤ 2
x1 ≤ 3
solution au programme initial : (x1, x2) = (3, 2) x2 ≤ 2
valeur de la fonction objectif = 5
x 1 , x2 ≥ 0
fi
Qui sort (encore) ?

Considérer le tableau avec les équations :

xi = pi + qi1 x1 + qi2 x2 + … + qij xj + … + qin xn

(les pi et qij sont les coef cients)

Alors, xi sort si xj entre et


x3 = 8 + x1 - 5x2 8/5
x4 = 3 - x1 -

{ qkj }
pk
i= − : qkj < 0 x5 = 7 - 4x2 7/4
k
z = 0 + x1 + 3x2

x3 sort car 8/5 < 7/4


𝖺
𝗋
𝗀
𝗆
𝗂
𝗇
fi
Tableau

‣ On utilise obligatoirement la notion de tableau


introduite au cours

x3 = 1 + x1 - x2 x1 x2 x3 x4 x5 z
x4 = 3 - x1 -1 1 1 0 0 0 1
x5 = 2 - x2 1 0 0 1 0 0 3
z = 0 + x1 + x2 0 1 0 0 1 0 2
-1 -1 0 0 0 1 0

OUI ! NON !
Et si jamais… ?
Un autre exemple

max x1 max x1
x1 - x 2 ≤ 1 x1 - x 2 + x3 = 1
- x1 + x 2 ≤ 2 - x1 + x 2 + x4 = 2
x 1 , x2 ≥ 0 x1, x2, x3, x4 ≥ 0

programme initial forme équationnelle

x3 = 1 - x 1 + x2 x1 = 1 + x 2 - x 3
x4 = 2 + x 1 - x 2
z = 0 + x1
x4 = 3 - x3
z = 1 + x2 - x3
?
tableau
Un autre exemple

‣ il n’y a pas d’équation contraignante — on peut


augmenter x2 par une valeur t ≥ 0 quelconque
‣ pour tout t ≥ 0, la solution suivante est admissible :
(x1, x2, x3, x4) = (1, 0, 0, 3)+t⋅(1, 1, 0, 0)
‣ la valeur de la fonction objectif = 1+t

x1 = 1 + x 2 - x 3
x4 = 3 - x3
z = 1 + x2 - x3
Un autre exemple

max x1
x1 = 1 + x 2 - x 3
x1 - x 2 ≤ 1
x4 = 3 - x3
- x1 + x 2 ≤ 2
z = 1 + x2 - x3
x 1 , x2 ≥ 0

‣ solutions : (x1, x2, x3, x4) = (1, 0, 0, 3)+t⋅(1, 1, 0, 0)


‣ solutions au programme initial : (x1, x2) = (1, 0)+t⋅(1, 1)
‣ la valeur de la fonction objectif = 1+t
‣ la fonction objectif est non bornée !
Trouver une base
initiale
Trouver une base initiale

‣ Comment trouver une base initiale pour démarrer


l’algorithme ?

max x1 + x2 max x1 + 2⋅x2


- x1 + x 2 + x 3 = 1 x1 + 3⋅x2 + x3 = 4
x1 + x4 = 3 2⋅x2 + x3 = 2
x2 + x5 = 2 x 1 , x2 , x3 ≥ 0
x1, x2, x3, x4, x5 ≥ 0

facile moins facile ?


Trouver une base initiale

‣ S’il y a une variable d’écart par ligne et les membres


droits sont non-négatives, alors c’est facile
‣ Mais en général, ce problème est “aussi dif cile” que le
problème d’optimisation
‣ Noter qu’il n’est pas ef cace de tester toutes les bases :

Combien de bases possibles Réponse :


dans une instance ayant le nombre de combinaisons
2n variables et n équations ? de n parmi 2n (colonnes)

( n ) (n!)2
2n (2n)! 4n
= ≥
2n + 1
fi
fi
Trouver une base initiale
max x1 + 2⋅x2 min x4 + x5
x1 + 3⋅x2 + x3 = 4 x1 + 3⋅x2 + x3 + x4 = 4
2⋅x2 + x3 = 2 2⋅x2 + x3 + x5 = 2
x 1 , x2 , x3 ≥ 0 x 1 , x 2 , x 3 , x 4, x 5 ≥ 0

‣ Supposons qu’on essaye la solution non-admissible


x1 = x 2 = x 3 = 0
‣ Alors, les membres gauches des équations sont plus
petits que les membres droits
‣ On veut minimiser les différences
x4 = 4 - (x1 + 3⋅x2 + x3)
x5 = 2 - (2⋅x2 - x3)
Trouver une base initiale
max x1 + 2⋅x2 max - x4 - x5
x1 + 3⋅x2 + x3 = 4 x1 + 3⋅x2 + x3 + x4 = 4
2⋅x2 + x3 = 2 2⋅x2 + x3 + x5 = 2
x 1 , x2 , x3 ≥ 0 x 1 , x 2 , x 3 , x 4, x 5 ≥ 0
programme auxiliaire
(type max)
‣ Soit (x1, x2, x3, x4, x5) une solution optimale au
programme auxiliaire
‣ Si l’optimum est 0, alors (x1, x2, x3) est une solution de
base admissible au programme initial
‣ Sinon, le programme initial n’a pas de solution admissible
Trouver une base initiale
max - x4 - x5
x1 + 3⋅x2 + x3 + x4 = 4 x4 = 4 - x1 - 3⋅x2 - x3

2⋅x2 + x3 + x5 = 2 x5 = 2 - 2⋅x2 - x3

x 1 , x 2 , x 3 , x 4, x 5 ≥ 0 z = -6 + x1 + 5⋅x2 + 2⋅x3
base {4, 5} solution (0, 0, 0, 4, 2)
x2 entre, x5 sort

x2 = 1 -x3/2 -x5/2 x1 = 1 + x3/2 - x4+3x5/2


x4 = 1 - x1 +x3/2 +3x5/2 x2 = 1 - x3/2 - x5/2
z = -1 + x1 -x3/2 -5x5/2 z = 0 - x4 - x5
base {2, 4} solution (0, 1, 0, 1, 0) base {1, 2} solution (1, 1, 0, 0, 0)
x1 entre, x4 sort
Trouver une base initiale
max x1 + 2⋅x2
x1 = 1 + x3/2 - x4+3x5/2
x1 + 3⋅x2 + x3 = 4
x2 = 1 - x3/2 - x5/2
2⋅x2 + x3 = 2
z = 0 - x4 - x5
x 1 , x2 , x3 ≥ 0
base {1, 2} solution (1, 1, 0, 0, 0)

‣ (x1, x2, x3, x4, x5) = (1, 1, 0, 0, 0)


est une solution optimale au programme auxiliaire
‣ l’optimum est 0, donc (x1, x2, x3) = (1, 1, 0)
est une solution de base admissible au programme initial
qui correspond à la base {1, 2}
Trouver une base initiale
max cTx max -xn+1-xn+2-…-xn+m
Ax = b A’x’ = b
x≥0 x’ ≥ 0
programme initial programme auxiliaire

‣ Avec variables et equations, supposer que le membre droit de


chaque équation est ≥ 0, c-à-d, bi ≥ 0 (sinon multiplier l’équation par −1)
‣ Ajouter une nouvelle variable par équation : xn+1, xn+2, …, xn+m
‣ A’ = (A | Im), où Im est la matrice identité et x’ = (x1, …, xn, xn+1, …, xn+m)
‣ Résoudre le programme auxiliaire par l’algorithme du simplexe avec la
base admissible initiale B = {n+1, n+2, …, n+m}
‣ Si xn+1 = xn+2 = … = xn+m = 0, alors (x1,...,xn) est une solution de base
admissible au programme initial, sinon le programme initial n’a pas de
solution admissible
𝗇𝗆
L’algorithme du
simplexe
L’algorithme du simplexe

Hypothèses
‣ On suppose que Ax = b a au moins une solution
‣ sinon, Ax = b, x ≥ 0 n’a pas de solution non plus
‣ peut être détecté par l’élimination de Gauss
‣ On suppose que les lignes de la matrice A sont
indépendantes
‣ sinon, au moins une équation est redondante et peut être
éliminée sans changer les solutions à Ax = b
‣ peut être détecté par l’élimination de Gauss
L’algorithme du simplexe
Initialisation

1. Convertir le programme en forme équationnelle.


2. Si Ax = b n’a pas de solution, alors
‣ terminer : ``pas de solution’’
3. Faire en sorte que les lignes de A soient indépendantes.
4. Trouver une base initiale (résoudre le programme auxiliaire).
‣ s’il n’y en a pas, terminer : ``pas de solution’’
5. Démarrer la boucle principale avec la base initiale trouvée.
L’algorithme du simplexe
Boucle principale

1. Exprimer le tableau correspondant à la base courante


2. Si tous les coef cients de z dans le tableau sont ≤ 0, alors
‣ terminer : la solution optimale correspond à la base courante
3. Choisir une variable hors base avec coef cient de z > 0
(la variable entre)
4. Choisir une variable de base ayant une équation parmi les plus
contraignantes (la variable sort)
5. S’il n’y a pas d’équation contraignante, alors
‣ terminer : ``optimum non borné’’
6. Modi er la base courante et GOTO 1
fi
fi
fi
Questions restantes

‣ S’il y a un choix, comment choisir la variable qui entre


et celle qui sort ?
‣ L’algorithme du simplexe termine-t-il toujours ?
‣ L’algorithme du simplexe est-il ef cace ?

fi
Critère de pivot
qui entre ? qui sort ?
Critère de pivot (qui entre, qui sort ?)

‣ S’il y a plusieurs variables avec un coef cient positif dans z


‣ Le plus petit indice entre (et sort) (le critère de Bland)
‣ Le plus grand coef cient entre (le critère de Dantzig)
‣ La plus grande augmentation de z
‣ Le côté le plus raide (“steepest edge”)
(en cas d’égalité, on prend le candidat avec le plus petit indice)
‣ S’il y a plusieurs équations les plus contraignantes
‣ Le plus petit indice sort (moins important)
fi
fi
Le critère de Bland

‣ Le candidat du plus petit indice entre et sort

x4 = 5 - x1 - 3⋅x2 - x3
x5 = 2 - 2⋅x2 - x3
z = 0 + x1 + 3⋅x2 + 2⋅x3
c e !
x1 entre f ca
I n e
fi
Le critère de Dantzig

‣ Le candidat avec le plus grand coef cient dans z entre

x4 = 5 - x1 - 3⋅x2 - x3
x5 = 2 - 2⋅x2 - x3
z = 0 + x1 + 3⋅x2 + 2⋅x3 e s !
rci c
e x e
l e s
x2 entre po ur
ho ix
re c
N o t
fi
La plus grande augmentation

‣ La plus grande augmentation de z


‣ x1 → 5, z augmente par 5
‣ x2 → 1, z augmente par 3
‣ x3 → 2, z augmente par 4

x4 = 5 - x1 - 3⋅x2 - x3
x5 = 2 - 2⋅x2 - x3
z = 0 + x1 + 3⋅x2 + 2⋅x3

x1 entre
Le côté le plus raide (steepest edge)

‣ La plus grande augmentation de z/||xnew-xold||


‣ x1 entre → aug. z/||xnew-xold|| = / + ≈ 0.71
‣ x2 entre → aug. z/||xnew-xold|| = / + + ≈ 0.80
‣ x3 entre → aug. z/||xnew-xold|| = / + + ≈ 1.15

x4 = 5 - x1 - 3⋅x2 - x3
x5 = 2 - 2⋅x2 - x3
u e !
z = 0 + x1 + 3⋅x2 + 2⋅x3 ti q
n pra
p io ne
x3 entre ham
L e c
𝟧
𝟥
𝟦
𝟧
𝟣
𝟤
𝟧
𝟥
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
𝟤
Dégénérescence et
terminaison
Dégénérescence

‣ Il est possible que l’inégalité la plus contraignante ne


permette pas d’augmenter la variable entrant
‣ Cela s’appelle dégénérescence
x3 = x1 - x2
x4 = 2 - x 1
z = x2

‣ On peut faire un pivot sans augmentation en espérant


que cela permette d’augmenter dans le pivot suivant
Dégénérescence

x3 = x1 - x2
x4 = 2 - x 1
x2 = x1 - x 3
z = x2
x4 = 2 - x 1
x2 entre x1 = 2 - x4
z = x1 - x3
x3 sort x 2 = 2 - x 3 - x4
x1 entre z = 2 - x 3 - x4
x4 sort

la fonction objectif a augmenté


(et on a trouvé l’optimum)
Terminaison

‣ Dans certains cas, il est possible d’entrer dans un cycle de


dégénérescence sans augmentation.
‣ Exemple :
‣ variables : x1, x2, x3, x4, base initiale : {3, 4}
‣ x1 entre, x3 sort, nouvelle base {1, 4}
‣ x2 entre, x4 sort, nouvelle base {1, 2}
‣ x3 entre, x1 sort, nouvelle base {2, 3}
‣ x4 entre, x2 sort, nouvelle base {3, 4}
‣ …
‣ Dans ce cas, l’algorithme ne termine jamais.
Terminaison

‣ Comment éviter ou gérer un potentiel cycle de


dégénérescence ?
1. Utiliser le critère de Bland, mais celui-là est très lent
(le candidat du plus petit indice entre et sort)
2. Certains solveurs peuvent détecter un cycle et changer
au critère de Bland temporairement pour le casser
3. Modifier légèrement la fonction objectif :
une petite perturbation des coef cients bien choisie
fi
Complexité
Efficacité

‣ Le nombre de pivots est exponentiel dans le pire des cas


‣ En pratique, le pire des cas ne se produit pas,
l’algorithme du simplexe est considéré ef cace
‣ Problème théorique important : trouver un critère de
pivot qui garantit un nombre polynomial de pivots dans
le pire des cas
‣ Il y a d’autres algorithmes ef caces :
‣ la méthode de l’ellipsoïde : polynomiale, lente en pratique
‣ des méthodes de point intérieur : polynomiales, ef caces en
pratique
fi
fi
fi

Vous aimerez peut-être aussi