Quelqu'un a-t-il des exemples concrets où il résout régulièrement des problèmes NP complets ou NP difficiles (par heuristique, ou à la recherche d'une solution sous-optimale ou autre) dans son travail? Je sais qu'ils se produisent dans la planification, la planification, la conception VLSI, etc., mais j'essaie de me faire une idée des principales industries qui emploient aujourd'hui des programmeurs ou des ingénieurs qui le font régulièrement. Si l'on devait développer une expertise ou une bibliothèque, par exemple, l'optimisation combinatoire, où pourrait-on l'utiliser dans le cadre d'un travail de programmation?
Des comptes personnels?
algorithms
optimization
bande passante élevée
la source
la source
Réponses:
Certaines des choses auxquelles je peux penser (la plupart de celles-ci auxquelles j'ai participé plus ou moins):
Il existe de nombreux exemples standard tels que la recherche de l'itinéraire le plus court, la planification des infirmières, etc. mais si vous êtes dans l'optimisation combinatoire, vous en savez tout :)
la source
J'ai utilisé un recuit simulé à contrainte de temps pour résoudre un problème de type saleman itinérant dans la fabrication d'écrans tactiles. Chaque milliseconde que nous pourrions raser du temps de cycle de la gravure au laser de chaque panneau augmenterait le débit, l'utilisation et donc la rentabilité de la machine, donc j'ai mis beaucoup d'efforts pour minimiser le temps mort (chemins non marquants) entre les chemins marquants (qui ne pouvait évidemment pas être optimisé).
J'ai utilisé un algorithme limité dans le temps pour contourner la dureté NP du problème, car nous ne pouvions pas nous permettre que le calcul d'optimisation prenne plus de temps que le temps économisé par le chemin le plus optimal. Pendant que la machine déplaçait le panneau de la position de chargement à la position où la tête laser se trouvait dans le coin le plus proche, j'ai eu le temps d'effectuer quelques simulations. L'algorithme n'a presque jamais fonctionné dans les quelques centaines de millisecondes du mouvement, mais il a presque toujours renvoyé un meilleur chemin de scribe que n'importe lequel des modèles simples et non adaptatifs que nous avions toujours utilisés auparavant (tels que les chemins en spirale ou en serpent).
la source
Je travaille (en ce moment, en fait) sur le problème bioinformatique de l'alignement de plusieurs séquences d'ADN local. Le point de cela est que si beaucoup de séquences de gènes ayant une propriété commune (profil d'expression similaire ou même liaison de facteur de transcription dans une expérience sur puce ChIP) s'alignent fortement à un moment donné, alors vous avez probablement trouvé la raison de leur commune propriété. Là encore, je suis plus intéressé par les aspects statistiques du problème. Même si c'est NP-difficile, vous ne perdez pas grand-chose en utilisant l'heuristique dans la pratique. La partie intéressante du problème, à mon humble avis, est un problème de rapport signal / bruit.
la source
Je ne sais pas vraiment ce que signifie NP complete / hard, mais je pense que la planification automatique de l'offre est une sorte de cela.
Vous avez un plan de demande de 90 jours pour 100 références de produit: bière! La référence 100 produits provient de:
Il existe des "lignes" de machines pour chaque opération: du brassage à l'emballage. Les machines peuvent effectuer plus d'opérations, par exemple, certaines machines d'emballage peuvent fabriquer des paquets de 6 et 3, mais d'autres ne peuvent en faire que 6. Il y a des contraintes, par exemple la vitesse, ou la grande bouilloire de brassage est pour le brassage min. 6000, max, 8000 l de bière (mais si le type de bière est léger, le minimum est de 5000 l et le maximum est de 7000 l). Et ainsi de suite, à tous les niveaux.
La tâche: comme je l'ai mentionné, il existe un plan de demande pour les 100 types de niveau 5 (les trucs en bouteille et emballés). Faites un plan de fabrication optimal pour tous les 5 niveaux, toutes les machines. Minimiser les commutateurs de la machine (par exemple, la mise en bouteille 0,5, 0,5, 0,5, 0,3, 0,3, 0,3 est meilleure que 0,3, 0,5, 0,3, 0,5, 0,5, 0,5, il y a moins de swithc, moins de temps mort pour les machines d'embouteillage). Prioriser par client: certains clients exigent d'expédier la bière uniquement avec plus de 50% de délai d'expiration. Etc.
Découvrez les goulots d'étranglement (hein), faites des plans alternatifs en ajoutant des machines inexistantes à ces points, puis le meilleur scénario virtuel peut être utilisé pour suggérer d'acheter de nouvelles machines.
Est-ce assez difficile, ou devrais-je vous dire comment fonctionne une usine textile ?
(Remarque personnelle: le Web, la banque et la logistique sont des domaines difficiles, mais ce sont des jouets pour bébés par rapport aux problèmes de fabrication.)
Avertissement: les chiffres sont déformés pour des raisons de sécurité, l'ordre de grandeur est réel.
la source