Conseils et dépannage du solveur
Limitations des problèmes non linéaires
Les problèmes non linéaires sont beaucoup plus
difficiles à résoudre que les problèmes
linéaires, et il y a moins de garantie que le solveur (quelle
que soit la méthode employée) fournisse un
résultat correct. La méthode utilisée est celle
du GRG chaque fois que la case Modèle supposé
linéaire n'est pas cochée dans le menu option. (Sinon,
c'est la mèthode du Simplex qui est utilisée.)
Attention au fait que lorsque la case Modèle supposé
linéaire n'est pas cochée, le solveur utilise par
défaut la mèthode GRG, même si le modèle
était en fait linéaire. Le GRG arrive en
général à résoudre les problèmes
linéaires, mais plus lentement et de façon moins fiable
que le Simplex, surtout si le problème est mal
dimensionné.
Un conseil que l'on peut généralement donner est de
lancer la résolution plusieurs fois avec des valeurs initiales
différentes pour les variables de décision. La
méthode suit en effet un chemin (défini par la courbure
et la pente de la fonction à optimiser) à partir du
point initial vers le sommet ou la vallée la plus proche du
point de départ. A cause de la présence
éventuelle de points "col" ou de points "selle", vous
augmentez vos chances de trouver un optimum global en choisissant
plusieurs jeux de valeurs initiales.
Problèmes avec des fonctions discontinues
Une fonction non continue ne répond pas aux conditions
requises par le solveur linéaire, ou même par le solveur
non linéaire. Un solveur non linéaire repose sur les
dérivées partielles pour atteindre la solution
optimale, et comme il ne lui est pas possible de calculer la
dérivée d'une fonction discontinue, il est impossible
de garantir que la solution trouvée soit vraiment optimale. En
pratique, le solveur GRG d'Excel pourra parfois se débrouiller
avec des fonctions discontinues, mais de façon
générale, le solveur ne peut pas manipuler des
modèles dans lesquels la fonction à optimiser ou
certaines contraintes sont discontinues.
Si vous essayez de résoudre un problème comprenant
des fonctions discontinues en ayant coché la case
Modèle supposé linéaire, il est possible,
quoiqu'improbable que le test de linéarité ne
détecte pas la discontinuité et essaye quand même
de résoudre le problème. (Cela signifie surement que
votre fonction était linéaire à l'échelle
du problème, mais il n'y a aucune garantie que la solution
obtenue soit effectivement optimale.)
Vous pouvez utiliser des fonctions discontinues comme IF et INDEX
lors de calculs indépendants des variables de décisions
et qui sont donc des constantes du problème. Mais toute
fonction discontinue posera vraisemblablement des problèmes au
solveur. Certains utilisateurs oublient que des fonctions comme ABS
et ROUND ne sont pas dérivables en certains points.
Problème de dimensionnement
Un problème est mal dimensionné quand les valeurs
typiques des variables à optimiser et celles des contraintes
sont très différentes. Un exemple classique est fourni
par les modèles financiers dans lesquels les variables sont en
millions de dollars, et certains taux en pourcent. Les modèles
mal dimensionnés posent souvent des difficultés aux
algorithmes, à la fois pour les modèles
linéaires et non linéaires, et souvent davantage avec
l'algorithme GRG.
Le solveur devra effectuer de nombreuses opérations
à partir de valeurs des variables et les contraintes devront
être multipliées et soustraites entre elles. De part la
précision finie des calculs en machine, lorsque ces calculs se
font avec des valeurs de dimension très différentes,
les erreurs d'arrondis finissent par avoir raison du solveur, et la
fiabilité des résulats obtenus devient très
faible.
Quand la case Echelle automatique est cochée dans le
menu Option du solveur, le solveur va essayer de ramener les
variables à optimiser et les contraintes à des
échelles comparables afin de limiter les effets du mauvais
dimensionnement. Dans le solveur d'Excel, cette option est toujours
active lors de la résolution de problèmes non
linéaires avec l'algorithme GRG.
Parce que le solveur d'Excel ne ré-échelonne pas
automatiquement les variables et les contraintes, un modèle
linéaire mais mal dimensionné pourra introduire
suffisamment d'erreurs d'arrondis pour rendre le modèle
insoluble, provoquant le message d'erreur "Les conditions pour un
modèle linéaire ne sont pas satisfaites". La solution
est alors de ré-échelonner le problème de
façon à réduire la différence de valeur
entre les variables et les contraintes, ou entre les valeurs à
de la fonction à optimiser et les variables. Pour obtenir une
première approximation, vous pouvez aussi relâcher la
valeur de la précision, comme indiqué dans
Précision et tolérance.
La commande "solveur"
La commande Solveur ne fait pas parti du menu
Outils :
Dans le menu Outils , choisissez la commande Macro
complémentaire et cochez ensuite la case
Solveur.

Puis cliquez alors sur OK.
La case Solveur ne fait pas parti du menu Macro
complémentaire:
Cliquez sur Parcourir et allez dans le répertoire
/Macrolib puis /Solveur.
Ouvrez le fichier Solver.xla.

Le sous-répertoire Solveur ne fait pas parti du
répertoire Macrolib :
- Faites une recherche du fichier Solver.xla à
l'aide de la boîte de dialogue Rechercher du menu
Démarrer en bas à gauche de la fenêtre
Windows.
- En cas de recherche infructueuse , cela signifie que le
solveur n'a pas été installé lors de
l'installation de Microsoft Excel.
Il faut alors réinstaller habilement Excel. Pour cela ,
allez dans Ajout /Suppression de programmes du panneau
de configuration et choisissez Microsoft Excel ou
Office suivant l'origine du programme et cliquez sur
Ajouter/Supprimer.
Après avoir inséré le CD ou les
disquettes du programme et répondu à plusieurs
questions , cochez Solveur dans le menu d'installation.
Les messages de fin
d'exécution du solveur
- Le solveur a trouvé une solution.
Toutes les contraintes et conditions d'optimalité sont
satisfaites.
cela signifie que le solveur a trouvé une
solution localement optimale : il n'y a pas d'autres valeurs
proches de celles fournies qui conduisent à un meilleur
résultat pour la fonction à optimiser.
Mathématiquement, cela signifie que les conditions de
Karush-Kuhn-Tucker (KKT) sont satisfaites (dans la limite
donnée par l'option Précision du menu Option).
Afin de s'assurer d'une plus grande validité de la solution
trouvée par le solveur, il est recommandé de lancer
l'algorithme plusieurs fois avec des valeurs initiales
différentes, afin de minimiser le risque de faire converger
l'algorithme vers un point selle ou un point col.
- Le solveur a convergé vers la solution
en cours. Toutes les contraintes sont satisfaites.
La modification relative de la cellule cible est
inférieure au paramètre Précision
spécifié dans la boîte de dialogue
Options du solveur pour les cinq
dernières solutions intermédiaires. Si vous
augmentez la présision (id est : diminuez le chiffre du
paramètre Précision ) , le solveur peut
essayer de trouver une meilleure solution , mais la durée
de résolution sera aussi plus longue.
- Vous avez choisi d'arrêter alors que le
temps maximal était atteint.
Le temps maximal imparti s'est écoulé
sans qu'une solution satisfaisante ait été
trouvée. Pour enregistrer les valeurs déjà
trouvées ainsi que gagner du temps lors des recalculs
ultérieurs , cliquez sur Garder la solution du
solveur ou sur Enregistrer le scénario.
- Vous avez choisi d'annuler alors que le nombre
maximale d'itérations était atteint.
Le nombre maximal d'itérations a
été atteint sans qu'aucune solution satisfaisante
ait été trouvée. L'augmentation du nombre
d'itérationd autorisées peut s'avérer utile ,
mais vous devez examiner les valeurs finales pour comprendre le
problème. Pour enregistrer les valeurs déjà
trouvées et gagner du temps lors des recalculs
ultérieurs , cliquez sur Garder la solution du
solveur ou sur Enregistrer le scénario.
- Les valeurs de la cellule cible à
définir ne converge pas .
La valeur de la cellule cible oscille sans limite ,
bien que toutes les contraintes soient satifaites. Il se peut que
vous ayez omis une ou plusieurs contraintes dans la
définition du problème. Vérifiez les valeurs
de la feuille de calcul courante pour savoir dans quelle mesure la
solution diverge , vérifiez les contraintes , puis executez
de nouveau le problème.
- Le solveur ne peut pas trouver de solution
réalisable.
Le solveur n'a pas trouvé de solution
intermédiaire satisfaisant toutes les contraintes avec le
paramètre de précision indiqué. Les
contraintes manquent vraisemblablement de cohérence.
Examinez la feuille de calcul pour identifier une
éventuelle erreur dans les formules de contrainte ou dans
le choix des contraintes.
Si vous avez coché la case "Modéle supposé
linéaire" du menu option, et que le modèle est bien
conditionné, la méthode du Simplex vous assure de
façon certaine que le modèle n'est pas faisable. Si
vous n'utilisez pas le "Modéle supposé
linéaire", l'algorithme du GRG peut retourner un tel
message si la région où les contraintes sont
satisfaites est éloignée de vos valeurs initiales.
Essayez alors d'autres valeurs initiales que vous estimez
peut-être plus proche de la solution...
De façon générale, ce message provient
souvent de contraintes conflictuelles, c'est-à-dire qui ne
peuvent pas être satisfaites en même temps. La plupart
du temps, cela est dû à une erreur sur le sens d'une
inégalité (i.e. <= au lieu de >=) qui serait
valable autrement.
- Solveur arrêté à la
demande de l'utilisateur.
Vous avez cliqué dans la boîte de dialogue
Affichage d'une solution intermédiaire sur le bouton
Arrêter , soit après avoir interrompu le
processus de résolution , soit après avoir
affiché chaque solution intermédiaire.
- Les conditions du modèle supposé
linéaire ne sont pas satisfaites.
Vous avez activé la case à cocher
Modèle supposé linéaire, mais le
calcul final du solveur donne des valeurs qui ne correspondent pas
au modèle linéaire. La solution n'est pas valide
pour les formules réelles de la feuille de calcul. Pour
vérifier que le problème est non linéaire ,
activez la case à cocher Echelle automatique , puis
exécuter de nouveau le problème . Si ce message
s'affiche à nouveau , désactivez la case
Modèle supposé linéaire , puis
exécutez de nouveau le problème.
- Le solveur a rencontré une valeur
d'erreur dans la cellule cible à définir ou dans une
contrainte.
Une ou plusieurs formules ont renvoyé une valeur
d'erreur lors du dernier calcul. Recherchez la cellule cible ou de
contrainte qui contient l'erreur ( Ex: il manque une
paranthèse fermante) et modifiez sa formule pour qu'elle
renvoie une valeur numérique appropriée.
- Il n'y a pas assez d'espace mémoire
disponible pour résoudre le problème.
Excel n'a pu allouer la mémoire
nécessaire au solveur . Fermez certains fichiers ou
programmes et choisissez l'option gradiens conjugués
qui utilise moins de mémoire puis essayez de nouveau.
- Une autre instance Excel utilise
Solver.dll.
Plusieurs sessions d'Excel sont en cours , dont une
utilise Solver.dll . Or ce fichier ne peut être
utilisé que dans une session à la fois.