Optimisation d'un enchainement de productions

hbb

XLDnaute Occasionnel
Bonjour à tous,
Je reviens vers vous pour un petit coup de pouce sur la suite de mon projet.

Je recherche maintenant à optimiser des enchainements de productions en tenant compte des couts de changements
de ces production (cout d'un passage de la ref A vers la ref B par exemple)

Je ne sais pas si un ou plusieurs résultats peuvent être obtenus par formule.
J'ai indiqué un exemple de résultat qui pourrait être obtenu (à mon avis, c'est l'enchainement le moins couteux... si je ne me suis pas trompé....)

J'ai essayé de donner un peu plus de précisions dans le fichier directement.

merci encore pour votre aide !
bon app'
hbb
 

Pièces jointes

  • Couts changements de fabrications.xlsx
    47.3 KB · Affichages: 78
  • Couts changements de fabrications.xlsx
    47.3 KB · Affichages: 76

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

Bonsoir ODVJ, le forum,
Il faudrait que tu fournisses les matrices de coût pour 6 références ainsi qu'une vingtaine d'exemples de multiplicité (réels ou exagérés) pour chaque situation de références hebdo : 3, 4, 5 et 6.
A l'heure actuelle, je n'ai pas ces couts (en étude) : Pour simuler le calcul, on peut imaginer des valeurs x ou y.

Je suppose que les références d'une semaine à 3 références sont incluses dans les références d'une semaine à 6 références. Sinon, il faudra fournir autant de matrices des coûts que nécessaire.

Oui, c'est exact, ce sont les même refs

Pour ce qui est d'une macro qui résoudrait ton problème, il faut peut-être attendre un peu que les autres membres du forum se manifestent.

L'espoir fait vivre !!! :D

Matrice de cout, générer fichier data pour glpk, lancer par un shell, fichier bat. etc... j'avoue que c'est un peu, voire très flou pour moi... mais peut-être la seule solution !

Malgré tout, bonne soirée et merci encore,
hbb
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

Bonsoir à tous,

hbb, si tu n'es pas découragé et que ton problème est toujours vivant, je te propose une solution (tsp.xlsm) qui utilise le solveur gratuit GLPK. C'est rapide et même très rapide par rapport à ma macro initiale.

Pas d'inquiétude, le solveur sera transparent lors de l'utilisation de la macro.
Excel servira d'interface utilisateur puis :
  • préparera les données nécessaires à GLPK,
  • lancera GLPK
  • Récupèrera le résultat pour le mettre en forme et le restituer dans la feuille de départ


Avant de pouvoir lancer cette macro, il faut un peu de préparation. Et là, 2 options :
I) La première : le fichier cjoint contient tout. Il suffit de le dézipper. Mais dans une semaine, il ne sera plus accessible.
Document Cjoint


II) La deuxième : tu vas te créer ton dossier toi même. Voilà la démarche :

1) En premier lieu, tu télécharges GLPK et tous ses fichiers en version 4.60 ici :
https://sourceforge.net/projects/winglpk/
Tu n'auras besoin que de 2 fichiers.

2) Une fois GLPK dézippé dans un classeur du même nom, tu pourras dézipper le fichier joint ci-dessous dans lequel tu as un dossier tsp qui contient :
  • le fichier tsp.xlsm,
  • le fichier de commande tsp.bat,
  • les fichiers de modélisation GLPK (tsp.mod, tsp.dat et tsp.log). J'ai laissé le copyright dans tsp.mod
3) Il faudra ajouter dans ce dossier tsp deux fichiers : la dll glpk_4_60.dll et l'exécutable glpsol.exe.
Tu les trouveras dans les répertoires w32 ou w64 du dossier GLPK.
Perso, j'ai pris la version 32 bits alors que j'ai un W7 64 bits et Office 32 bits.


Tu seras alors paré pour tester.


Encore un petit préalable :
Pendant l'exécution de la macro, tsp.xlsm ouvre une fenêtre DOS qui peut avoir des dimensions inappropriées et surtout inutiles.
Pour régler les dimensions de cette fenêtre, va dans le menu démarrer de windows et tape cmd suivi de return.
La fenêtre DOS s'ouvre. Un clic droit\propriétés dans le coin supérieur gauche de la fenêtre te donne accès à son dimensionnement.
Chez moi j'ai mis largeur : 14, hauteur : 3, positionnement de la fenêtre gauche : 30 haut : 220.


Maintenant, tu peux lancer tsp.xlsm.

Il y a un petit pavé d'explication.
La feuille est protégée sans mot de passe, histoire de protéger les cellules qui n'ont pas à être modifiées.

En K11:K13 tu as des chronos des étapes de la macro.
Surveille K12 car c'est la partie potentiellement la plus longue du traitement. Tant que ça bouge, y'a de la vie.

Bon test.

Cordialement
 

Pièces jointes

  • tsp.zip
    53.1 KB · Affichages: 44
  • tsp.zip
    53.1 KB · Affichages: 51

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

Bonjour ODVJ, le forum,
Encore merci pour ta proposition de macro !
Sur ton exemple, pas de pb, le résultat semble parfaitement juste.

Par contre, quand je saisie d'autres multiplicités (voir captures écran), le résultat est incohérent...j'ai peut-être oublié quelquechose ?
- dans le 1er cas : seule la ref de départ s'affiche
- dans le 2ème cas :
1/ Message d'erreur à partir de la ligne 42
2/ En colonne D, je ne retrouve pas la même multiplicité que celle indiquée au départ en colonne P

Sinon, ce fichier peut, je pense, correspondre parfaitement à mes besoin !!
merci
Hbb

Capt1.jpgCapt2.jpg
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

Bonjour,

la "petite" instance fonctionne correctement :
tsp_1.jpg

Pour la "grande" instance, ça tourne..... ça tourne....ça tourne ..... depuis plus de 15 mn.
Il y a une dégénérescence du dual. GLPK reste sur le primal uniquement.
tsp_2.jpg
il faut dire qu'un tsp avec 71 villes, c'est 5041 variables binaires et autant de variables entières.
C'est chaud pour ma petite machine!
Je vais essayer avec Cplex.

cordialement

PS : pour vérif, ton dossier tsp ressemble à ça :
dossier_tsp.JPG
 
Dernière édition:

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

ODVJ,
En fait, j'ai ouvert le fichier Excel du "Document Cjoint" pour faire les essais.
A partir de ce fichier excel, la moulinette ne dure qu'une fraction de seconde mais le résultat n'est pas correct.

Je n'avais pas remarqué ton fichier attaché en bas de message...
Avec celui-ci, il est vrai que le tps de traitement est assez long...
Pour une somme de multiplicité de 19, "Excel ne répond pas".
Je vais refaire d'autres tentatives.
merci
Hbb
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

Bonjour,

j'ai revu mon fichier bat en utilisant une redirection plutôt que le switch --log.
j'ai restructuré ma gestion du temps d'attente de la fin d'exécution du script.

je t'ai mis une annotation sur la référence à WSHOM dans VBE sinon, ça ne marchera pas.

et maintenant ça fonctionne encore plus vite (la V4_60 de GLPK y est peut-être pour quelque chose)

la "grande" instance est avalée en 1mn.
je n'aurais pas misé là-dessus!

le fichier tsp.xlm est à mettre dans le dossier tsp

cordialement
 

Pièces jointes

  • tsp.xlsm
    92.1 KB · Affichages: 35
  • tsp.xlsm
    92.1 KB · Affichages: 42

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

Bonsoir ODVJ,
Je ne comprends pas, quand je lance la macro sans changer les valeurs en P3, P4, P5 et P6, ça fonctionne parfaitement bien.
Par contre, dès que change ces valeurs, la macro bug (voir copies écran)

merci d'avance
HbbCapt3.JPGCapt4.JPG
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

Bonsoir,

Mékécékça !!!

colle une copie d'écran des références VBA dans le fichier tsp.xlsm et envoie le, tel quel, avec les valeur qui font planter. (tu le mets en pièce jointe ou sur cjoint ça n'est pas gênant)

et pendant qu'on y est, met une image de ton dossier tsp dans ta réponse.

cdlt

PS : joins tsp.log et tsp.dat à ton message
 
Dernière édition:

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

Bonsoir ODVJ,
Je viens de remarquer que si j'exécute le fichier tsp (fichier de commande Windows) avant de lancer la macro, ça fonctionne.
Mais dès que je modifie les valeurs en P3...P6, je dois au préalable ré-exécuter ce fichier.

Merci et désolé de te faire perdre ton temps...
Mathieu
 

Pièces jointes

  • tsp.xlsm
    92.1 KB · Affichages: 31
  • pj.zip
    1 KB · Affichages: 18
  • tsp.xlsm
    92.1 KB · Affichages: 30
  • pj.zip
    1 KB · Affichages: 21
  • Capt5.JPG
    Capt5.JPG
    31.5 KB · Affichages: 34

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

Bonsoir,

j'ai changé le tsp.bat et je ne te l'ai pas envoyé !!!!

honte à moi.

Vérifie si ça marche mieux avec ce nouveau .bat

cdlt

le voici.
 

Pièces jointes

  • tsp.zip
    218 bytes · Affichages: 32
  • tsp.zip
    218 bytes · Affichages: 39

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

2ème précision,

lorsque tu utilises le tsp.xlsm que je t'ai envoyé, tu le copies bien d'abord dans le dossier tsp, et ensuite seulement tu l'ouvres à partir du dossier tsp.

si tu ne fais pas ça, il va se perdre dans les répertoires, ne pas trouver le fichier log et t'envoyer le message d'erreur que tu as eu tout à l'heure.

j'aurais dû t'envoyer un dossier zippé complet.
ça t'aurait évité ces soucis.

cdlt
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

3ème précision,

Maintenant que tout doit rouler tranquille, il faut savoir que certaines occurrences "déséquilibrées" obligeront à ne pas respecter la règle d'alternance.
C'est le cas notamment lorsque la multiplicité d'une référence est supérieure à la somme des multiplicités des autres références à fabriquer.

Dans ce cas, le coût total calculé est faux car il intègre une pénalisation des répétitions à hauteur de n fois le coût de changement maxi de la table des coûts.
Autrement dit, les séquences AA, BB, CC etc.. coûtent 39*2236€ au lieu des 0€ de la table.
Le 39 correspond à la somme des productions de références, soit 12, 3, 9, 15 pour A, B, C, D dans le fichier que tu viens de m'envoyer.

C'est peut-être une évolution à prévoir.

cdlt

exemple d'instance déséquilibrée : 5, 22, 12, 3 qui s'exécute en 13 secondes. Le coût pénalisé est de 192 996€ alors que le coût réel est de 13 572€.
 

hbb

XLDnaute Occasionnel
Re : Optimisation d'un enchainement de productions

J'ai pourtant bien enregistré le tsp.xlsm dans le dossier tsp et c'est encore pareil. (obligé d'exécuter le tsp.bat)
C'est pas dû au fait que l'extension .bat soit masquée sur mon pc ?
merci
 

ODVJ

XLDnaute Impliqué
Re : Optimisation d'un enchainement de productions

non, l'extension visible ou pas est une option d'affichage que tu peux modifier en allant dans l'explorateur windows, outils\options des dossiers...\affichage et là, tu décoches la ligne "Masquer les extensions des fichiers dont le type est connu".

ça serait bien de le faire parce qu'on ne sait plus de quel tsp il s'agit.

Lancer manuellement le tsp.bat, ne sert à rien sauf à recréer un tsp.log à partir du dernier tsp.dat créé.
tsp.xlsm lance le tsp.bat après avoir créé le tsp.dat de la nouvelle instance saisie dans le tableur.


Quelle est ta configuration? (système et excel)
Sur quel disque as-tu mis le dossier tsp?
Quels sont tes droits (admin?), je suppose que tu peux écrire à l'emplacement du dossier tsp puisque tu y as copié ce dossier.

cdlt

PS : tu as bien écrasé l'ancien tsp.bat par le dernier que je viens de t'envoyer?
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2