Besoin d'aide pour des codes

lina_bou13

XLDnaute Nouveau
Re,
Bonjour
Ça j'avais compris, je ne suis pas idiot. Mais pour y arriver concrètement, il faudra ensuite pratiquer une série de chiffres produits, comme ce minimum, sur fond noir, qu'on cherchait aussi, et même principalement. Ce sont ceux là dont j'ignore ce qu'ils signifient.

De ce que j'ai pu comprendre c'est qu'il utilise une méthode qui s'appelle stepping stone, cette méthode requiert à l'utilisation d'une autre méthode qui est la méthode du Coin Nord ouest.
Cette méthode vient prendre la première case du Nord ouest du tableau et commence a faire une sorte l'algorithme ,je crois que c'est ce qu'il fait.
Je ne sais pas si j'arrive à bien m'expliquer mais je pense que c'est ce que vous n'arrivez pas a comprendre.
Je peux vous passer l'algorithme théorique de cette méthode si vous le souhaitez.
 

Dranreb

XLDnaute Barbatruc
Non, ce que je ne comprend pas c'est ce qu'on en fait de ces chiffres, après, en pratique, pour arriver à respecter ce coût minimum théorique trouvé et permis par ces chiffres là seulement, parce que je ne sait pas ce qu'ils signifient.
 

Dranreb

XLDnaute Barbatruc
Non je parle des chiffres qui ressortent dans une large bande noire en bas dans l'autre feuille (ce sont ceux calculés par le solveur), et qui sont certainement reproduit dans la 1ère en tant que principal résultat de la solution, à observer scrupuleusement dans la réalité pour arriver effectivement à ce coût minimum.
 

Dranreb

XLDnaute Barbatruc
Non je viens de rouvrir le classeur et refait un essai au pif.
Cette plage de résultat s'appelle xij et la Sub PresenterSolution s'en sert pour reconstruire tout un tableau supplémentaire à la fin intitulé "Le tableau suivant décrit un plan optimal de transport." en rouge. C'est ce tableau qu'il faudra respecter pour arriver au coût minimum trouvé, mais je ne sais pas ce qu'il signifie.
 

lina_bou13

XLDnaute Nouveau
Je crois que je viens de comprendre, je vais essayée de vous expliquer ce que j'ai compris.
Alors, les chiffres donnés par le solver vont être mis dans le tableau qui est intitulé :Le tableau suivent décrit un plan optimal de transport. En fonction de l'endroit ou les chiffres se trouvent ils vont être placé dans ce tableau.
Si par exemple on fait un matrice 2X2, et que le solver donne un résultat de : 3 0 0 3
Dans le tableau on retrouvera dans l'origine 1 et la destination 1 le chiffre 3
L'origine 1 et la destination 2 le chiffre 0
L'origine 2 et la destination 1 le chiffre 0
L'origine 2 et la destination 2 le chiffre 3
M'avez vous compris ?
 

Dranreb

XLDnaute Barbatruc
Oui, mais je ne sais toujours pas ce que ça veut dire, ce qu'il faut en faire dans la planification des transports ou je ne sais quoi pour ne pas dépasser ce coût.
 

lina_bou13

XLDnaute Nouveau
Moi je ne comprends pas le déroulement des codes c'est ce que je veux savoir :/ en tant que programmeur dites moi les étapes qu'il est entrain de faire pour atteindre ce résultat cest ce qui me bloque.
 

Dranreb

XLDnaute Barbatruc
C'est cette partie qui construit le tableau :
VB:
'Insérer les valeurs optimales des variables.
i = 1: j = 1
For Each c In Range("xij")
    Cells(BasTabD + 6 + j, 1 + i).Value = c.Value
    Cells(BasTabD + 6 + j, 1 + i).Select
    ActiveCell.NumberFormat = "0"                                            'Afficher avec 0 décimale.
    If i = N Then
        j = j + 1
        i = 0
    End If
    i = i + 1
Next c
 

lina_bou13

XLDnaute Nouveau
J'ai repris le code je l'ai plus ou moins compris, n'empêche que dans cette partie du code je bloque, quelqu'un pourrait la commenter s'il vous plait ?


Sub VersionSolveur()


'Premièrement, déterminer le numéro de la version du solveur.

OfficeVersion = Int(Val(Application.Version()))


'Puis, déterminer le nom du solveur.

Select Case OfficeVersion

Case Is <= 10

MsgBox "Votre version d'Excel n'est pas supportée par le gabarit; des erreurs sont possibles."

SolverName = "solver.xla" & "!"

Case 11 'Excel 2003

SolverName = "solver.xla" & "!"

Case 12 'Excel 2007

SolverName = "solver.xlam" & "!"

'Case 13 'version inconnue… à vérifier éventuellement!

Case Is >= 14 'Excel 2010

SolverName = "solver.xlam" & "!"

End Select


'Ensuite, réinitialiser le solveur.

If OfficeVersion <= 11 Then

Application.Run SolverName & "Solver.Solver2.Auto_open" 'N'existe pas dans Exc07.

End If

Application.Run SolverName & "SolverReset"



'Cocher Min ou Max pour la cible z.

If OfficeVersion <= 12 Then

If Sheets("Données").cboMaxMin.Text = "Max" Then

Application.Run SolverName & "SolverOk", "z", 1, "0", "xij"

Else

Application.Run SolverName & "SolverOk", "z", 2, "0", "xij"

End If

ElseIf OfficeVersion >= 14 Then

If Sheets("Données").cboMaxMin.Text = "Max" Then

Application.Run SolverName & "SolverOk", "z", 1, "0", "xij", 2, "Simplex LP"

Else

Application.Run SolverName & "SolverOk", "z", 2, "0", "xij", 2, "Simplex LP"

End If

Else

MsgBox " Version d'Excel non supportée par ce gabarit."

End If



End Sub


Sub Resoudre()

Dim symbole As Integer, i As Integer, j As Integer

Dim c As Object


Sheets("Modèle").Select

Call VersionSolveur


'Spécifier les contraintes technologiques.

Application.ReferenceStyle = xlR1C1

ActiveWorkbook.Names.Add Name:="MD", RefersToR1C1:= _

"=R" & DebTabM & "C" & NbVar + 4 & ":R" & DebTabM + M + N - 1 & "C" & NbVar + 4

Application.Run SolverName & "SolverAdd", _

"R" & DebTabM & "C" & NbVar + 2 & ":R" & DebTabM + M + N - 1 & "C" & NbVar + 2, 2, "MD"


'Spécifier les options du solveur.

If OfficeVersion <= 12 Then

Application.Run SolverName & "SolverOptions", 10000, 10000, 0.000001, True, False, 1, 1, 1, 0, _

False, 0.0001, True

ElseIf OfficeVersion >= 14 Then

Application.Run SolverName & "SolverOptions", 10000, 10000, 0.000001, True, False, 1, 1, 1, 0, _

False, 0.0001, True, 500, 0, True, False, 0.6, 10000, 1000, False, 3600

Else

MsgBox " Version d'Excel non supportée par ce gabarit."

End If

Application.Run SolverName & "SolverSolve", False, False


Application.ReferenceStyle = xlA1

Call PresenterSolution

End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Tout ça demande au solveur de régler les constantes "xij" de façon à ce que la formule "z" soit minimale tout en respectant comme contrainte que restent conformes aux "MD" les formules deux colonnes à leur gauche (et non une, car dans la colonne entre les deux il a mis à chaque ligne un signe "=" pour bien montrer que ce sont les contraintes pour le solveur)
Vous pouvez vérifier ça après un calcul réussi en appelant la boîte du solveur depuis la feuille où sont fait les calculs.
Vérifiez la cellule cible, les cellules variables et les contraintes.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Précisions: C'est effectué en exécutant des macros spécifiques du solveur.
solver.xlam!SolverReset pour le réinitialiser,
solver.xlam!SolverOk pour poser les principaux élément du problème et la condition du but à atteindre,
solver.xlam!SolverAdd pour ajouter une contrainte,
solver.xlam!SolverOptions pour orienter les histoires de précision, limites itérations et tout ça…
solver.xlam!SolverSolve pour lancer enfin la résolution.
Remarque: Le nom "MD" est défini dans le classeur juste avant l'ajout de la contrainte par rapport à cette plage.
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas