<aside> ℹ️ Titre du cours (idée … pas encore sûr à 100%)

Résolution de problèmes de satisfaction de contraintes en Python

</aside>

Dans ce cours, nous allons aborder un paradigme de programmation fascinant, la programmation par contraintes. Cette manière de programmer est née de la bonne vieille intelligence artificielle des années 1980-2010. Elle consiste à décrire des problèmes de satisfaction de contraintes (par exemple la résolution de Sudoku) sous forme déclarative et laisser l’ordinateur trouver la solution en expérimentant différentes stratégies et approches de résolution (heuristiques).

Dans ce cours, vous allez développer votre propre solveur de contraintes en Python en utilisant abondamment la programmation orientée objets. Nous jetterons également également un oeil au code source du module python-constraint.

Ce que vous maîtriserez à l’issue du cours

Planning du cours

Date Description approximative
11 janvier séance 1 :
• Présentation du module et objectifs généraux
• Présentation générale programmation par contraintes + concept de problème de satisfaction / optimisation de contraintes
• Rappels Python (POO + autres sujets avancés nécessaires)

Cette séance va me permettre de sentir le niveau général et les disparités entre les participants. | | 18 janvier | Pause : conférence commune avec les autres du cours Turing | | 25 janvier | Séance 2 : introduction à la CP (Constraint Programming) : variables, domaines, contraintes, ... + début implémentation solveur | | 8 février | séance 3 => propagation de contraintes / graphe de contraintes / ... => amélioration du solveur / premières applications à des problèmes concrets | | 15 février | pause 1e samedi des relâches VD) | | 22 février | Pause 2e samedi des relâches VD | | 1er mars | Séance 4 : algorithmes de recherche en profondeur / recherche en largeur / heuristiques => amélioration du solveur / applications | | 8 mars | Séance 5 : applications / pour aller plus loin / utilisation et étude de "vrais" solveurs state of the art avec Python / intro à la modélisation et résolution de "vrais" problèmes |

Quelques références

Classic Computer Science Problems in Python

Constraint Processing

Handbook of Constraint Programming

Full Table of Contents for AI: A Modern Approach

Programming with Constraints: an Introduction. Course Material

Building Decision Support Systems

Présentation CP

▶ Programmation par contraintes | EURODECISION

Applications réelles

Moocs sur le sujet pour aller plus loin …

Basic Modeling for Discrete Optimization

Advanced Modeling for Discrete Optimization

Discrete Optimization

Solving Algorithms for Discrete Optimization

Ressources et références pour MiniZinc

MiniZinc

The MiniZinc Handbook — The MiniZinc Handbook 2.8.7

Cours

Un des premiers cours en anglais

On-line guide to constraint programming

Cours de Christine Solnon

Cours de programmation par contraintes

Cours de CP

Programmation par Contraintes

perso.ensta-paris.fr

perso.ensta-paris.fr

perso.ensta-paris.fr

Cours avec nombreuses visualisations (statiques)

Cours d’un master de recherche opérationnelle à Paris

Programmation Par Contraintes - MPRO

Bibliothèque Scala avec tutoriels, bon exemples

OscaR-CP — OscaR User-Guide beta/under dev documentation

Cours avec vidéo, avec ECLiPSE

ECLiPSE ELearning Course

Programmation par Contraintes

Exemples

or-tools/examples/python at stable · google/or-tools

Autres ressources

Matériel caché (pour le moment)

Ressources de base