Non respect des contraintes sur solveur excel

Résolu/Fermé
timal457 Messages postés 1 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 21 juin 2011 - 21 juin 2011 à 11:39
 timal457 - 28 juin 2011 à 11:18
Bonjour,

Je fais une recherche pour minimiser les actions sur des outils qui doivent être avec une bonne coordination.
J'expose le problème de facon mathématique:
J'ai un tableau (matrice) de valeurs (négatives ou positives). Je vais chercher les valeurs qui m'intéresse et je multiplie chacunes d'elles par une constante.en gros je fais une multiplication matricielle (AX=B) avec:

A: ma matrice de valeur
X: mes constantes
B: le résultat de la multiplication

X est ce que je cherche et seront les paramètres à faire varier dans mon solveur.

Mes contraintes sont les suivantes:
-contraintes de bornes inférieures et supérieures pour mes variables
-mes variables doivent être des nombres entiers (négatif ou positif)
-Le résultat des multiplications pour doit être supérieur à une valeur calculée précédemment.

Je cherche donc à minimiser mes paramètres. je calcule donc la somme de mes paramètres que je mets dans une cellule et cette cellule sera la valeur cible de mon solveur. Je coche la case min pour minimiser mon résultat.

Le problème c'est que quand je lance mon solveur d'une part mes paramètres ne sont pas des nombres entiers et je remarque que je peux encore minimiser le résultat.

Je n'arrive pas à comprendre pourquoi les contraintes ne sont pas respectées donc si certains d'entre vous connaisse une solution sans passer par le visual basic je suis prenneur.

Si vous avez besoin de précision surtout n'hésitez pas.




A voir également:

7 réponses

Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
21 juin 2011 à 18:20
Bonjour,
Au passage, se sera plus compréhensible de mettre votre fichier exemple sur https://www.cjoint.com/ et poster le lien.
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
22 juin 2011 à 14:46
Bonjour,
Merci pour le fichier.
Eh bien, je ne trouve pas de scénario défini dans la feuille [Matrice de sensibilité] ou sous forme de procédure VBA., donc impossible de proposer une explication/solution.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
22 juin 2011 à 17:33
Bonjour,

Purée ça c'est un tableau...
30s pour la 1ère ouverture avec les 8 coeurs à fond ! :-)

Dans ton solveur tu as choisi 'GRC non linéaire'.
A coté tu as 'Options', dans l'onglet 'toutes les méthodes' tu as 'ignorer les contraintes de nombre entier' de coché...
Ceci explique sans doute cela.

eric
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
22 juin 2011 à 21:42
Bonjour eriiic,
Pouvez-vous éclairer ma lanterne car je n'ai rien trouvé ...?
Merci.
Salutations.
Le Pingou
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 22/06/2011 à 22:33
Bonsoir le pingou,

Dans le ruban Données, à droite il y a un bloc Analyse avec l'icone Solveur.
Cliquer dessus pour voir les parametres choisis.

Je ne me sers pas souvent de 2010 et je t'avoue que je ne me rappelle pas s'il y était d'origine ou si je l'ai ajouté....
Par contre je ne vois plus ici le fichier de timal, bizarre.
Timal aussi a disparu d'ailleurs, je vais me dire merci tout seul encore une fois...

A+
eric
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
22 juin 2011 à 23:01
Bonjour eriiic,
Merci pour la réponse.
La trottinette c'est moi, j'ai une nouvelle machine et de plus le MSO 2010 et bien sûr je n'avais par activer le complément solveur.
Amicales salutations.
Le Pingou
0
désolé pour la disparition mais je n'avais plus internet. Je viens de le récupérer.
Le fichier était un fichier qui disparaissait sous quelques jours. J'en remets un beaucoup plus simplifié mais où j'ai le même problème.
Le solver ne fait pas d'optimisation pourtant c'est une équation simple là.
Je vous mets en PJ le fichier.
Merci pour votre aide passée et merci d'avance pour votre aide à venir.

http://www.cijoint.fr/cjlink.php?file=cj201106/cijwsZgDgM.xlsx
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 28/06/2011 à 00:07
Bonjour à toi aussi,
Que ça ne t'empeche pas de lire les réponses, la cause est sans doute la même...
eric
0
Ca fonctionne à peu près maintenant, il y a quelque fois des nombres du genre 1.2 E-07 qui apparaissent qui sont équivalent à 0 mais qui à l'oeil choque un peu mais bon ca reste superficiel. Sinon ca va il y a encore 2 ou 3 petits trucs à revoir mais en grande partie ca devrait aller.

Merci beaucoup ERIC
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Encore une petite chose.
J'aimerai créer un bouton qui en cliquant dessus lance le solveur automatiquement.
J'aimerai savoir si dans un premier temps c'est possible, et dans un second temps savoir comment faire?
J'ai déja réussi à créer un bouton qui initialise mes paramètres à 0 (c'était pas compliqué) mais pour le solveur, je bute un peu.
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
28 juin 2011 à 10:52
Bonjour,
Essayez cette procédure:
Sub executersolver()
' Essai de procédure
SolverReset
'
SolverOptions MaxTime:=100, Iterations:=100, Precision:=0.000001, Convergence:= _
    0.0001, StepThru:=False, Scaling:=False, AssumeNonNeg:=False, Derivatives:=1
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, Multistart _
    :=False, RequireBounds:=True, MaxSubproblems:=0, MaxIntegerSols:=0, _
    IntTolerance:=5, SolveWithout:=True, MaxTimeNoImp:=30
        
SolverOk SetCell:="$B$9", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$8:$C$8", _
    Engine:=1, EngineDesc:="GRG Nonlinear"
        
SolverAdd CellRef:="$L$3:$L$4", Relation:=1, FormulaText:="0"
SolverAdd CellRef:="$B$8:$C$8", Relation:=1, FormulaText:="$B$13:$C$13"
SolverAdd CellRef:="$B$8:$C$8", Relation:=3, FormulaText:="$B$14:$C$14"
SolverAdd CellRef:="$C$11", Relation:=1, FormulaText:="$C$7"
SolverAdd CellRef:="$L$3:$L$4", Relation:=1, FormulaText:="0"
    
SolverSolve UserFinish:=True

End Sub
--
Salutations.
Le Pingou
0
merci ca marche bien!!!
0