Programmation Linéaire de La Production
Programmation Linéaire de La Production
Programmation Linéaire de La Production
2015-2016
Introduction: techniques de programmation
Hypothèse:
- Les besoins sont proportionnelles aux quantités produites.
1- Modélisation monopériode (1)
Exemple introductif
L’entreprise LAVAM fabrique des machines à laver commercialisées sous diverses marques,
représentant une cinquantaine de références. Pour la planification à moyen terme, l’ensemble de la
production a été regroupé en trois grandes familles, correspondant à trois gammes du marché :
économique, moyenne, haute.
De la réunion mensuelle destinée à établir le PDP du mois suivant, on a extrait les propos rapportés
ci-après :
Service de production: L’usine LAVAM est subdivisée en trois ateliers :
1- L’atelier tôlerie où sont fabriqués les châssis et les tambours des machines. Dans cet atelier, la
machine utilisée pour fabriquer les tambours limite la production à 500 machines par mois.
2- L’atelier de montage : pour cet atelier les limitations viennent d’une part de la main d’oeuvre et
d’autre part de l’approvisionnement en programmateurs électroniques. Ces programmateurs qui
équipent les gammes moyennes et hautes, ont fait l’objet d’un contrat portant sur la livraison de
300 pièces pour le mois.
3- L’atelier de conditionnement : pour cet atelier la seule limitation vient de la main d’oeuvre.
Le tableau suivant donne les temps de travail nécessaire dans les ateliers pour les diverses gammes
en 1/10 d’heure.
Economique moyenne Haute
Montage 8 10 12
Conditionnement 2 3 4
1- Modélisation monopériode (2)
Exemple introductif
Responsable financier: Les coûts moyens des consommations ont été estimés
respectivement à 260 DH, 300 DH et 350 DH.
1- Modélisation monopériode (3)
Modélisation
Contraintes:
C1 : En tôlerie, il faut un tambour par machine et on ne peut en fabriquer que 500 dans
le mois,
C2 : Au montage, la demande (exprimée en 1/10) en main d’oeuvre est égale à (8 E +
10 M + 12 H).
C3 : Il faut un programmateur par machine moyenne et haute et le stock est limité à
300,
C4 : Au conditionnement, la demande en heures de travail est de (2 E+ 3 M + 4 H), la
disponibilité est de 1500.
C5 et C6 : respect des contrats signés: il faut fabriquer au moins 200 machines
économiques et 100 hautes.
1- Modélisation monopériode (4)
Maximiser
(700-260) E + (1000 – 300) M + (1250-350) H
S.C
C1 E+ M + H ≤ 500
C2 8 E + 10 M + 12 H ≤ 6000
C3 M + H ≤ 300
C4 2 E + 3 M + 4 H ≤ 1500
C5 H ≥ 100
C6 E ≥ 200
C.N.N E ≥ 0, M ≥ 0, H ≥ 0
Forme canonique simpliciale: Cette forme de programme suppose qu’on maximise une
forme linéaire sous des contraintes qui sont des égalités et des contraintes de non
négativité. Si le programme comprend n variables x1,…xn formant le vecteur colonne X, la
fonction économique est une forme linéaire définie par le covecteur q = (q1,…qn) et on
maximisera :
q.X = q1x1+q2x2+….qnxn
Max q1x1+q2x2+….qnxn
b11x1+b12x2+….b1nxn = b1
b21x1+b22x2+….b2nxn = b2
…………………….
bm1x1+b2mx2+….bmnxn = bm
X1 ≥ 0, x2 ≥ 0, …, xn ≥ 0
1- Modélisation monopériode (7)
La forme générale du modèle analytique:
Max f1x1+f2x2+….fnxn
S.C a11x1+a12x2+….a1nxn ≤ a1
a21x1+a22x2+….a2nxn ≤ a2
…………………….
am1x1+a2mx2+….amnxn ≤ am
x1 ≥ 0, x2 ≥ 0, …, xn ≥ 0
S.C a11x1+a12x2+….a1nxn + z1 = a1
a21x1+a22x2+….a2nxn + z2 = a2
…………………….
am1x1+a2mx2+….amnxn + zm = am
x1 ≥ 0, x2 ≥ 0, …, xn ≥ 0
z1 ≥ 0, z2 ≥ 0, …, zm ≥ 0
1- Modélisation monopériode (8)
Pour des contraintes de type ≥, il faudra retrancher une variable d’écart non négative du
membre de gauche pour le rendre égal au membre de droite. Ainsi :
x1 ≥ 0, x2 ≥ 0, …, xn ≥ 0 x1 ≥ 0, x2 ≥ 0, …, xn ≥ 0
z1 ≥ 0, z2 ≥ 0, …, zm≥ 0
Instructions:
Les variables d’écart sont appelées les variables de base. Les variables
de décision sont appelées variables hors base.
Toutes les variables hors base sont nulles quelque soit le nombre
d’itération effectué.
Dictionnaires 1: zi = bi, Z = 0, xj = 0 (on ne consomme aucune ressource,
on ne produit rien, on ne gagne rien)
Etapes de résolution par l’algorithme simplex(2)
En partant de la solution basique (xj = 0), et on améliore le bénéfice.
Considérons une variable hors-base dont le coefficient dans la dernière ligne (fonction
objective) du dictionnaire est positif.
Dans le Dictionnaire 1, tous les coefficients de la dernière ligne sont positifs, donc on peut
prendre n'importe quelle variable xi.
Il est évident que si on fait croître la variable choisie à partir de 0, les autres variables hors-
base restant nulles, la valeur de la fonction Z croît.
Jusqu'où peut-on « pousser xi », tout en gardant xj (i≠j)égale à zéro ? Il faut que la solution
reste réalisable. Les contraintes sur l'augmentation de xi
Exemple:
On choisit la variable hors base: A avec B = 0
Maximise 4 A + 3 B
S.C 2 A + B + z1 = 12 Les contraintes sur l'augmentation de A sont:
A+ 2 B + z2 = 12
A ≥ 0, B ≥ 0 z1 ≥ 0 ⇒ 12 – 2A ≥ 0 ⇒ A ≤ 6
z2 ≥ 0 ⇒ 12- A ≥ 0 ⇒ A ≤ 12
Dictionnaire 1: A= B = Z = 0; La plus restrictive de ces contraintes est A ≤ 6 (C1) →
Z1 = 12, Z2 = 12 Changement de dictionnaire en échangeant les rôles
de A et z1.
Etapes de résolution par l’algorithme simplex(2)
Les règles de manipulation des tableaux sont :
1- Initialisation. bi, cj , aij , Z = 0.
2- Choix de colonne pivot (variable à entrer en base):
→ Si Cj ≤ 0, j = 1,…n +m, alors STOP (la solution optimale est trouvée).
→ Sinon, choisir une colonne s, telle que Cs > 0.
3- Choix de ligne pivot (variable à sortir de la base ):
→ Si ais ≤ 0, i = 1,…, m, alors STOP (la fonction objective n'est pas bornée).
→ Sinon, choisir une ligne r, telle que :
br b
= min i , i : 1...m; ais > 0
ars ais
4- Pivot (passage d'un tableau au tableau suivant)
→ Transformation de la ligne pivot : elle est divisée par l'élément pivot:
' br arj
br = '
arj = ; j : 1...n + m
ars ars
Etapes de résolution par l’algorithme simplex(2)
arj cs cb
'
cj = cj − z' = z + s r
ars ars
Modélisation monopériode: Algorithme général
On considère une entreprise fabriquant n produits (i: 1…n), la demande di en chaque
produit est comprise dans l’intervalle [dmin, dmax]. Le gain apporté par une unité du produit i
est gi.
Modélisation :
Service des achats: a contacté un sous-traitant qui pourrait fabriquer un maximum de 100
tambours. Bien entendu, ces tambours reviendraient plus chers que ceux fabriqués en
interne. Ce surcoût est estimé à 20DH par tambour. Une seconde source
d’approvisionnement de programmateurs est possible. Un fournisseur extrême-oriental a été
contacté. Il exige une commande minimale de 100 programmateurs et peut en livrer jusqu’à
150. Ces programmateurs ont un prix unitaire de 5DH plus élevé que ceux livrés
actuellement, et de plus, le transport a un coût fixe de 1000 DH.
Modélisation monopériode: Prise en compte des
ressources additionnelles(2)
Définition des variables de décision
o Programmateurs: passons nous une commande ? Cette décision est une valeur logique
oui/non. En programmation linéaire, nous la traduirons par une variable bivalente (pouvant
prendre les valeurs 0 ou 1). On notera CC cette variable.
o Si CC = 1, il faut décider du nombre de programmateurs à commande (variable CCP), et
dans ce cas, ce nombre est au minimum 100. Ce que nous traduirons par la contrainte :
PCC ≥ 100 CC.
o Si CC = 1, la commande maximale en programmateur est de 150. Ceci se traduit par la
contrainte : PCC ≤ 150CC.
Modélisation monopériode: Prise en compte des
ressources additionnelles(3)
Fonction objective
On utilise la fonction objective du modèle précédent, diminué des coûts supplémentaires
engendrés par l’augmentation des heures de travail dans les ateliers de montage et de
conditionnement, par les tambours sous-traités, et les programmateurs éventuellement :
Maximiser
440 E + 700 M + 900 H –30HSupM – 40 HSupC – 20 TST – 5 PCC – 1000 CC
S.C
C1 E+ M + H ≤ 500 + TST (limite des tambours disponibple en tôlerie)
C2 8 E + 10 M + 12 H ≤ 6000 + HSupM (limite heures en montage)
C3 M + H ≤ 300 + PCC (limite programmateurs)
C4 2 E + 3 M + 4 H ≤ 1500 + HSupC (limite heures conditionnement)
C5 H ≥ 100 (demande minimum)
C6 E ≥ 200
C7 PCC ≥ 100 CC (Nombre minimum à commander des programmateurs)
C8 PCC ≤ 150CC (Nombre maximum à commander des
programmateurs)
C9 HSupM ≤ 600 (limite heures supp en montage)
C10 HSupC ≤ 150 (limite heures supp en conditionnement)
C11 TST ≤ 100 (limite de sous traittance des tambours)
C12 CC=0 ou 1,
C.N.N E ≥ 0, M ≥ 0, H ≥ 0, TST ≥0, HSupM ≥0, HSupC ≥ 0, PCC ≥ 0
Modélisation monopériode: Prise en compte des
ressources additionnelles(4)
Solution optimale (Lindo 6.1)
VARIABLE VALUE
A 1
E 200
M 283
HSUPM 0
HSUPC 150
TST 83
PCC 100
H 100
Modélisation monopériode avec ressources additionnelles: Algorithme général
On considère une entreprise fabriquant n produits (i: 1…n), la demande di en chaque produit est
comprise dans l’intervalle [dmin, dmax]. Le gain apporté par une unité du produit i est gi. L’entreprise
dispose de m ressources k (k: 1…m). Le produit i requiert aik unités de la ressource k. La ressource k
peut être obtenue de diverses sources Slk. Le coût (surcoût) d’une unité de Slk est Clk . On peut séparer
les ressources en deux groupes :
- Les sources Slk du premier groupe existent en quantité limitée blk.
- Pour le second groupe, il y a une quantité minimale imposée alk et il y a un coût fixe flk à payer si l’on
décide d’utiliser la source.
Les variables de décision sont : Les quantités xi du produit i à fabriquer, Les quantités ylk de la source
Slk à utiliser, Les variables bivalentes zlk associées aux sources du second groupe : zlk = 1 si on utilise la
source l pour se procurer la ressource k.
L’objectif est de maximiser les gains diminués des coûts variables et fixes des ressources.
n m m
max ∑ g i xi − ∑∑ C y − ∑ f l k zlkl
k k
l
i =1 k =1 l k =1
n
(k : 1..m); ∑ aik xi ≤ ∑ ylk
i =1 l
(i : 1..n)d i min ≤ xi
xi ≤ d i max
ylk ≤ blk zlk
ylk ≤ alk zlk
zlk ∈ 0,1
Programmation sur un horizon donné
Chez LAVAM, la réunion mensuelle a pour but d’établir le PDP sur les trois mois suivants.
Ici, nous ne prendrons en compte que les contraintes sur les ressources vues au tout
premier exemple (monopériode sans RA), mais nous disposons en plus des données sur
les mois à venir.
Responsable commercial
A partir des commandes fermes connues et des prévisions, il est possible de dresser une
fourchette des commandes attendues. Le tableau suivant donne les ventes minimales,
moyennes et maximales pour chaque famille.
Economique Moyenne Haute
Mois 1 80/100/120 90/110/130 120/130/140
Mois 2 90/105/120 120/140/160 100/105/110
Mois 3 100/120/140 100/120/140 130/150/170
Responsable de production
Compte tenu des arrêts programmés par la maintenance préventive, la production
maximale de tambours sera respectivement de 500, 380 et 400 sur les trois mois.
Responsable des achats
La livraison des programmateurs électroniques sera de 400 par mois. Un inventaire de
stocks actuels (mois 0) nous donne les disponibilités suivantes pour le début du premier
mois: composantes: 60 tambours et 50 programmateurs pour les approvisionnements,
produits finis: 30 machines de la gamme économique, 50 de la gamme moyenne et 10 de
la gamme haute.
Responsable financier
Le stock représente une charge financière très importante. Les coûts moyens de
possession mensuels sont de 1 F pat tambour, 5 F par programmateur, 30, 45 et 60 F par
machine: Economique, moyenne et haute respectivement.
La première question qui se pose est de savoir si l’entreprise est capable de répondre à la
demande dans les trois cas de figure suivants :
Il faut connaître le niveau des stocks restant en fin de mois (autrement dis, disponible
pour le mois suivant). Ces stocks peuvent se calculer à partir des fabrications et des
demandes du mois précédent. Les variables de stock ne sont donc pas impératives, mais
permettent de simplifier notablement le modèle. Nous les noterons St+Produit+Mois avec
Produit = [E, M, H, Tamb, Progr] et Mois = [0,1, 2, 3]. La variable StE1 représente le stock
de la gamme économique en début du mois 1. Le mois 0 représente les stocks de départ
et le mois 3 les stocks disponibles à la fin de l’horizon.
Objectif : Nous voulons maximiser la différence entre les ventes et les coûts directs de
fabrication et de stockage. Nous aurons donc la fonction objective suivante dans le
programme linéaire :
Contraintes:
Nous retrouvons tout d’abord pour chacun des mois les contraintes statiques de l’exemple
initial.
• C3 : En ce qui concerne les tambours, il est possible d’en fabriquer un maximum de 500 au
mois 1. Supposons que la fabrication du mois soit de 460 machines. Compte tenu des 60
tambours en stock, la demande réelle sera de 400 tambours pour une capacité de 500. Nous
avons toute latitude entre ces deux valeurs, et au-delà de 400, les tambours supplémentaires
constitueront le stock du mois 1. On a ici une inéquation, alors que pour les
programmateurs, nous avions une équation :
Contraintes:
Les contraintes de contrats seront remplacées par des contraintes exprimant qu’il faut
satisfaire les demandes du scénario testé. Une demande peut être satisfaite par le stock,
ou par la fabrication du mois. Les fabrications excédentaires constituent le stock du mois
suivant. Pour la gamme économique, les contraintes seront donc de la forme :
Remarques : Afin de rendre moins fastidieux l’écriture du programme, dans les logiciels
de programmation linéaire du commerce, il est possible de donner les contraintes
génériques. Un programme dit « modeleur » se charge de générer le programme
correspondant.
Programmation su r un horizon donné
n p n p n p
max ∑ ∑ g i xi , j − ∑ ∑ si Si , j − ∑ ∑ srk i SRk , j
i =1 j =1 i =1 j =1 i =1 j =1
n
∑ aik X i, j ≤ bk , j ; (k ∈ R1)
i =1
n
∑ ai,k X i, j + SRk , j ≤ bk , j + SRk , j −1; (k ∈ R 2)
i =1
n
∑ ai,k X i, j + SRk , j = bk , j + SRk , j −1; (k ∈ R3)
i =1
Si , j −1 + X i , j = d i , j + Si , j
Résolution graphique d’un programme linéaire à deux variables de décision
Maximise 4 A + 3 B
S.C 2 A + B + z1 = 12 B
A+ 2 B + z2 = 12
A ≥ 0, B ≥ 0