Vous êtes sur la page 1sur 13

Licence en Recherche Opérationnelle,

3ème année, section B

Matière : Modélisation
(2019/2020)

Chapitre 4 :
Linéarisation
Nous présentons dans ce chapitre quelques techniques de base que l’on peut utiliser pour trans-
former un modèle non linéaire en un modèle linéaire. L’intérêt de cette transformation est que
les méthodes de résolution de la programmation linéaire sont plus efficaces que les méthodes
de résolution de la programmation non linéaire. Notons aussi, que plusieurs techniques et
plusieurs logiciels ont été développées pour la résolution des modèles de la programmation
linéaire en nombres entiers. Néanmoins, ces techniques de transformation engendrent plus de
variables. Cette technique n’est donc intéressante que si le nombre de variables engendrées
n’est pas très important par rapport au nombre de variables initiales. Dans beaucoup de cas, il
est préférable de chercher, lorsqu’elle existe, une modélisation linéaire plutôt que d’essayer de
linéariser le modèle.

Remarquons qu’il n’est pas possible de linéariser tous les modèles comportant des expressions
non linéaires. Nous allons donc voir quelques cas où il est toutefois possible de le faire.

1
1 Valeur absolue

Cas 1. Considérons l’expression |f (x1, . . . , xn)| ≤ a où f est une fonction linéaire. Cette
expression se réécrit simplement :

 f (x1, . . . , xn) ≤ a
 −f (x , . . . , x ) ≤ a
1 n

Cas 2. Considérons maintenant l’expression |f (x1, . . . , xn)| ≥ a. Cette expression se réécrit


simplement :


 −f (x1, . . . , xn) ≤ −a + M y



f (x1, . . . , xn) ≤ −a + M (1 − y)




 y ∈ {0, 1}

Ces deux cas restent valable si on remplace a par une fonction linéaire.

2
Cas 3. Considérons la fonction objectif minimiser |f (x1, . . . , xn)|. On pourra l’écrire sous la
forme

min. y

 |f (x1, . . . , xn)| ≤ y
s.c.
y≥0

Cas 4. Considérons la fonction objectif maximiser |f (x1, . . . , xn)|. On pourra l’écrire sous la
forme

max. y

 |f (x1, . . . , xn)| ≥ y
s.c.
y≥0

3
Cas 5. Considérons une contrainte sous la forme d’une somme d’expressions linéaires en
valeurs absolue |f1(x1, . . . , xn)| + . . . + |fm(x1, . . . , xn)| ≤ a.

On écrit d’abord chaque expression linéaire mise en valeur absolue comme la différence de
deux variables non négatives fj (x1, . . . , xn) = sj − tj ; j = 1, . . . , m. Ensuite, on remplace
|fj (x1, . . . , xn)| par sj + tj dans l’expression initiale. Finalement,


 s1 + t1 + . . . + sm + tm ≤ a



fj (x1, . . . , xn) = sj − tj ; j = 1, . . . , m




 s , t ≥ 0; j = 1, . . . , m
j j

Cas 6. Considérons une fonction objectif sous la forme d’une somme d’expressions linéaires
en valeurs absolue minimiser |f1(x1, . . . , xn)| + . . . + |fm(x1, . . . , xn)|.

En appliquant la technique utilisée dans le cas 5, on obtient


m
P
min. (sj + tj )
j=1


 fj (x1, . . . , xn) = sj − tj ; j = 1, . . . , m
s.c.
 s , t ≥ 0; j = 1, . . . , m
j j

4
2 Produit de variables

Cas 1. Produit de deux variables binaires : soit le produit xy avec x, y ∈ {0, 1}. On introduit
une variable positive z et on obtient


 z≤x
z ≤y


x+y−1≤z



 x, y ∈ {0, 1}
z ≥0

Nous avons z = 1 si x = 1 et y = 1 et z = 0 si x = 0 ou y = 0. On peut donc remplacer le


produit xy par z.

Cas 2. Produit de plusieurs variables binaires : On peut utiliser le même raisonnement dans le
cas du produit de plusieurs variables binaires x1 x2 . . . xn. On obtient

 z ≤ xi i = 1, . . . , n
n



P
xi − n + 1 ≤ z
i=1
x1, . . . , xn ∈ {0, 1}; i = 1, . . . , n




z ≥0

5
Cas 3. Produit d’une variable binaire par une variable réelle bornée supérieurement : soit le
produit xy avec x ∈ {0, 1} et y ≤ M . On remplace ce produit par une variable positive z qui
prendra la même valeur que y quand x = 1, et sera nulle quand x = 0. On lie les variables y et
z à l’aide des trois contraintes suivantes :

 z ≤ Mx
z≤y
 y − z ≤ M (1 − x)

Autres Cas.
— Il est possible de linéariser le produit d’une variable binaire par une variable entière
bornée supérieurement en écrivant cette dernière en base 2 et en appliquant le cas 1.
Mais cela génère beaucoup de variables quand la borne supérieure de la variable entière
est grande.

— Il n’y a pas de règle pour linéariser le produit de deux variables positives. Il faut donc
traiter chaque formulation à part.

— La linéarisation du produit de deux variables entières est possible en écrivant l’une des
deux variables en base 2 et en appliquant le premier point. Mais cela génère trop de
variables, ce qui rend la technique peu intéressante.

6
3 Quotient

Cas 1. Considérons l’expression fg(x(x1,...,xn)


1 ,...,xn)
≤ a où f et g sont des fonctions linéaires et a une
constante. Cette expression se réécrit simplement f (x1, . . . , xn) ≤ a.g(x1, . . . , xn)

f (x1,...,xn)
Cas 2. Considérons la fonction objectif min. g(x1 ,...,xn)
. On pourra l’écrire sous la forme

min. y
 f (x ,...,x )
 g(x11,...,xnn) ≤ y
s.c.
y≥0

ou encore

min. y

 f (x1, . . . , xn) ≤ y.g(x1, . . . , xn)
s.c.
y ≥0

On pourra ensuite appliquer la linéarisation des produits de variables vue précédemment si les
variables x1, . . . , xn sont binaires.
7
Considérons maintenant le modèle suivant avec un dénominateur strictement positif.

n n
   
P P
min. α+ a i xi / β + b i xi
i=1 i=1

 n
P
c i xi ≥ d



s.c. i=1


 x ≥ 0; i = 1, . . . , n
i

n
 
P
En posant t = 1/ β + bixi , on obtient le modèle
i=1

n
P
min. α t + a i xi t
i=1


Pn
c i xi ≥ d






 i=1


n
s.c. P
 β t + b i xi t = 1
i=1







 t > 0; x ≥ 0; i = 1, . . . , n
i

8
Ensuite, en introduisant les variables yi = xi t, on obtient le modèle

n
P
min. α t + aiyi
i=1


Pn
ciyi ≥ d t






 i=1


n
s.c. P
 β t + biyi = 1
i=1







 t > 0; y ≥ 0; i = 1, . . . , n
i

Pour la résolution, on peut supposer t ≥ 0, ensuite déterminer les valeurs des variables xi par
la relation xi = yti .

9
4 Maximum

Cas 1. Considérons la contrainte max {fi(x1, x2, . . . , xn)} ≤ a où les fonctions fi(x1, x2, . . . , xn),
1≤i≤k
1 ≤ i ≤ k, sont linéaires. On peut la remplacer par

 f1(x1, x2, . . . , xn)} ≤ a
..
 f (x , x , . . . , x )} ≤ a
k 1 2 n

Cas 2. Soit la fonction objectif min. max {fi(x1, x2, . . . , xn)} où les fonctions fi(x1, x2, . . . , xn),
1≤i≤k
1 ≤ i ≤ k, sont linéaires. Cette fonction objectif peut être exprimée par

min. y

 fi(x1, x2, . . . , xn) ≤ y; i = 1, . . . , k
s.c.
y ≥0

10
5 Minimum

Cas 1. Considérons la contrainte min {fi(x1, x2, . . . , xn)} ≥ a où les fonctions fi(x1, x2, . . . , xn),
1≤i≤k
1 ≤ i ≤ k, sont linéaires. On peut la remplacer par

 f1(x1, x2, . . . , xn)} ≥ a
..
 f (x , x , . . . , x )} ≥ a
k 1 2 n

Cas 2. Soit la fonction objectif max. min {fi(x1, x2, . . . , xn)} où les fonctions fi(x1, x2, . . . , xn),
1≤i≤k
1 ≤ i ≤ k, sont linéaires. Cette fonction objectif peut être exprimée par

max. y

 fi(x1, x2, . . . , xn) ≥ y; i = 1, . . . , k
s.c.
y ≥0

11
6 Fonction linéaire par morceaux

Considérons une fonction f (x) linéaire sur les intervalles [a0, a1], [a1, a2], . . . , [an−1, an]. Nous
pouvons l’exprimer par f (x) = λ0f (a0) + λ1f (a1) + . . . + λnf (an) avec

λ0 + λ1 + . . . + λn = 1


λ0 ≤ y1




λ1 ≤ y1 + y2



 ..



λn−1 ≤ yn−1 + yn



 λn ≤ yn



 y1 + y2 + . . . + yn = 1
 λ0, λ1, . . . , λn ≥ 0



y1, y2, . . . , yn ∈ {0, 1}

Dans ce cas x = λ0a0 + λ1a1 + . . . + λnan.

A chaque intervalle [ai−1, ai] est associée une variable yi et un seul intervalle est actif à la fois.

Cette approche est intéressante lorsqu’on optimise des fonctions de plusieurs variables de la
k
P
forme fi(xi) où le nombre d’intervalles n’est pas très grand.
i=1
12

Vous aimerez peut-être aussi