Bonjour,
Pour un projet de R.O. (Recherche opérationnelle) Statistique, je dois faire plusieurs choses:
1. Tout d'abord, lister l'ensemble A toutes les combinaisons de k éléments dans un ensemble de n éléments (k<=n)
2. Ensuite, pour chaque combinaisons Ai lister l'ensemble Bi toutes les permutations de j valeurs possibles.
3. Enfin pour chaque Bil vérifier si elles correspond aux contraintes (à définir en fonction de la recherche).
D'un point de vue mathématiques, l'ensemble A contient n! / ( k! ( n - k ) ! ) et chaque ensemble Bi contient j! éléments; soit un total de j! ( n! / ( k! ( n - k ) ! )).
Exemple:
Un bus de 80 places possède 15 passagers et chaque passager à une particularité spécifique parmi 10 catégories, recenser l'ensemble des possibilités de placement de ces passagers dans le bus.
Le nombre de combinaisons total est donc de 10! ( 80! / ( 15! (80 - 15) ! )) = 5 472 782 816 133 670 000 000
Je voudrais votre avis sur comment procéder, dois-je commencer par calculer l'ensemble A dans son intégralité ou faire en sorte qu'au fur et à mesure que celui-ci se remplit créer les ensembles Bi auxquels j'ai "accès"; ou aborder une toute autre approche..?
De plus j'aimerais un coup de main sur quelques points où je ne vois pas comment procéder:
* Gérer la sauvegarde du processus, de sorte à pouvoir le reprendre ultérieurement au stade où il s'était arrêté (comme pour le moment je gère tout cela à l'aide de récursive je n'arrive pas à correctement sauver mon état)
* Permettre l'affichage de la progression à l'aide d'un ProgressBar, le problème étant les grands nombres à gérer et quel format utiliser pour les stocker sachant que cela doit ralentir le moins possible le reste (donc les Decimal à éviter par exemple)
* Toute piste utile à l'optimisation du tout aussi bien en terme de vitesse d'exécution, qu'en terme de mémoire (du processus en lui même d'une part et du format de stockage des résultats valides d'autre part, sachant que toute base de données est exclue (au moins pour le moment))
Merci d'avance à tous, pour l'attention portée à ce message ainsi qu'à toute aide apportée !
Partager