Choco Solver


Choco Solver est une librairie Open Source de Programmation Par Contraintes utilisée depuis plus de 15 ans par de nombreuses entreprises et universités. Il figure parmi les solveurs les plus performant du marché et répond à des standards de qualité élevés. Ecrit en Java, Choco Solver s'intègre facilement pour réaliser des web-services d'aide à la décision. La librairie est conjointement développée par Cosling et l'École des Mines de Nantes, qui la distribue sous licence BSD.




La Programmation Par Contraintes

Un Problème de Satisfaction de Contraintes (CSP) est défini par un ensemble de variables, chacune munie d'un domaine de valeurs, et d'un ensemble de contraintes définissant les combinaisons de valeurs autorisées. Résoudre un CSP revient à affecter à chaque variable une valeur de son domaine, de sorte que les contraintes du modèle soient vérifiées. On peut ensuite ajouter un ou plusieurs critères d'optimisation. On parle de Programmation Par Contraintes (PPC), car le problème à résoudre est décrit de manière déclarative par l'ensemble de ses contraintes. Il s'agit d'un paradigme de programmation très particulier où, au lieu d'indiquer une procédure à suivre pour obtenir une solution, on se contente de spécifier les propriétés qui caractérisent la solution recherchée, d'où la célèbre citation: “Constraint programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it.” [Eugene C. Freuder, Constraints, April 1997]. Cette séparation nette entre les aspects fonctionnels et les aspects techniques va bien au dela de la programmation informatique, il s'agit d'une autre manière de penser qui facilite grandement les échanges avec le métier lors de projets industriels. En savoir plus.

Une fois le travail de modélisation effectué, un modèle de Programmation Par Contraintes peut être résolu par un solveur de contraintes générique, e.g. Choco Solver. Les algorithmes de filtrage des contraintes vont éliminer les valeurs inconsistantes par déductions logiques tandis que les heuristiques de recherche du solveur vont explorer de manière intelligente l'espace de recherche résiduel, via un ensemble d'hypothèses réfutables. La résolution d'un CSP par un solveur de contraintes repose donc sur l'alternance de ces deux concepts fondamentaux, filtrage et exploration, jusqu'à obtenir une solution réalisable ou prouver qu'il n'en existe pas. Néanmoins, pour résoudre des problèmes complexes, il est fréquent de devoir implémenter sois-même un nouvel algorithme de filtrage (généralement pour des contraintes globales) ou bien une heuristique de recherche intégrant un savoir-faire métier. Cette activité nécessitant une expertise en Programmation Par Contraintes et une bonne connaissance du solveur, faites confiance à nos experts pour avancer efficacement dans vos développements!


Vous retrouverez sur cette page des tutoriels pour vous aider dans l'utilisation de Choco Solver. Découvrez les nouveautés de Choco Solver 4.0!





Ils utilisent Choco Solver




Ajouter mon entreprise