SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Utilisation du solveur dans Excel
I. INTRODUCTION
Excel inclut un solveur de programmation mathématique conçu par Frontline Systems pour
Microsoft. Ce solveur permet de définir et résoudre des problèmes d'optimisation linéaires ou
non-linéaires. Les variables peuvent être réelles, entières ou binaires. La fonction-objectif
facultative peut être minimisée, maximisée ou atteindre une valeur-cible.
Il faut savoir que ce solveur est bridé à 200 variables. Le nombre de contraintes est illimité
pour les PL, mais limité à 100 pour les PNL, sauf pour les contraintes simples de bornes sur
les variables, comme x ≤ 3. Frontline Systems vend des versions non limitées qui se
substituent à la version bridée offerte avec Excel, voir leur site web http://www.frontsys.com.
Un historique et des détails sur le fonctionnement interne figurent dans l'article :
D. Fylstra, L. Lasdon, J. Watson, A. Waren, Design and use of the Microsoft Excel solver,
Interfaces, volume 28, n° 5, pages 29-55, 1998.
Le solveur n'est pas toujours présent dans les menus. Vérifiez dans le menu Outils si le choix
Solveur est visible. Sinon, il faut l'installer avec le choix Macros complémentaires. Ensuite,
un clic sur Outils/Solveur fait apparaître la boîte Paramètres du solveur :

Cette boite permet de définir les cellules de la feuille Excel qui correspondent à la fonctionobjectif (Cellule-cible à définir), aux variables (Cellules variables) et aux contraintes
(Contraintes). On peut choisir le type d'optimisation : maximiser (Max), minimiser (Min) ou
trouver une solution de coût égal à une valeur donnée (Valeur). Il est possible de choisir
d'autres paramètres de résolution avec le bouton Options. En cliquant sur Résoudre, les
valeurs des variables et de la fonction-objectif apparaissent dans les cellules correspondantes.

– Page 1
II. PARAMETRES DU SOLVEUR
La cellule-cible, unique, doit contenir une formule qui lie, directement ou indirectement, les
variables pour définir la fonction-objectif. Elle est facultative : si elle est absente, le solveur
cherche une solution vérifiant toutes les contraintes, ce qui permet de résoudre des systèmes
d'équations linéaires ou non-linéaires.
Les cellules variables sont définies par une liste de cellules ou de plages, séparées par des
points-virgules, par exemple B1:B4; C1:C4; E8. Elles ne doivent pas contenir de formules et
il est conseillé de les initialiser à zéro.
Les contraintes sont du type {cellule | plage} opérateur {constante numérique | cellule | plage
| formule}, les accolades avec barres verticales désignant des choix exclusifs. L'opérateur est
=, <=, >=, ent ou bin. Rappelons qu'il ne peut pas y avoir d'opérateurs de différence ou
d'inégalité stricte en programmation mathématique, à cause des problèmes de précision. Pour
une plage de n cellules, une contrainte du type plage opérateur {constante | cellule | formule}
équivaut à n contraintes dans lesquelles chaque cellule de la plage est comparée au second
membre. Une contrainte peut avoir deux plages de même dimension : elle équivaut à n
comparaisons entre les cellules de même rang des deux plages.
B4 <= 6
B4:B5 <= C5
B4:B5 = C6:C7
B4 <= 3*SIN(C4)+2

B4 inférieure ou égale à 6
B4 et B5 inférieures à C5
B4 inférieure ou égale à C6 et B5 inférieure ou égale à C7
B4 inférieure ou égale à 3.sin (C4) + 2

L'opérateur bin permet de spécifier qu'une cellule ou une plage doivent être binaires.
L'opérateur ent sert à définir des cellules ou plages entières. Les cellules concernées doivent
évidemment être des variables. Pour ces deux opérateurs, le solveur met par défaut binaire et
entier dans les seconds membres. Pour ent, on peut cependant préciser une valeur maximale.
B4 bin binaire
B4:B5 ent entier
B4:B5 ent 6

B4 est binaire (le mot binaire est ajouté par défaut)
B4 et B5 sont entières (le mot entier est ajouté par défaut)
B4 et B5 sont entières et inférieures ou égales à 6.

En cliquant sur le bouton Options du solveur, on peut spécifier que les variables sont positives
ou nulles par défaut et dans ce cas on n'a pas besoin de taper les contraintes de positivité. Une
variable peut aussi intervenir dans plusieurs contraintes :
B4 ent 6
B4 >= 2

B4 est un entier inférieur ou égal à 6
et supérieur ou égal à 2

On voit que le solveur n'autorise des formules que dans le second membre des contraintes.
Les formules pour les premiers membres des contraintes et la fonction-objectif doivent être
définies dans des cellules Excel et lier des variables entre elles. Le solveur se contente donc
d'appeler Excel quand il veut récupérer les valeurs de ces formules. Une conséquence est qu'il
ne peut pas savoir si un modèle est linéaire. On doit le lui dire dans les options, en cochant la
case Supposé linéaire. Sinon, le solveur utilisera par défaut un algorithme très lourd pour le
cas non-linéaire!

– Page 2
La possibilité d'utiliser des plages dans les contraintes est très puissante : elle permet de créer
des blocs de contraintes similaires au lieu d'entrer une contrainte séparée pour chaque cellule
des plages. Mais pour cela, il faut se plier à la logique de présentation d'Excel (feuilles
rectangulaires de cellules), ce qui est souvent contraignant.
Il faut donc toujours bien réfléchir à la disposition de votre PL (objectif, contraintes,
variables, formules), en regroupant si possible les composants en plages, pour faciliter la
définition du modèle avec le solveur et avoir une présentation plus lisible et agréable!
La démarche de conception et les principales fonctions du solveur vont être illustrées sur un
problème de production de ciments. En cas de difficultés, consultez l'aide générale d'Excel,
mot-clé Solveur, et les aides disponibles dans la boite Solveur et son sous-menu Options. Le
rôle des différents paramètres du sous-menu Options est expliqué en section VII. Un classeur
SOLVSAMP.XLS fourni avec Excel contient d'autres exemples utiles de modèles.

III. PRODUCTION DE CIMENTS – VERSION SIMPLE
Une usine produit 2 ciments rapportant 50$ et 70$/t. Pour 1 t de ciment 1, il faut 40 mn de
four et 20 mn de broyage. Pour 1 t de ciment 2, 30 mn et 30 mn. Four et broyeur sont
disponibles 6h et 8h par jour. Quelles quantités faire chaque jour pour maximiser le bénéfice ?
Ce problème peut se modéliser avec un PL avec deux variables continues :
Max 50.x1 + 70.x2
40.x1 + 30.x2 ≤ 360
20.x1 + 30.x2 ≤ 480
x1, x2 ≥ 0

→ maximisation du profit
→ disponibilité du four
→ disponibilité du broyeur
→ quantités non négatives !

Créer une feuille Excel et définir les cellules suivantes, en affichant les formules avec CTRL
+ accent grave ou CTRL + # selon les PC. On a choisi B3 et B4 pour les variables, B5 pour le
profit, B6 et B7 pour les contraintes. Prendre l'habitude d'initialiser les variables à 0.

Définir le PL avec le menu Outils/Solveur, en remplissant la boîte comme suit. Aller dans le
champ Cellule cible et taper B5 ou mieux, pour éviter les erreurs de cellules, cliquer sur la
cellule B5 de la feuille de calcul : le nom de cellule est copié automatiquement dans le champ.
Vérifier que le sens d'optimisation est bien Max. Allez sur Cellules variables et tapez la liste
B3;B4 ou la plage B3:B4, ou encore sélectionnez ces deux cellules dans la feuille de calcul.
Enfin, définir les contraintes, en cliquant sur Ajouter pour chaque contrainte.

– Page 3
Cliquer sur Résoudre : le solveur résout le PL. On peut ensuite garder les résultats dans la
feuille ou remettre à zéro. Si on garde les résultats, il faudra remettre les variables à 0 à la
main pour refaire une résolution. Sauvez votre travail : le modèle est enregistré avec la feuille.

IV. PRODUCTION DE CIMENTS – VERSION GENERIQUE
La formulation précédente est criticable à cause d'une mauvaise séparation modèle-données :
Les coefficients des contraintes et de l'objectif sont dans des formules de la feuille.
Les valeurs des seconds membres sont dans le modèle défini par la commande Solveur.
Il faut ajouter une contrainte dans le modèle pour chaque nouvelle ressource.
Il faudra donc modifier des formules ou le modèle si des valeurs numériques changent dans
les données ou si on ajoute des ciments ou des ressources. Nous allons voir une formulation
dite générique, qui sépare au maximum les données du modèle. Plus facile à modifier, elle est
basée sur les caractéristiques suivantes d'Excel et du solveur :
Excel et le solveur permettent de définir des plages de cellules, comme B3:B4, B3:C4.
La fonction Excel SOMMEPROD permet de faire des produits scalaires de 2 plages.
Excel permet de copier des formules contenant des références relatives et absolues
Le solveur peut comparer une plage à une constante ou 2 plages de même taille.

– Page 4
Préparer la feuille suivante. Entrez les données : coûts, consommations de ressources par
ciment et disponibilités des ressources. Mettre les variables B5 et C5 à 0. Pour le profit total
E4, taper la formule = SOMMEPROD (B4:C4; B5:C5).

Pour l'utilisation du four E8, taper =SOMMEPROD (B8:C8; $B$5:$C$5). Avec la poignée de
recopie, copier la formule dans E9 où elle devient = SOMMEPROD (B9:C9;$B$5:$C$5). Si
on n'avait pas mis une référence absolue (indiquée par des dollars) pour la plage des coûts
B5:C5, les 5 auraient été changés en 6! Avec cette présentation bien conçue, la définition du
modèle est très facile : les variables forment une plage, et les deux contraintes d'utilisation de
ressources sont définies avec une seule comparaison entre deux plages.

Cliquer sur Options et cocher Modèle supposé linéaire : le solveur va utiliser l'algorithme du
simplexe, sinon il utilise un algorithme général de programmation non linéaire, beaucoup plus
lent. Cliquer aussi sur Supposé non-négatif : ainsi, on peut omettre les contraintes de positivité
des variables comme dans le premier modèle. Sinon, on pourrait les définir avec une seule
plage : B5:C5 >= 0. Enfin, cliquer sur Résoudre, on obtient les résultats page suivante.
On obtient évidemment les mêmes résultats qu'avec le premier modèle mais leur présentation
dans la feuille Excel est plus lisible. De plus, on peut changer les données sans toucher aux
formules et au modèle.

– Page 5
Il est aussi possible de donner des noms plus parlants aux cellules. Par exemple, sélectionner
E4, taper ProfitTotal au lieu de E4 dans la case Nom du menu principale (à gauche de la case
la formule) puis appuyez sur Entrée : ceci renomme la cellule. De même, sélectionnez les
plages B5:C5, E8:E9 et G8:G9 pour les renommer en Productions, Utilisations et Limites.
Ouvrir la boîte solveur : la cellule cible est devenue ProfitTotal, la plage de variable est
devenue Productions, et la contrainte s'écrit Utilisations <= Limites. On peut aussi taper ces
noms dans le solveur, s'ils ont été définis au préalable. Hélas, il semble y avoir un bug dans la
transmission des noms de cellules au solveur : très souvent, ce dernier remet dans le modèle
les plages spécifiées pour les variables, même si des noms plus parlants leur ont été donnés.

V. EXEMPLE D'EXTENSION DU MODELE
Par exemple, ajoutons un ciment 3 de profit 80, nécessitant 50 minutes de four et 25 de
broyage, plus une ensacheuse disponible 5 h/j. Les 3 ciments consomment respectivement 55,
35 et 40 minutes d'ensacheuse par tonne. Les modifications sont assez simples :
Insérer une colonne devant la colonne D pour le nouveau ciment.
Ajouter une ligne à la fin pour l'ensacheuse.
Etendre le SOMMEPROD du profit total (maintenant dans F4) pour inclure le ciment 3.
Faire pareil pour le SOMMEPROD de l'utilisation de la 1ère ressource.
Avec la poignée de recopie, copier cette formule dans les autres utilisations.
Dans le solveur, augmenter la plage de variables pour inclure le ciment 3 (variable D5).
Sélectionner la plage de contraintes, cliquer sur modifier et l'étendre au ciment 3.

– Page 6
On pourrait évidemment limiter les nombres à 2 décimales en changeant leur type de cellule
par défaut (Standard) en type Nombre. Attention : si vous avez défini des noms comme
Productions pour la plage B5:C5, il faut les redéfinir avec le menu Insertion/Nom/Définir. La
boîte de dialogue qui s'affiche liste les noms définis dans la feuille Excel. En cliquant sur un
nom, on peut le supprimer ou modifier la plage de cellules qu'il désigne.
Ces modifications seraient les mêmes si le PL avait 100 ciments et 50 ressources! Les
modifications seraient considérables avec le premier modèle, avec un risque énorme d'erreur.

VI. TYPES DE PROGRAMMES MATHEMATIQUES
Un programme mathématique est un problème d'optimisation d'une fonction de plusieurs
variables (fonction-objectif), en présence de contraintes. Pour bien utiliser le solveur et ses
paramètres, il faut savoir qu'il existe les trois grands types de programmes définis ci-dessous.
Programmes linéaires continus (PL)
Les variables sont des réels, la fonction-objectif et leurs contraintes sont toutes linéaires. Dans
ce cas, les contraintes définissent un polyèdre dont un des sommets correspond à la solution
optimale. Le solveur d'Excel peut résoudre de grands PL (avec des centaines de variables)
grâce à l'algorithme du simplexe, qui se contente de construire une suite de sommets du
polyèdre menant à l'optimum, sans jamais entrer à l'intérieur.
Programmes linéaires en nombres entiers (PLNE)
Ce sont des programmes linéaires à variables entières. Les PL en 0-1 sont des cas particuliers
de PLNE avec des variables binaires : il s'agit en général de variables de décision. En général,
les PLNE sont très difficiles à résoudre, car l'optimum entier est souvent à l'intérieur du
polyèdre défini par les contraintes du PL relaxé (PLNE sans les contraintes d'intégrité des
variables) : l'algorithme du simplexe n'est plsu valable.
Les variables entières doivent être définies par des contraintes d'intégrité dans le solveur.
Cliquer sur Ajouter une contrainte, sélectionnez la variable ou la plage de variables entières et
sélectionnez Ent ou Bin dans le type de comparaison (là où on utilise =, <= ou >= d'habitude).
Le solveur utilise une méthode arborescente (branch-and-bound) basée sur l'algorithme du
simplexe. Ce dernier est appliqué au PL relaxé, c'est-à-dire sans contraintes d'intégrité. Si
l'optimum obtenu est entier, on a trouvé l'optimum du PLNE, fin. Sinon, on a en général une
majorité de variables à valeurs entières et une minorité de variables fractionnaires. Le solveur
choisit une des variables fractionnaires et construit deux sous-problèmes. Par exemple, si une
variable xj qui doit être entière vaut actuellement 2.3, le solveur construit un sous-problème en
ajoutant la contrainte xj ≤ 2 et un autre en ajoutant la contrainte xj ≥ 3. Dans le cas d'une
variable binaire, la séparation est encore plus simple : le solveur force xj à 0 ou bien à 1.
Les séparations successives en sous-problèmes construisent une arborescence qui peut
contenir un nombre énorme de nœuds. En plus, le solveur applique l'algorithme du simplexe
en chaque nœud (sous-problème). Bien que des tests permettent d'éliminer une bonne fraction
des nœuds, il faut s'attendre à des temps de résolution importants avec les grands PLNE, à
partir de quelques dizaines de variables entières ou une centaine de variables binaires.

– Page 7
En général, un PL en 0-1 est plus facile à résoudre qu'un PLNE avec le même nombre de
variables. Si seulement certaines variables sont entières, on a un PL mixte comme le problème
de localisation d'entrepôts. A nombre de variables égal, un PL mixte est plus facile qu'un
PLNE ou PL en 0-1.
Il existe cependant quelques cas de PLNE faciles : les problèmes de flots et le problème
d'affectation. La raison est mathématique : les sommets des polyèdres de ces problèmes ont
toujours des coordonnées entières et l'algorithme du simplexe va donc trouver un optimum
entier. On peut s'en persuader en résolvant un problème d'affectation sans préciser que les xij
sont binaires : le solveur trouve bien un optimum avec des variables à 0 ou 1. Si on a précisé
que les variables doivent être binaires, ce n'est pas grave : le solveur lance sa méthode
arborescente, mais comme elle débute par une application du simplexe au PL relaxé,
l'optimum entier va être trouvé aussitôt, à la racine, sans développement d'une arborescence.

Programmes non-linéaires (PNL)
Au moins une des contraintes ou l'objectif sont non-linéaires. Ces problèmes sont très
difficiles car les expressions peuvent contenir n'importe quoi : des sinus, des logarithmes etc.
Le domaine des solutions réalisable peut avoir une structure complexe et contenir de
nombreux optima locaux, à l'intérieur ou sur la frontière. Contrairement au cas linéaire, il
n'existe aucune condition générale pour dire si un optimum local est un optimum global. Les
solveurs commerciaux donnent au mieux, quand ils convergent, un optimum local.
L'optimalité locale peut être détectée grâce à des conditions comme celles de Kuhn-Tucker.
Les PNL avec des fonctions non partout différentiables (valeurs absolues par exemple) sont
ingérables. Le minimum pour espérer résoudre est que les expressions des contraintes et de
l'objectif soient des fonctions continues et différentiables. Les PNL les moins difficiles sont
ceux majoritairement linéaires, par exemple avec seulement une contrainte ou bien un objectif
non-linéaire.
Les PNL convexes (contraintes convexes formant donc un domaine convexe + minimisation
d'une fonction convexe ou maximisation d'une fonction concave) ont une propriété
intéressante : tout optimum local est également global. Par exemple, on peut avoir un PL dans
lequel on remplace l'objectif linéaire (bénéfice à maximiser) par un bénéfice non-linéaire à
cause d’un tarif dégressif selon la quantité, par exemple une fonction racine carrée. Dans ce
cas, les contraintes linéaires définissent un polyèdre, qui est un ensemble convexe, et on doit
maximiser une fonction concave : le problème est moins difficile.
Dans le cas général, on peut avoir des difficultés de résolution avec seulement une dizaine de
variables, si les contraintes et l'objectif sont tous non-linéaires et varient rapidement. Le plus
souvent, on a soit une convergence très lente, soit une convergence rapide mais sur un
mauvais optimum local ou sur un point qui n'est même pas un optimum local.
Les PNL peuvent être si difficiles à résoudre numériquement qu'on a toujours intérêt à les
convertir en PL (linéarisation), quand c'est possible. Par exemple, on trouve dans la littérature
des techniques pour remplacer une fonction non-linéaire par une fonction affine par
morceaux. Cette technique nécessite une nouvelle variable par morceau. Bien que le PL
résultant ait plus de variables que le PNL initial, il est en général bien plus facile à résoudre.

– Page 8
Le solveur utilise un algorithme qui calcule une suite de points convergeant vers un point
vérifiant les conditions de Kuhn et Tucker (quand il y arrive). Le point initial est à l'intérieur
du domaine défini par les contraintes. En chaque point, une direction de déplacement basée
sur le gradient de la fonction-objectif est calculé. La longueur du déplacement est calculée de
façon à ne pas sortir du domaine. Les calculs sont en général très lourds à cause des
expressions non-linéaires et des déplacements qui peuvent être nombreux et très petits.

VII. ROLE DES OPTIONS DU SOLVEUR
Dans 90% des cas, les modèles en systèmes industriels sont des PL ou PLNE. Les seuls
options utiles dans ce cas sont alors les suivantes.
Modèle supposé linéaire. Cochez cette case si vous êtes certain que votre modèle est linéaire
car le solveur n'a pas directement accès aux formules d'Excel et ne peut pas détecter par luimême la linéarité. Si la case est cochée, le solveur lance l'algorithme du simplexe (variables
continues) ou la méthode arborescente (si PLNE).
Supposé non-négatif. Tous les solveurs commerciaux (CPLEX, XPRESS, LINGO) supposent
par défaut que les variables sont positives ou nulles. Cette convention est bien pratique car on
n'a pas besoin de définir les contraintes correspondantes. C'est en général le cas dans les
problèmes industriels (quantités à produire etc.). On a donc intérêt à cocher cette case. Sinon,
dans un problème de minimisation de coût d'extraction de minerais, le solveur pourrait mettre
les quantités produites à moins l'infini : on remettrait le minerai au fonds des puits.
Itérations. Il s'agit du nombre d'itérations du simplexe (PL) ou de nœuds construits dans
l'arborescence (PLNE). La valeur par défaut est trop faible pour les grands problèmes : il vaut
mieux mettre 1000 à condition d'avoir une protection en limitant le temps de calcul. Si vous
conservez une valeur trop faible, vous le saurez quand la fonction "Résoudre" dira qu'elle n'a
pas réussi à trouver un point optimal.
Temps max. Il est prudent de conserver la valeur par défaut (100 secondes) pour éviter des
durées trop importantes. En effet, il est impossible de stopper le solveur en cours de calcul
sans planter Excel dans le gestionnaire des tâches accessible dans CTRL+ALT+DEL.
Augmenter cette valeur seulement si elle s'avère insuffisante.
Mise à l'échelle automatique (scaling). Le simplexe peut avoir des problèmes numériques en
présence d'un mélange de très petits et de très grands nombres. Ceci peut souvent être évité en
rédigeant le modèle : ne pas mélanger des coûts en MEuros et en centimes par exemple.
Sinon, en cochant la case, le solveur fait des changements de variables et de repère,
uniquement pendant la résolution, pour corriger ces disparités.
Précision et Tolérance. Il est déconseillé de modifier ces valeurs qui permettent au solveur de
savoir s'il respecte bien une contrainte d'égalité (précision) ou si une valeur de variable peut
être considérée comme entière (tolérance). A cause des nombreux calculs avec la précision
limitée de la machine, les calculs ne sont jamais parfaitement exacts. Ceci peut s'observer en
affichant un grand nombre de décimales dans un PLNE ou PL en 0-1 : les variables 0-1 au
moment de l'arrêt peuvent valoir 0.0001 ou 0.9999 par exemple. Dans de tels cas, il faut bien
entendu considérer ces valeurs comme des 0 ou des 1 dans l'interprétation des résultats.

– Page 9
Afficher le résultat des itérations. Peut parfois être utile pour faire un exercice, en montrant
les itérations successives du simplexe, ou pour voir si l'algorithme converge ou diverge en cas
de difficultés numériques.
Les autres paramètres ne servent que pour les PNL :
Convergence. Par défaut 0.0001. L'algorithme pour les PNL stoppe quand la variation (en
valeur absolue) de la fonction-objectif sur les 2 derniers points calculés devient inférieure ou
égale à cette valeur. La valeur conditionne donc la précision du résultat : ne pas modifier, sauf
si l'objectif prend des valeurs très élevées ou au contraire très petites.
Estimation. Mettre quadratique pour les PNL difficiles : estimation des gradients et
contraintes par des approximations du second ordre, plus précises.
Dérivées. Mettre central pour les PNL difficiles (estimation de dérivée à droite et à gauche).
Recherche. Mettre Newton sauf si le PC a une petite mémoire : convergence plus rapide.

VIII. FONCTIONS EXCEL UTILES
Excel offre plusieurs fonctions très utiles, dont certaines sont peu connues, qui facilitent les
opérations sur des plages de cellules et donc la définition des programmes linéaires. Dans ce
qui suit, plage désigne une plage de cellules à une dimension comme A1:A5 (un vecteur) ou à
deux dimensions comme A1:E5 (une matrice).

VIII.1 Fonctions non-matricielles
SOMME (plage) : calcule la somme des nombres d'une plage donnée.
SOMME.SI (plage1; critère; plage2) : calcule la somme des nombres de plage2 si la cellule de
même rang dans plage1 vérifie le critère. Si plage2 est omise, les nombres de plage1 vérifiant
le critère sont cumulés. Exemple : SOMME.SI (A1:A3; ">0") fait la somme des éléments
strictement positifs de la plage. SOMME.SI (A1:A3; C1; B1:B3) fait la somme des éléments
de B1:B3 tels que les éléments de même rang dans A1:A3 soient égaux à C1.
SOMMEPROD (plage1; plage2; …; plagen) : calcule la somme des produits entre éléments
de même rang dans les plages données. Pour deux plages à une dimension, cette fonction
équivaut à un produit scalaire.

VIII.2 Opérations matricielles
Excel offre aussi des opérations dites matricielles. Ce nom est assez mal choisi, il s'agit en fait
de fonctions qui renvoient un tableau de résultats. Les formules avec ces opérations sont
refusées si elles ne sont pas entre accolades. Exemple : la formule A1:A5+B1:B5 est refusée,
il faut taper {=A1:A5+B1:B5} pour qu'Excel comprenne qu'on veut la somme terme à terme
des deux vecteurs. On peut aussi taper la formule sans accolades et finir avec
CTRL+MAJ+ENTREE au lieu de ENTREE : Excel ajoute automatiquement les accolades.

– Page 10
Voici 2 exemples générant des tableaux temporaires mais renvoyant à la fin un seul nombre :
{=SOMME (A1:A5*B1:B5)} : équivalent à SOMMEPROD (A1:A5; B1:B5).
{=SOMME (A1:A5^2)} : calcule la somme des carrés de la plage A1:A5.
Une formule matricielle peut renvoyer une plage. Par exemple, si on veut dans B1:B3 les
éléments de la plage A1:A3 multipliés par 3, il faut sélectionner à la souris la plage souhaitée
pour le résultat (B1:B3), taper =3*A1:A3 puis CTRL+MAJ+ENTREE. Si on déplace le
curseur sur les cellules B1 à B3, Excel indique la même formule matricielle {=3*A1:A3}.
Pour retrouver toutes les cellules d'une même formule matricielle, il faut cliquer dans une des
cellules contenant la formule, puis utiliser le menu Edition/Atteindre/Cellules et choisir
Matrice en cours : Excel sélectionne alors toute la plage concernée, ce qui permet de modifier
ou d'effacer la formule matricielle.

Quelques fonctions matricielles utiles :
PRODUITMAT (plage1; plage2) : calcule le produit matriciel des deux plages, qui doivent
être de dimensions compatibles.
TRANSPOSE (plage) : transpose la matrice donnée. Par exemple, pour faire un produit de
matrices entre un vecteur-colonne de 5 éléments, A1:A5 et une matrice 5x5 C1:G5, il faut
transposer : PRODUITMAT (TRANSPOSE (A1:A5); C1:G5).
INDEX (plage; n° ligne; n° colonne) : renvoie l'élément situé à l'intersection de la ligne et de
la colonne données, ce qui permet de faire des indiçages comme en C, Delphi ou Visual
Basic. Si la plage a une seule ligne (colonne), l'indice ligne (colonne) est facultatif. Si l'indiceligne (colonne) est égal à zéro, la fonction renvoie la colonne (ligne) complète spécifiée par
l'autre indice, mais il faut une formule matricielle. Exemple : INDEX (A1:A8; 3) renvoie le
contenu de la troisième cellule de la plage A1:A8, c’est-à-dire A3.

– Page 11

Weitere ähnliche Inhalte

Was ist angesagt?

exercices gestion de stock
exercices gestion de stock exercices gestion de stock
exercices gestion de stock Yassine Badri
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels Oussama Werfelli
 
Annales corrigees de marketing et communication 2017 2018.
Annales  corrigees de marketing et communication 2017 2018.Annales  corrigees de marketing et communication 2017 2018.
Annales corrigees de marketing et communication 2017 2018.BONAVENTURE GUILLAUM NGORAN
 
Développement cognitif de l'enfant J Piaget.pptx
Développement cognitif de l'enfant J Piaget.pptxDéveloppement cognitif de l'enfant J Piaget.pptx
Développement cognitif de l'enfant J Piaget.pptxKhaoula509835
 
Transformation Digitale au Maroc
Transformation Digitale au MarocTransformation Digitale au Maroc
Transformation Digitale au MarocSocialImpulse
 
Communication : La communication interpersonnelle
Communication : La communication interpersonnelleCommunication : La communication interpersonnelle
Communication : La communication interpersonnelleVirginie Colombel
 
Donnees de panel
Donnees de panelDonnees de panel
Donnees de panelzizou36
 
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...Sherbrooke Innopole
 
Stabilité du lait à la chaleur
Stabilité du lait à la chaleurStabilité du lait à la chaleur
Stabilité du lait à la chaleurOmar EL Shabassy
 
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...Reconnaissance de panneaux de signalisation routière en utilisant la détectio...
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...Loghin Dumitru
 
Les conflits en entreprises
Les conflits en entreprisesLes conflits en entreprises
Les conflits en entreprisesFlorent Alima
 
Détection des droites par la transformée de Hough
Détection des droites par la transformée de HoughDétection des droites par la transformée de Hough
Détection des droites par la transformée de HoughKhaled Fayala
 
Le risque de taux et la gestion Actif/Passif
Le risque de taux et la gestion Actif/PassifLe risque de taux et la gestion Actif/Passif
Le risque de taux et la gestion Actif/Passifyouness chougrani
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision ibtissam el hassani
 
296 pages management support cours gestion projet + exercices + outils + arti...
296 pages management support cours gestion projet + exercices + outils + arti...296 pages management support cours gestion projet + exercices + outils + arti...
296 pages management support cours gestion projet + exercices + outils + arti...Olivier Coulibaly
 
La méthode de gestion de projet agile.pdf
La méthode de gestion de projet agile.pdfLa méthode de gestion de projet agile.pdf
La méthode de gestion de projet agile.pdfanwermannai
 

Was ist angesagt? (20)

exercices gestion de stock
exercices gestion de stock exercices gestion de stock
exercices gestion de stock
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels
 
Cartes mind map
Cartes mind mapCartes mind map
Cartes mind map
 
Annales corrigees de marketing et communication 2017 2018.
Annales  corrigees de marketing et communication 2017 2018.Annales  corrigees de marketing et communication 2017 2018.
Annales corrigees de marketing et communication 2017 2018.
 
Développement cognitif de l'enfant J Piaget.pptx
Développement cognitif de l'enfant J Piaget.pptxDéveloppement cognitif de l'enfant J Piaget.pptx
Développement cognitif de l'enfant J Piaget.pptx
 
Transformation Digitale au Maroc
Transformation Digitale au MarocTransformation Digitale au Maroc
Transformation Digitale au Maroc
 
Communication : La communication interpersonnelle
Communication : La communication interpersonnelleCommunication : La communication interpersonnelle
Communication : La communication interpersonnelle
 
Donnees de panel
Donnees de panelDonnees de panel
Donnees de panel
 
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...
Maintenance industrielle à l’ère 4.0 / Déjeuner du GATE 1/3 – Institut techno...
 
La communication et ses enjeux
La communication et ses enjeuxLa communication et ses enjeux
La communication et ses enjeux
 
Stabilité du lait à la chaleur
Stabilité du lait à la chaleurStabilité du lait à la chaleur
Stabilité du lait à la chaleur
 
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...Reconnaissance de panneaux de signalisation routière en utilisant la détectio...
Reconnaissance de panneaux de signalisation routière en utilisant la détectio...
 
Les conflits en entreprises
Les conflits en entreprisesLes conflits en entreprises
Les conflits en entreprises
 
Détection des droites par la transformée de Hough
Détection des droites par la transformée de HoughDétection des droites par la transformée de Hough
Détection des droites par la transformée de Hough
 
iso 9001
 iso 9001 iso 9001
iso 9001
 
Le risque de taux et la gestion Actif/Passif
Le risque de taux et la gestion Actif/PassifLe risque de taux et la gestion Actif/Passif
Le risque de taux et la gestion Actif/Passif
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision
 
296 pages management support cours gestion projet + exercices + outils + arti...
296 pages management support cours gestion projet + exercices + outils + arti...296 pages management support cours gestion projet + exercices + outils + arti...
296 pages management support cours gestion projet + exercices + outils + arti...
 
M11 gestion des risques et incoterms 2000
M11   gestion des risques et incoterms 2000M11   gestion des risques et incoterms 2000
M11 gestion des risques et incoterms 2000
 
La méthode de gestion de projet agile.pdf
La méthode de gestion de projet agile.pdfLa méthode de gestion de projet agile.pdf
La méthode de gestion de projet agile.pdf
 

Andere mochten auch

Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire Mohammed Zaoui
 
2 solver d'excel
2 solver d'excel2 solver d'excel
2 solver d'excelkkatia31
 
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COMRECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COMjamal yasser
 
Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Mohammed TAMALI
 
Planning Chemin de Fer
Planning Chemin de FerPlanning Chemin de Fer
Planning Chemin de Ferfgaboriau
 
Programmation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeProgrammation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeJiijishady
 
Le modèle SCOR- Zineb Somoue
Le modèle SCOR- Zineb SomoueLe modèle SCOR- Zineb Somoue
Le modèle SCOR- Zineb Somouesmzineb
 

Andere mochten auch (11)

Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
 
2 solver d'excel
2 solver d'excel2 solver d'excel
2 solver d'excel
 
Programmation linéaire
Programmation linéaireProgrammation linéaire
Programmation linéaire
 
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COMRECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
RECHERCHE OPERATIONNELLE S5 WWW.COURS-ECONOMIE.COM
 
Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)
 
Scor model
Scor modelScor model
Scor model
 
Planning Chemin de Fer
Planning Chemin de FerPlanning Chemin de Fer
Planning Chemin de Fer
 
Programmation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeProgrammation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexe
 
Cours regression 4
Cours regression 4Cours regression 4
Cours regression 4
 
(Cours régression)
(Cours régression)(Cours régression)
(Cours régression)
 
Le modèle SCOR- Zineb Somoue
Le modèle SCOR- Zineb SomoueLe modèle SCOR- Zineb Somoue
Le modèle SCOR- Zineb Somoue
 

Ähnlich wie Utilisation solveur excel

coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...
coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...
coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...Ablaye2
 
Formation Excel.pdf
Formation Excel.pdfFormation Excel.pdf
Formation Excel.pdfSalah Gharbi
 
Tableur avance EXCEL
Tableur avance EXCELTableur avance EXCEL
Tableur avance EXCELwalid sassi
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.pptBadarSaf
 
1 rappel d'excel
1 rappel d'excel1 rappel d'excel
1 rappel d'excelkkatia31
 
Cours sur excel
Cours sur excelCours sur excel
Cours sur excelPaul Kamga
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdfMiRA452885
 
Support de cours excel
Support de cours excelSupport de cours excel
Support de cours excelhassan1488
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)CodeFormation
 
CHAPITRE VIII : Systèmes linéaires Modélisation & Simulation
CHAPITRE VIII :  Systèmes linéaires Modélisation & SimulationCHAPITRE VIII :  Systèmes linéaires Modélisation & Simulation
CHAPITRE VIII : Systèmes linéaires Modélisation & SimulationMohammed TAMALI
 

Ähnlich wie Utilisation solveur excel (20)

coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...
coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...
coursexcel2016ddes cours en excel bien detailler pour une meilleur comprehens...
 
Formation Excel.pdf
Formation Excel.pdfFormation Excel.pdf
Formation Excel.pdf
 
Tableur avance EXCEL
Tableur avance EXCELTableur avance EXCEL
Tableur avance EXCEL
 
tableur
tableurtableur
tableur
 
tableur-excel
tableur-excel tableur-excel
tableur-excel
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.ppt
 
Excel : Les fonctions mathématiques
Excel : Les fonctions mathématiquesExcel : Les fonctions mathématiques
Excel : Les fonctions mathématiques
 
Formation tableur
Formation tableurFormation tableur
Formation tableur
 
1 rappel d'excel
1 rappel d'excel1 rappel d'excel
1 rappel d'excel
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Cours sur excel
Cours sur excelCours sur excel
Cours sur excel
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdf
 
Support de cours excel
Support de cours excelSupport de cours excel
Support de cours excel
 
Fiches Pratiques O.O Calc
Fiches Pratiques O.O CalcFiches Pratiques O.O Calc
Fiches Pratiques O.O Calc
 
Support de cours_excel
Support de cours_excelSupport de cours_excel
Support de cours_excel
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)
 
CHAPITRE VIII : Systèmes linéaires Modélisation & Simulation
CHAPITRE VIII :  Systèmes linéaires Modélisation & SimulationCHAPITRE VIII :  Systèmes linéaires Modélisation & Simulation
CHAPITRE VIII : Systèmes linéaires Modélisation & Simulation
 
TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 

Utilisation solveur excel

  • 1. Utilisation du solveur dans Excel I. INTRODUCTION Excel inclut un solveur de programmation mathématique conçu par Frontline Systems pour Microsoft. Ce solveur permet de définir et résoudre des problèmes d'optimisation linéaires ou non-linéaires. Les variables peuvent être réelles, entières ou binaires. La fonction-objectif facultative peut être minimisée, maximisée ou atteindre une valeur-cible. Il faut savoir que ce solveur est bridé à 200 variables. Le nombre de contraintes est illimité pour les PL, mais limité à 100 pour les PNL, sauf pour les contraintes simples de bornes sur les variables, comme x ≤ 3. Frontline Systems vend des versions non limitées qui se substituent à la version bridée offerte avec Excel, voir leur site web http://www.frontsys.com. Un historique et des détails sur le fonctionnement interne figurent dans l'article : D. Fylstra, L. Lasdon, J. Watson, A. Waren, Design and use of the Microsoft Excel solver, Interfaces, volume 28, n° 5, pages 29-55, 1998. Le solveur n'est pas toujours présent dans les menus. Vérifiez dans le menu Outils si le choix Solveur est visible. Sinon, il faut l'installer avec le choix Macros complémentaires. Ensuite, un clic sur Outils/Solveur fait apparaître la boîte Paramètres du solveur : Cette boite permet de définir les cellules de la feuille Excel qui correspondent à la fonctionobjectif (Cellule-cible à définir), aux variables (Cellules variables) et aux contraintes (Contraintes). On peut choisir le type d'optimisation : maximiser (Max), minimiser (Min) ou trouver une solution de coût égal à une valeur donnée (Valeur). Il est possible de choisir d'autres paramètres de résolution avec le bouton Options. En cliquant sur Résoudre, les valeurs des variables et de la fonction-objectif apparaissent dans les cellules correspondantes. – Page 1
  • 2. II. PARAMETRES DU SOLVEUR La cellule-cible, unique, doit contenir une formule qui lie, directement ou indirectement, les variables pour définir la fonction-objectif. Elle est facultative : si elle est absente, le solveur cherche une solution vérifiant toutes les contraintes, ce qui permet de résoudre des systèmes d'équations linéaires ou non-linéaires. Les cellules variables sont définies par une liste de cellules ou de plages, séparées par des points-virgules, par exemple B1:B4; C1:C4; E8. Elles ne doivent pas contenir de formules et il est conseillé de les initialiser à zéro. Les contraintes sont du type {cellule | plage} opérateur {constante numérique | cellule | plage | formule}, les accolades avec barres verticales désignant des choix exclusifs. L'opérateur est =, <=, >=, ent ou bin. Rappelons qu'il ne peut pas y avoir d'opérateurs de différence ou d'inégalité stricte en programmation mathématique, à cause des problèmes de précision. Pour une plage de n cellules, une contrainte du type plage opérateur {constante | cellule | formule} équivaut à n contraintes dans lesquelles chaque cellule de la plage est comparée au second membre. Une contrainte peut avoir deux plages de même dimension : elle équivaut à n comparaisons entre les cellules de même rang des deux plages. B4 <= 6 B4:B5 <= C5 B4:B5 = C6:C7 B4 <= 3*SIN(C4)+2 B4 inférieure ou égale à 6 B4 et B5 inférieures à C5 B4 inférieure ou égale à C6 et B5 inférieure ou égale à C7 B4 inférieure ou égale à 3.sin (C4) + 2 L'opérateur bin permet de spécifier qu'une cellule ou une plage doivent être binaires. L'opérateur ent sert à définir des cellules ou plages entières. Les cellules concernées doivent évidemment être des variables. Pour ces deux opérateurs, le solveur met par défaut binaire et entier dans les seconds membres. Pour ent, on peut cependant préciser une valeur maximale. B4 bin binaire B4:B5 ent entier B4:B5 ent 6 B4 est binaire (le mot binaire est ajouté par défaut) B4 et B5 sont entières (le mot entier est ajouté par défaut) B4 et B5 sont entières et inférieures ou égales à 6. En cliquant sur le bouton Options du solveur, on peut spécifier que les variables sont positives ou nulles par défaut et dans ce cas on n'a pas besoin de taper les contraintes de positivité. Une variable peut aussi intervenir dans plusieurs contraintes : B4 ent 6 B4 >= 2 B4 est un entier inférieur ou égal à 6 et supérieur ou égal à 2 On voit que le solveur n'autorise des formules que dans le second membre des contraintes. Les formules pour les premiers membres des contraintes et la fonction-objectif doivent être définies dans des cellules Excel et lier des variables entre elles. Le solveur se contente donc d'appeler Excel quand il veut récupérer les valeurs de ces formules. Une conséquence est qu'il ne peut pas savoir si un modèle est linéaire. On doit le lui dire dans les options, en cochant la case Supposé linéaire. Sinon, le solveur utilisera par défaut un algorithme très lourd pour le cas non-linéaire! – Page 2
  • 3. La possibilité d'utiliser des plages dans les contraintes est très puissante : elle permet de créer des blocs de contraintes similaires au lieu d'entrer une contrainte séparée pour chaque cellule des plages. Mais pour cela, il faut se plier à la logique de présentation d'Excel (feuilles rectangulaires de cellules), ce qui est souvent contraignant. Il faut donc toujours bien réfléchir à la disposition de votre PL (objectif, contraintes, variables, formules), en regroupant si possible les composants en plages, pour faciliter la définition du modèle avec le solveur et avoir une présentation plus lisible et agréable! La démarche de conception et les principales fonctions du solveur vont être illustrées sur un problème de production de ciments. En cas de difficultés, consultez l'aide générale d'Excel, mot-clé Solveur, et les aides disponibles dans la boite Solveur et son sous-menu Options. Le rôle des différents paramètres du sous-menu Options est expliqué en section VII. Un classeur SOLVSAMP.XLS fourni avec Excel contient d'autres exemples utiles de modèles. III. PRODUCTION DE CIMENTS – VERSION SIMPLE Une usine produit 2 ciments rapportant 50$ et 70$/t. Pour 1 t de ciment 1, il faut 40 mn de four et 20 mn de broyage. Pour 1 t de ciment 2, 30 mn et 30 mn. Four et broyeur sont disponibles 6h et 8h par jour. Quelles quantités faire chaque jour pour maximiser le bénéfice ? Ce problème peut se modéliser avec un PL avec deux variables continues : Max 50.x1 + 70.x2 40.x1 + 30.x2 ≤ 360 20.x1 + 30.x2 ≤ 480 x1, x2 ≥ 0 → maximisation du profit → disponibilité du four → disponibilité du broyeur → quantités non négatives ! Créer une feuille Excel et définir les cellules suivantes, en affichant les formules avec CTRL + accent grave ou CTRL + # selon les PC. On a choisi B3 et B4 pour les variables, B5 pour le profit, B6 et B7 pour les contraintes. Prendre l'habitude d'initialiser les variables à 0. Définir le PL avec le menu Outils/Solveur, en remplissant la boîte comme suit. Aller dans le champ Cellule cible et taper B5 ou mieux, pour éviter les erreurs de cellules, cliquer sur la cellule B5 de la feuille de calcul : le nom de cellule est copié automatiquement dans le champ. Vérifier que le sens d'optimisation est bien Max. Allez sur Cellules variables et tapez la liste B3;B4 ou la plage B3:B4, ou encore sélectionnez ces deux cellules dans la feuille de calcul. Enfin, définir les contraintes, en cliquant sur Ajouter pour chaque contrainte. – Page 3
  • 4. Cliquer sur Résoudre : le solveur résout le PL. On peut ensuite garder les résultats dans la feuille ou remettre à zéro. Si on garde les résultats, il faudra remettre les variables à 0 à la main pour refaire une résolution. Sauvez votre travail : le modèle est enregistré avec la feuille. IV. PRODUCTION DE CIMENTS – VERSION GENERIQUE La formulation précédente est criticable à cause d'une mauvaise séparation modèle-données : Les coefficients des contraintes et de l'objectif sont dans des formules de la feuille. Les valeurs des seconds membres sont dans le modèle défini par la commande Solveur. Il faut ajouter une contrainte dans le modèle pour chaque nouvelle ressource. Il faudra donc modifier des formules ou le modèle si des valeurs numériques changent dans les données ou si on ajoute des ciments ou des ressources. Nous allons voir une formulation dite générique, qui sépare au maximum les données du modèle. Plus facile à modifier, elle est basée sur les caractéristiques suivantes d'Excel et du solveur : Excel et le solveur permettent de définir des plages de cellules, comme B3:B4, B3:C4. La fonction Excel SOMMEPROD permet de faire des produits scalaires de 2 plages. Excel permet de copier des formules contenant des références relatives et absolues Le solveur peut comparer une plage à une constante ou 2 plages de même taille. – Page 4
  • 5. Préparer la feuille suivante. Entrez les données : coûts, consommations de ressources par ciment et disponibilités des ressources. Mettre les variables B5 et C5 à 0. Pour le profit total E4, taper la formule = SOMMEPROD (B4:C4; B5:C5). Pour l'utilisation du four E8, taper =SOMMEPROD (B8:C8; $B$5:$C$5). Avec la poignée de recopie, copier la formule dans E9 où elle devient = SOMMEPROD (B9:C9;$B$5:$C$5). Si on n'avait pas mis une référence absolue (indiquée par des dollars) pour la plage des coûts B5:C5, les 5 auraient été changés en 6! Avec cette présentation bien conçue, la définition du modèle est très facile : les variables forment une plage, et les deux contraintes d'utilisation de ressources sont définies avec une seule comparaison entre deux plages. Cliquer sur Options et cocher Modèle supposé linéaire : le solveur va utiliser l'algorithme du simplexe, sinon il utilise un algorithme général de programmation non linéaire, beaucoup plus lent. Cliquer aussi sur Supposé non-négatif : ainsi, on peut omettre les contraintes de positivité des variables comme dans le premier modèle. Sinon, on pourrait les définir avec une seule plage : B5:C5 >= 0. Enfin, cliquer sur Résoudre, on obtient les résultats page suivante. On obtient évidemment les mêmes résultats qu'avec le premier modèle mais leur présentation dans la feuille Excel est plus lisible. De plus, on peut changer les données sans toucher aux formules et au modèle. – Page 5
  • 6. Il est aussi possible de donner des noms plus parlants aux cellules. Par exemple, sélectionner E4, taper ProfitTotal au lieu de E4 dans la case Nom du menu principale (à gauche de la case la formule) puis appuyez sur Entrée : ceci renomme la cellule. De même, sélectionnez les plages B5:C5, E8:E9 et G8:G9 pour les renommer en Productions, Utilisations et Limites. Ouvrir la boîte solveur : la cellule cible est devenue ProfitTotal, la plage de variable est devenue Productions, et la contrainte s'écrit Utilisations <= Limites. On peut aussi taper ces noms dans le solveur, s'ils ont été définis au préalable. Hélas, il semble y avoir un bug dans la transmission des noms de cellules au solveur : très souvent, ce dernier remet dans le modèle les plages spécifiées pour les variables, même si des noms plus parlants leur ont été donnés. V. EXEMPLE D'EXTENSION DU MODELE Par exemple, ajoutons un ciment 3 de profit 80, nécessitant 50 minutes de four et 25 de broyage, plus une ensacheuse disponible 5 h/j. Les 3 ciments consomment respectivement 55, 35 et 40 minutes d'ensacheuse par tonne. Les modifications sont assez simples : Insérer une colonne devant la colonne D pour le nouveau ciment. Ajouter une ligne à la fin pour l'ensacheuse. Etendre le SOMMEPROD du profit total (maintenant dans F4) pour inclure le ciment 3. Faire pareil pour le SOMMEPROD de l'utilisation de la 1ère ressource. Avec la poignée de recopie, copier cette formule dans les autres utilisations. Dans le solveur, augmenter la plage de variables pour inclure le ciment 3 (variable D5). Sélectionner la plage de contraintes, cliquer sur modifier et l'étendre au ciment 3. – Page 6
  • 7. On pourrait évidemment limiter les nombres à 2 décimales en changeant leur type de cellule par défaut (Standard) en type Nombre. Attention : si vous avez défini des noms comme Productions pour la plage B5:C5, il faut les redéfinir avec le menu Insertion/Nom/Définir. La boîte de dialogue qui s'affiche liste les noms définis dans la feuille Excel. En cliquant sur un nom, on peut le supprimer ou modifier la plage de cellules qu'il désigne. Ces modifications seraient les mêmes si le PL avait 100 ciments et 50 ressources! Les modifications seraient considérables avec le premier modèle, avec un risque énorme d'erreur. VI. TYPES DE PROGRAMMES MATHEMATIQUES Un programme mathématique est un problème d'optimisation d'une fonction de plusieurs variables (fonction-objectif), en présence de contraintes. Pour bien utiliser le solveur et ses paramètres, il faut savoir qu'il existe les trois grands types de programmes définis ci-dessous. Programmes linéaires continus (PL) Les variables sont des réels, la fonction-objectif et leurs contraintes sont toutes linéaires. Dans ce cas, les contraintes définissent un polyèdre dont un des sommets correspond à la solution optimale. Le solveur d'Excel peut résoudre de grands PL (avec des centaines de variables) grâce à l'algorithme du simplexe, qui se contente de construire une suite de sommets du polyèdre menant à l'optimum, sans jamais entrer à l'intérieur. Programmes linéaires en nombres entiers (PLNE) Ce sont des programmes linéaires à variables entières. Les PL en 0-1 sont des cas particuliers de PLNE avec des variables binaires : il s'agit en général de variables de décision. En général, les PLNE sont très difficiles à résoudre, car l'optimum entier est souvent à l'intérieur du polyèdre défini par les contraintes du PL relaxé (PLNE sans les contraintes d'intégrité des variables) : l'algorithme du simplexe n'est plsu valable. Les variables entières doivent être définies par des contraintes d'intégrité dans le solveur. Cliquer sur Ajouter une contrainte, sélectionnez la variable ou la plage de variables entières et sélectionnez Ent ou Bin dans le type de comparaison (là où on utilise =, <= ou >= d'habitude). Le solveur utilise une méthode arborescente (branch-and-bound) basée sur l'algorithme du simplexe. Ce dernier est appliqué au PL relaxé, c'est-à-dire sans contraintes d'intégrité. Si l'optimum obtenu est entier, on a trouvé l'optimum du PLNE, fin. Sinon, on a en général une majorité de variables à valeurs entières et une minorité de variables fractionnaires. Le solveur choisit une des variables fractionnaires et construit deux sous-problèmes. Par exemple, si une variable xj qui doit être entière vaut actuellement 2.3, le solveur construit un sous-problème en ajoutant la contrainte xj ≤ 2 et un autre en ajoutant la contrainte xj ≥ 3. Dans le cas d'une variable binaire, la séparation est encore plus simple : le solveur force xj à 0 ou bien à 1. Les séparations successives en sous-problèmes construisent une arborescence qui peut contenir un nombre énorme de nœuds. En plus, le solveur applique l'algorithme du simplexe en chaque nœud (sous-problème). Bien que des tests permettent d'éliminer une bonne fraction des nœuds, il faut s'attendre à des temps de résolution importants avec les grands PLNE, à partir de quelques dizaines de variables entières ou une centaine de variables binaires. – Page 7
  • 8. En général, un PL en 0-1 est plus facile à résoudre qu'un PLNE avec le même nombre de variables. Si seulement certaines variables sont entières, on a un PL mixte comme le problème de localisation d'entrepôts. A nombre de variables égal, un PL mixte est plus facile qu'un PLNE ou PL en 0-1. Il existe cependant quelques cas de PLNE faciles : les problèmes de flots et le problème d'affectation. La raison est mathématique : les sommets des polyèdres de ces problèmes ont toujours des coordonnées entières et l'algorithme du simplexe va donc trouver un optimum entier. On peut s'en persuader en résolvant un problème d'affectation sans préciser que les xij sont binaires : le solveur trouve bien un optimum avec des variables à 0 ou 1. Si on a précisé que les variables doivent être binaires, ce n'est pas grave : le solveur lance sa méthode arborescente, mais comme elle débute par une application du simplexe au PL relaxé, l'optimum entier va être trouvé aussitôt, à la racine, sans développement d'une arborescence. Programmes non-linéaires (PNL) Au moins une des contraintes ou l'objectif sont non-linéaires. Ces problèmes sont très difficiles car les expressions peuvent contenir n'importe quoi : des sinus, des logarithmes etc. Le domaine des solutions réalisable peut avoir une structure complexe et contenir de nombreux optima locaux, à l'intérieur ou sur la frontière. Contrairement au cas linéaire, il n'existe aucune condition générale pour dire si un optimum local est un optimum global. Les solveurs commerciaux donnent au mieux, quand ils convergent, un optimum local. L'optimalité locale peut être détectée grâce à des conditions comme celles de Kuhn-Tucker. Les PNL avec des fonctions non partout différentiables (valeurs absolues par exemple) sont ingérables. Le minimum pour espérer résoudre est que les expressions des contraintes et de l'objectif soient des fonctions continues et différentiables. Les PNL les moins difficiles sont ceux majoritairement linéaires, par exemple avec seulement une contrainte ou bien un objectif non-linéaire. Les PNL convexes (contraintes convexes formant donc un domaine convexe + minimisation d'une fonction convexe ou maximisation d'une fonction concave) ont une propriété intéressante : tout optimum local est également global. Par exemple, on peut avoir un PL dans lequel on remplace l'objectif linéaire (bénéfice à maximiser) par un bénéfice non-linéaire à cause d’un tarif dégressif selon la quantité, par exemple une fonction racine carrée. Dans ce cas, les contraintes linéaires définissent un polyèdre, qui est un ensemble convexe, et on doit maximiser une fonction concave : le problème est moins difficile. Dans le cas général, on peut avoir des difficultés de résolution avec seulement une dizaine de variables, si les contraintes et l'objectif sont tous non-linéaires et varient rapidement. Le plus souvent, on a soit une convergence très lente, soit une convergence rapide mais sur un mauvais optimum local ou sur un point qui n'est même pas un optimum local. Les PNL peuvent être si difficiles à résoudre numériquement qu'on a toujours intérêt à les convertir en PL (linéarisation), quand c'est possible. Par exemple, on trouve dans la littérature des techniques pour remplacer une fonction non-linéaire par une fonction affine par morceaux. Cette technique nécessite une nouvelle variable par morceau. Bien que le PL résultant ait plus de variables que le PNL initial, il est en général bien plus facile à résoudre. – Page 8
  • 9. Le solveur utilise un algorithme qui calcule une suite de points convergeant vers un point vérifiant les conditions de Kuhn et Tucker (quand il y arrive). Le point initial est à l'intérieur du domaine défini par les contraintes. En chaque point, une direction de déplacement basée sur le gradient de la fonction-objectif est calculé. La longueur du déplacement est calculée de façon à ne pas sortir du domaine. Les calculs sont en général très lourds à cause des expressions non-linéaires et des déplacements qui peuvent être nombreux et très petits. VII. ROLE DES OPTIONS DU SOLVEUR Dans 90% des cas, les modèles en systèmes industriels sont des PL ou PLNE. Les seuls options utiles dans ce cas sont alors les suivantes. Modèle supposé linéaire. Cochez cette case si vous êtes certain que votre modèle est linéaire car le solveur n'a pas directement accès aux formules d'Excel et ne peut pas détecter par luimême la linéarité. Si la case est cochée, le solveur lance l'algorithme du simplexe (variables continues) ou la méthode arborescente (si PLNE). Supposé non-négatif. Tous les solveurs commerciaux (CPLEX, XPRESS, LINGO) supposent par défaut que les variables sont positives ou nulles. Cette convention est bien pratique car on n'a pas besoin de définir les contraintes correspondantes. C'est en général le cas dans les problèmes industriels (quantités à produire etc.). On a donc intérêt à cocher cette case. Sinon, dans un problème de minimisation de coût d'extraction de minerais, le solveur pourrait mettre les quantités produites à moins l'infini : on remettrait le minerai au fonds des puits. Itérations. Il s'agit du nombre d'itérations du simplexe (PL) ou de nœuds construits dans l'arborescence (PLNE). La valeur par défaut est trop faible pour les grands problèmes : il vaut mieux mettre 1000 à condition d'avoir une protection en limitant le temps de calcul. Si vous conservez une valeur trop faible, vous le saurez quand la fonction "Résoudre" dira qu'elle n'a pas réussi à trouver un point optimal. Temps max. Il est prudent de conserver la valeur par défaut (100 secondes) pour éviter des durées trop importantes. En effet, il est impossible de stopper le solveur en cours de calcul sans planter Excel dans le gestionnaire des tâches accessible dans CTRL+ALT+DEL. Augmenter cette valeur seulement si elle s'avère insuffisante. Mise à l'échelle automatique (scaling). Le simplexe peut avoir des problèmes numériques en présence d'un mélange de très petits et de très grands nombres. Ceci peut souvent être évité en rédigeant le modèle : ne pas mélanger des coûts en MEuros et en centimes par exemple. Sinon, en cochant la case, le solveur fait des changements de variables et de repère, uniquement pendant la résolution, pour corriger ces disparités. Précision et Tolérance. Il est déconseillé de modifier ces valeurs qui permettent au solveur de savoir s'il respecte bien une contrainte d'égalité (précision) ou si une valeur de variable peut être considérée comme entière (tolérance). A cause des nombreux calculs avec la précision limitée de la machine, les calculs ne sont jamais parfaitement exacts. Ceci peut s'observer en affichant un grand nombre de décimales dans un PLNE ou PL en 0-1 : les variables 0-1 au moment de l'arrêt peuvent valoir 0.0001 ou 0.9999 par exemple. Dans de tels cas, il faut bien entendu considérer ces valeurs comme des 0 ou des 1 dans l'interprétation des résultats. – Page 9
  • 10. Afficher le résultat des itérations. Peut parfois être utile pour faire un exercice, en montrant les itérations successives du simplexe, ou pour voir si l'algorithme converge ou diverge en cas de difficultés numériques. Les autres paramètres ne servent que pour les PNL : Convergence. Par défaut 0.0001. L'algorithme pour les PNL stoppe quand la variation (en valeur absolue) de la fonction-objectif sur les 2 derniers points calculés devient inférieure ou égale à cette valeur. La valeur conditionne donc la précision du résultat : ne pas modifier, sauf si l'objectif prend des valeurs très élevées ou au contraire très petites. Estimation. Mettre quadratique pour les PNL difficiles : estimation des gradients et contraintes par des approximations du second ordre, plus précises. Dérivées. Mettre central pour les PNL difficiles (estimation de dérivée à droite et à gauche). Recherche. Mettre Newton sauf si le PC a une petite mémoire : convergence plus rapide. VIII. FONCTIONS EXCEL UTILES Excel offre plusieurs fonctions très utiles, dont certaines sont peu connues, qui facilitent les opérations sur des plages de cellules et donc la définition des programmes linéaires. Dans ce qui suit, plage désigne une plage de cellules à une dimension comme A1:A5 (un vecteur) ou à deux dimensions comme A1:E5 (une matrice). VIII.1 Fonctions non-matricielles SOMME (plage) : calcule la somme des nombres d'une plage donnée. SOMME.SI (plage1; critère; plage2) : calcule la somme des nombres de plage2 si la cellule de même rang dans plage1 vérifie le critère. Si plage2 est omise, les nombres de plage1 vérifiant le critère sont cumulés. Exemple : SOMME.SI (A1:A3; ">0") fait la somme des éléments strictement positifs de la plage. SOMME.SI (A1:A3; C1; B1:B3) fait la somme des éléments de B1:B3 tels que les éléments de même rang dans A1:A3 soient égaux à C1. SOMMEPROD (plage1; plage2; …; plagen) : calcule la somme des produits entre éléments de même rang dans les plages données. Pour deux plages à une dimension, cette fonction équivaut à un produit scalaire. VIII.2 Opérations matricielles Excel offre aussi des opérations dites matricielles. Ce nom est assez mal choisi, il s'agit en fait de fonctions qui renvoient un tableau de résultats. Les formules avec ces opérations sont refusées si elles ne sont pas entre accolades. Exemple : la formule A1:A5+B1:B5 est refusée, il faut taper {=A1:A5+B1:B5} pour qu'Excel comprenne qu'on veut la somme terme à terme des deux vecteurs. On peut aussi taper la formule sans accolades et finir avec CTRL+MAJ+ENTREE au lieu de ENTREE : Excel ajoute automatiquement les accolades. – Page 10
  • 11. Voici 2 exemples générant des tableaux temporaires mais renvoyant à la fin un seul nombre : {=SOMME (A1:A5*B1:B5)} : équivalent à SOMMEPROD (A1:A5; B1:B5). {=SOMME (A1:A5^2)} : calcule la somme des carrés de la plage A1:A5. Une formule matricielle peut renvoyer une plage. Par exemple, si on veut dans B1:B3 les éléments de la plage A1:A3 multipliés par 3, il faut sélectionner à la souris la plage souhaitée pour le résultat (B1:B3), taper =3*A1:A3 puis CTRL+MAJ+ENTREE. Si on déplace le curseur sur les cellules B1 à B3, Excel indique la même formule matricielle {=3*A1:A3}. Pour retrouver toutes les cellules d'une même formule matricielle, il faut cliquer dans une des cellules contenant la formule, puis utiliser le menu Edition/Atteindre/Cellules et choisir Matrice en cours : Excel sélectionne alors toute la plage concernée, ce qui permet de modifier ou d'effacer la formule matricielle. Quelques fonctions matricielles utiles : PRODUITMAT (plage1; plage2) : calcule le produit matriciel des deux plages, qui doivent être de dimensions compatibles. TRANSPOSE (plage) : transpose la matrice donnée. Par exemple, pour faire un produit de matrices entre un vecteur-colonne de 5 éléments, A1:A5 et une matrice 5x5 C1:G5, il faut transposer : PRODUITMAT (TRANSPOSE (A1:A5); C1:G5). INDEX (plage; n° ligne; n° colonne) : renvoie l'élément situé à l'intersection de la ligne et de la colonne données, ce qui permet de faire des indiçages comme en C, Delphi ou Visual Basic. Si la plage a une seule ligne (colonne), l'indice ligne (colonne) est facultatif. Si l'indiceligne (colonne) est égal à zéro, la fonction renvoie la colonne (ligne) complète spécifiée par l'autre indice, mais il faut une formule matricielle. Exemple : INDEX (A1:A8; 3) renvoie le contenu de la troisième cellule de la plage A1:A8, c’est-à-dire A3. – Page 11