A voir également:
- [VBA] Algo sac a dos 1D
- Incompatibilité de type vba ✓ - Forum Programmation
- Excel compter cellule couleur sans vba - Guide
- Fonction ms dos non valide - Forum Windows 8 / 8.1
- Le sac outlet avis ✓ - Forum Mail
- Sac cabine primark - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Tu nous décrit le First Fit, et tu nous explique qu'il ne donne pas de bons résultats. De toutes évidence il ne convient pas dans ton cas.
Il ne s'agit pas vraiment d'un problème de programmation, il s'agit de choisir le bon algorithme.
Comment fais-tu pour arriver au résultat sans programmer ? Tu peux t'en inspirer.
Quelques idées :
1) Au départ, tu mets tes barres dans une liste. C'est à ce moment-là que tout se passe. Au lieu de les trier par ordre de taille, tu pourrais aussi bien prendre le plus grand restant, puis le plus petit restant, et ainsi de suite. Ou les mettre dans un ordre aléatoire. Suggestion, essaie de multiples fois par ordre aléatoire, et garde le meilleur.
2) Comme tu sais que tu as un grand nombre de barres identiques, tu travailles sur un plus petit nombre, et tu extrapoles.
3) Tu connais le nombre minimum de barres dont tu as besoin. Tu répartis tes pièces dans ces barres, en essayant de laisser le plus grand espace libre possible dans chaque barre (sauf si tu peux remplir completement une barre). Donc, au lieu de tout mettre dans les premières barres, tu mets dans la barre où il reste le plus de place (ou bien où la place qui reste correspond à ta pièce). Quand tu as besoin de barres supplémentaires, tu en crées.
Il ne s'agit pas vraiment d'un problème de programmation, il s'agit de choisir le bon algorithme.
Comment fais-tu pour arriver au résultat sans programmer ? Tu peux t'en inspirer.
Quelques idées :
1) Au départ, tu mets tes barres dans une liste. C'est à ce moment-là que tout se passe. Au lieu de les trier par ordre de taille, tu pourrais aussi bien prendre le plus grand restant, puis le plus petit restant, et ainsi de suite. Ou les mettre dans un ordre aléatoire. Suggestion, essaie de multiples fois par ordre aléatoire, et garde le meilleur.
2) Comme tu sais que tu as un grand nombre de barres identiques, tu travailles sur un plus petit nombre, et tu extrapoles.
3) Tu connais le nombre minimum de barres dont tu as besoin. Tu répartis tes pièces dans ces barres, en essayant de laisser le plus grand espace libre possible dans chaque barre (sauf si tu peux remplir completement une barre). Donc, au lieu de tout mettre dans les premières barres, tu mets dans la barre où il reste le plus de place (ou bien où la place qui reste correspond à ta pièce). Quand tu as besoin de barres supplémentaires, tu en crées.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
La seule "bonne" méthode, selon moi, c'est l'algorithme suivant :
1) calculer, dans l'ensemble des découpes encore à faire, toutes les sommes possibles qui sont inférieures à une barre (dans ton cas, au départ : 1000, 1000+1000, 1000+700, 1000+700+700, 700, 700+700, 700+700+700)
2) tu prends la plus grande somme (dans ton cas, 1000+700+700)
3) tu supprimes les découpes sélectionnées (1000,700,700) de la liste des decoupes encore à faire
4) tu recommences en 1
cela me semble un bon exercice de programmation, non ?
1) calculer, dans l'ensemble des découpes encore à faire, toutes les sommes possibles qui sont inférieures à une barre (dans ton cas, au départ : 1000, 1000+1000, 1000+700, 1000+700+700, 700, 700+700, 700+700+700)
2) tu prends la plus grande somme (dans ton cas, 1000+700+700)
3) tu supprimes les découpes sélectionnées (1000,700,700) de la liste des decoupes encore à faire
4) tu recommences en 1
cela me semble un bon exercice de programmation, non ?
bonjour
moi aussi je m'interesse a cet algo pour des besoins professionnels
en effet la derniere description semble etre LA maniere de procéder.
Maintenant quand on a une liste de base de mettons 300 découpes, calculer toutes les sommes possibles qui sont inférieures a la longueur de la barre, ca parait chaud non en temps de calcul et en stockage mémoire?
mais s'il y a des solutions que je ne connais pas, je suis preneur
Rémy
moi aussi je m'interesse a cet algo pour des besoins professionnels
en effet la derniere description semble etre LA maniere de procéder.
Maintenant quand on a une liste de base de mettons 300 découpes, calculer toutes les sommes possibles qui sont inférieures a la longueur de la barre, ca parait chaud non en temps de calcul et en stockage mémoire?
mais s'il y a des solutions que je ne connais pas, je suis preneur
Rémy