Press "Enter" to skip to content

3.5. Résolution de problèmes combinatoires

Beaucoup de problèmes industriels sont combinatoires. Dès que l’on veut agencer des tâches tout en respectant la capacité des machines ou l’ordre entre certaines tâches, on résout un problème combinatoire. La généralisation de l’utilisation de l’intelligence artificielle pour résoudre de tels problèmes date du milieu des années 1990. Les deux principaux paradigmes d’intelligence artificielle utilisés sont la programmation par contraintes* et SAT*.

Parmi les premiers succès, on peut citer l’utilisation de la programmation par contraintes pour optimiser les chaînes de montage de voitures en fonction des voitures commandées et du temps de montage des options sur une voiture. Plusieurs constructeurs ont utilisé ces techniques dès les années 1990, augmentant grandement l’efficacité de production (jusqu’à 40 % de gain observé). À la même époque, une des applications qui a rendu célèbre la programmation par contraintes a été l’utilisation d’ILOG Solver* pour optimiser le parcours des excavatrices à charbon

dans une grande mine aux États-Unis. Le rendement de cinq excavatrices a été égalé avec seulement quatre, simplement en optimisant leur parcours dans la mine.

Dans le domaine hospitalier, les emplois du temps des infirmières sont calculés par un programme à contraintes dans plusieurs grands hôpitaux. Un des avantages de cette approche par rapport à la programmation linéaire* est la facilité avec laquelle on modifie un modèle à contraintes pour exprimer les variations de réglementation du travail selon les années ou le pays. Depuis peu, on utilise également des programmes à contraintes pour gérer/minimiser les files d’attente de patients en soins ambulatoires.

Dans le domaine du transport, la programmation par contraintes a été utilisée pour l’affectation des membres d’équipage à leurs trajets, l’affectation d’avions aux portes d’embarquement ou l’affectation de trains aux quais.

Dans un cadre plus général que l’affectation de tâches / ressources, un problème de planification consiste à atteindre un but en exécutant une séquence d’actions (nous détaillerons cette thématique à la section suivante). Jusqu’aux années 1990, ce problème était trop difficile pour les techniques existantes. Mais un seuil a été franchi quand on a découvert qu’en bornant le nombre d’actions à réaliser (quitte à l’augmenter plus tard) on pouvait coder ce problème en une formule de la logique* des propositions et le résoudre avec un solveur SAT* permettant ainsi de venir à bout de très gros problèmes de planification. C’est avec des techniques d’intelligence artificielle que l’on planifie les actions des robots envoyés dans l’espace, qui, vu la distance, doivent décider par eux-mêmes les actions à faire pour atteindre le but fixé.

La technique consistant à borner le nombre d’actions pour pouvoir utiliser un modèle SAT a aussi prouvé son efficacité dans la vérification de programmes ou de microprocesseurs. On borne le nombre d’étapes de l’automate représentant le fonctionnement du composant à vérifier pour pouvoir le coder par une formule de la logique propositionnelle dont les solutions correspondent à la détection d’une erreur.

De plus en plus de problèmes rencontrés par les biologistes sont combinatoires. Dans les années 2000 la programmation par contraintes a résolu des problèmes comme l’ordonnancement de marqueurs génétiques, la prédiction de structures d’ARN ou la conception de protéines.

Les années 2010 ont vu la programmation par contraintes utilisée pour des problèmes soulevés par le développement durable. La programmation par contraintes permet d’organiser les tâches d’un “data center” de sorte à éviter les gros besoins d’électricité lors des pics de consommation, où l’on doit avoir recours à une centrale thermique, alors qu’à un autre moment on peut utiliser l’énergie éolienne, par exemple. La programmation par contraintes permet aussi d’organiser les pâturages de moutons en Irlande ou les couloirs sanitaires pour les ours dans les Rocheuses.

Enfin, la preuve de théorèmes mathématiques et la simplification de preuves sont deux exemples récents et prometteurs d’utilisation de SAT (voir la section « IA et Mathématiques » pour un exemple).