Constraint programming

linfo2365  2023-2024  Louvain-la-Neuve

Constraint programming
5.00 crédits
30.0 h + 15.0 h
Q2
Enseignants
Schaus Pierre;
Thèmes abordés
  • Contraintes et domaine
  • Aspects pratiques de solvers de contraintes
  • Problèmes de satisfaction de contraintes (CSP)
  • Modèles et langages de programmation par contraintes - Méthodes et techniques de résolution de contraintes (consistance, relaxation, optimisation, recherche, intervalles, programmation linéaire, contraintes globales, ...)
  • Stratégie et technique de recherche
  • Modélisation et résolution de problèmes (domaines finis et domaines continus)
  • Applications à la résolution de classes d'applications (par exemple, planification, ordonnancement, allocation de ressources, économie, robotique)
Acquis
d'apprentissage

A la fin de cette unité d’enseignement, l’étudiant est capable de :

1 Eu égard au référentiel AA du programme « Master ingénieur civil en informatique », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • INFO1.1-3
  • INFO2.2-4
  • INFO5.4-5
  • INFO6.1, INFO6.4
Eu égard au référentiel AA du programme « Master [120] en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • SINF1.M4
  • SINF2.2-4
  • SINF5.4-5
  • SINF6.1, SINF6.4
Les étudiants ayant suivi avec fruit ce cours seront capables de
  • appréhender un ensemble de techniques informatiques permettant de résoudre un problème de satisfaction de contraintes;
  • résoudre une application simple mettant en oeuvre les techniques étudiés;
  • expliquer les fondements des modèles et des langages de programmation par contraintes;
  • identifier des classes d'applications où la programmation par contraintes peut être utilisée à bon escient;
  • modéliser un problème simple sous forme de contraintes et exprimer ce modèle dans un langage de programmation par contraintes y compris l'expression de stratégies de recherche.
Les étudiants auront développé des compétences méthodologiques et opérationnelles.  En particulier, ils auront développé leur capacité à :
  • maîtriser rapidement un nouveau langage de programmation;
  • utiliser des documents techniques pour approfondir leur connaissance d'un sujet.
 
Contenu
  • La programmation par contraintes: un paradigme de programmation déclarative
  • Architecture d’un solveur de programmation par contraintes
  • Contraintes globales et techniques d’implémentation (incrémentalité, etc)
  • Stratégie et technique de recherche
  • Modélisation et résolution de problèmes d’optimisation combinatoires à l’aide de la programmation par contraintes
  • Applications à la résolution de classes d'applications (par exemple, planification, ordonnancement, allocation de ressources, économie, robotique)
Méthodes d'enseignement
Les étudiants suivront un MOOC sur la plateforme EdX (vidéos) et il y aura des exercices de programmation et des quizz notés sur inginious.
 
Modes d'évaluation
des acquis des étudiants
Janvier :
Pour la première session, la note globale du cours est uniquement basée sur les notes des projets.
Août :
Pour la deuxième session, les projets précédemment soumis ne seront pas réévalués et ne pourront pas être resoumis. À la place, un nouveau projet de programmation individuel sera assigné aux étudiants après la session de juin. Ce projet nécessitera également un rapport écrit.
Si le professeur le juge nécessaire, un entretien sur n'importe quel projet pourra aussi être organisé pour vérifier que tous les concepts théoriques sont bien compris.
Les projets sont individuels. Cela signifie que tout code source d'un projet jugé copié sur celui d'un autre étudiant entraînera une note de zéro pour l'étudiant, tant pour les projets que pour l'examen.
Les mêmes conséquences s'appliqueront à un étudiant qui partage volontairement son code ou le rend disponible à d'autres étudiants.
Néanmoins, les étudiants ont la permission d'utiliser des outils d'IA générative pour les aider dans leurs devoirs. Ces outils peuvent fournir de l'inspiration, suggérer des approches de codage ou aider à résoudre des problèmes. Mais :
Travail original : Bien que l'IA puisse être un outil, elle ne doit pas être le seul auteur de votre devoir. Votre soumission doit être principalement votre propre travail. Copier et coller directement des solutions issues des sorties de l'IA sans compréhension ni modification est déconseillé. De même, collaborer avec d'autres étudiants est une partie précieuse du processus d'apprentissage, mais copier directement le travail d'un autre étudiant est considéré comme du plagiat.
Indication de la source : Chaque fois que vous utilisez l'IA générative pour aider dans votre devoir, vous devez l'indiquer en fournissant un bref commentaire dans votre code sur la manière dont l'IA a été utilisée. Par exemple :
# IA utilisée pour suggérer une optimisation pour cette boucle. 
for i in range(10): ...
 
 
Autres infos
Des bases solides en algorithmique et structures de données sont nécessaires pour pouvoir suivre ce cours ainsi qu'une bonne maitrise de java
 
Bibliographie
Le site www.minicp.org + lectures suggérées pendant le semestre
Faculté ou entité
en charge
INFO


Programmes / formations proposant cette unité d'enseignement (UE)

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Master [120] : ingénieur civil en informatique

Master [120] en sciences informatiques

Master [120] : ingénieur civil en science des données

Master [120] en science des données, orientation technologies de l'information