À retenir
- On définit le quoi (les règles) plutôt que le comment (la méthode).
- Elle est idéale pour les problèmes ayant un nombre gigantesque de combinaisons possibles.
- Elle utilise des solveurs, des logiciels spécialisés qui cherchent la meilleure solution parmi toutes celles qui respectent les règles.
La PPC est une méthode de développement où l'on ne dicte pas à l'ordinateur les étapes à suivre, mais les règles de base (les contraintes) qu'il doit impérativement respecter. C'est comme donner les règles du Sudoku à une machine : on ne lui dit pas comment remplir chaque case, mais on lui impose de ne jamais avoir deux fois le même chiffre par ligne ou colonne, et elle se charge de trouver la solution.
Étymologie
Acronyme de Programmation Par Contraintes (en anglais Constraint Programming). Ce concept est apparu dans les années 1980, puisant ses racines dans la programmation logique et l'intelligence artificielle pour résoudre des problèmes de logique pure.
Exemples d'usage
- L'élaboration d'un emploi du temps scolaire automatique en tenant compte de la disponibilité des salles et des professeurs.
- Le calcul de l'itinéraire optimal pour un camion de livraison devant passer par dix villes sans dépasser son temps de conduite.
- La configuration automatique de produits complexes (comme une voiture avec des options mutuellement exclusives).
Cas d'usage
Ce concept intervient principalement dans la logistique, l'ordonnancement industriel, la planification de tâches complexes, la conception de circuits électroniques et la résolution de problèmes mathématiques combinatoires.
Bonnes pratiques
Pour qu'un programme de ce type soit efficace, il faut soigneusement définir les domaines (les valeurs possibles pour chaque variable) afin d'éviter que l'algorithme ne se perde dans des milliards de tests inutiles. Il est aussi conseillé de hiérarchiser les contraintes (certaines sont obligatoires, d'autres sont seulement souhaitables).
Synonymes
Antonymes
Conseil
Si vous débutez, testez des bibliothèques comme Google OR-Tools en Python. C'est un excellent moyen de comprendre comment transformer un problème réel en un ensemble d'équations logiques sans avoir à créer le moteur de recherche soi-même.
Questions fréquentes
Quelle est la différence avec la programmation classique ?
En programmation classique, vous donnez une recette de cuisine. En PPC, vous donnez simplement la liste des ingrédients autorisés et le goût final attendu, et l'ordinateur trouve la recette.
Est-ce que c'est difficile à apprendre ?
Le concept est simple, mais modéliser un problème complexe demande de la pratique pour que le programme reste rapide et efficace.