Advanced Algorithms for Optimization

linfo2266  2026-2027  Louvain-la-Neuve

Advanced Algorithms for Optimization
5.00 crédits
30.0 h + 15.0 h
Q1
Enseignants
Préalables
Requis : notions approfondies d'algorithmique et de programmation orientée objets telles que visées par le cours LEPL1402 
Requis : notions approfondies d'algorithmique et structures de données telles que visées par le cours LINFO1121 
Thèmes abordés
  • exploration d'arbres de recherche
  • branch and bound
  • relaxation (lagrangienne) et calcul de bornes
  • la recherche locale
  • la programmation mathématique
  • la programmation par contrainte
  • algorithmes de graphes,
  • les recherches à voisinage large
  • la programmation dynamique
  • les algorithmes gloutons et algorithmes approchés
  • l'optimisation multicritères
  • l'optimisation sans dérivée
  • comparaison d'algorithmes
Ces méthodes seront appliquées sur des problèmes réels de type routing de véhicules, rostering et confection d' horaires, design de réseau, ordonnancement et scheduling, etc.
Acquis
d'apprentissage

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

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 :
  • AA1.1: Confronté à un problème informatique, il identifie les concepts, algorithmes et structures de données applicables pour le résoudre; et il en tire parti pour décomposer le problème en sous-problèmes et élaborer des méthodes de résolution informatique de ces derniers.
  • AA1.3: Confronté aux résultats obtenus par le raisonnement et la mise en oeuvre des outils et concepts qu’il a mobilisés, il prend le recul nécessaire pour en vérifier la pertinence, en ce qui concerne les fonctionnalités et la qualité de la solution recherchée. Dans ce contexte, il développera des tests et des vérifications pertinents qui peuvent garantir la qualité de la solution développée.
  • AA2.4: Dans la phase d’implémentation de la solution, il démontre sa maîtrise des principes, techniques et outils de développement à sa disposition. Il crée un prototype du logiciel à concevoir pour vérifier que le logiciel correspond bien aux attentes du client. Il crée un environnement et une batterie de tests pour s’assurer que la solution développée répond aux fonctionnalités du cahier des charges. En appliquant les techniques de validation et de vérification de programme, il identifie, localise les bugs (bogues) et y remédie.
  • AA5.4: Il sait se servir d’un ouvrage de référence ou d’un manuel relatif à l’emploi d’un langage informatique ou d’un logiciel, tant en anglais qu’en français. Il comprend un exposé technique fait en anglais.
  • AA5.5: Au cours du développement d’une application informatique, il en assure la traçabilité et la documentation dans un langage concis et précis : cahier des charges, structure du logiciel et des données qui y sont liées, mode opératoire. Il fait de même quand il s'agit de rédiger un rapport de synthèse décrivant et argumentant les choix (design et technologie) opérés dans le développement d’un projet.
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 :
  • AA1: démontrer la maîtrise d’un solide corpus de connaissances en informatique, lui permettant de résoudre les problèmes qui relèvent de sa discipline
  • AA2.1: Analyser le problème à résoudre ou les besoins fonctionnels à rencontrer et formuler le cahier des charges correspondant.
  • AA2.2: Modéliser le problème et concevoir une ou plusieurs solutions techniques originales répondant à ce cahier des charges.
  • AA2.4: Implémenter et tester la solution retenue.
  • AA3.2: Proposer une modélisation et/ou un dispositif expérimental permettant de simuler et de tester des hypothèses relatives au problème étudié dans toute sa complexité.
  • AA6.5: S’autoévaluer et développer de manière autonome les connaissances nécessaires pour rester compétent dans son domaine.
Les étudiants ayant suivi avec fruit ce cours seront capables de:
  • expliquer les algorithmes de résolution des problèmes d'optimisation discrets en les décrivant précisément, en précisant les problèmes qu'ils permettent de résoudre, en indiquant leurs avantages, inconvénients et limites (temps de calcul, exactitude, problèmes de passage à l'échelle, etc);
  • identifier les algorithmes qui s'appliquent à un problème d'optimisation discret auquel on est confronté et faire un choix argumenté parmi ceux-ci;
  • implémenter les algorithmes permettant de résoudre des problèmes d'optimisation discrets;
  • évaluer et comparer les différents algorihtmes d'optimisation.
 
Contenu
Ce cours présente une série de techniques pour des solutions exactes et approximatives aux problèmes d'optimisation combinatoire. Parmi les techniques :
  • programmation dynamique
  • branch and bound
  • programmation linéaire
  • relaxation Lagrangienne
  • génération de colonnes
  • recherche locale
  • programmation par contrainte
  • algo de graphes: problème de max flow
  • A* et ses variantes pour l'optimisation
  • comparaison d'algoritthmes d'optimisation
Utilisation de ces méthodes sur des problèmes réels: tournées de véhicules, ordonnancement, confection d'horaire, design de réseau, etc.
 
 
Méthodes d'enseignement
La présentation des algorithmes sera soit proposée sous forme de cours magistraux, de vidéos ou de lecture et sera accompagnée de travaux pratiques (devoirs/micro-projets) sollicitant la mise en œuvre d'algorithmes pour résoudre un problème pratique d'optimisation et la rédaction de rapports.
 
Modes d'évaluation
des acquis des étudiants

Janvier— Première session

La note de janvier est constituée de deux parties indépendantes de 10 points, pour un total de 20 points :
  • 10 points de pratique ;
  • 10 points de théorie.

Partie pratique — 10 points

Les 10 points de pratique peuvent être obtenus selon deux modalités :
  • soit en réussissant l’examen pratique sur INGInious, organisé en fin de quadrimestre pendant deux heures ;
  • soit en réussissant la partie pratique de programmation sur papier de l’examen de janvier.
L’épreuve INGInious porte sur les projets de programmation réalisés pendant le quadrimestre.
Un échec à l’épreuve INGInious ne fait donc pas perdre les 10 points de pratique : l’étudiant peut encore obtenir ces points lors de la partie pratique sur papier de l’examen de janvier.
Il est néanmoins dans l’intérêt de l’étudiant de participer à l’épreuve INGInious et de tenter de la réussir. En cas de réussite, les 10 points de pratique sont acquis avant l’examen de janvier, ce qui permet à l’étudiant de se concentrer sur la partie théorique lors de l’examen papier et de réduire ainsi la matière de programmation à préparer.

Partie théorique — 10 points

Les 10 points de théorie sont évalués lors de l’examen sur papier de janvier.
L’examen peut notamment comporter des questions portant sur les projets réalisés pendant le quadrimestre et sur leur code source.

Août — Deuxième session

En deuxième session, l’examen est entièrement organisé sur papier et reste divisé en deux parties de 10 points :
  • 10 points de théorie ;
  • 10 points de pratique, sous forme de programmation sur papier.
La partie pratique de l’examen d’août correspond aux 10 points qui étaient initialement évalués par l’épreuve INGInious.
En revanche, les 10 points de pratique correspondant à la partie programmation sur papier de janvier ne sont pas reportables séparément en août.
 Théorie
Pratique
Total
Janvier
10 pts sur papier
10 pts via INGInious ou programmation sur papier
20 pts
Août
10 pts sur papier
10 pts de programmation sur papier (report de la partie INGInious)
20 pts

Conditions des épreuves

Toutes les épreuves sont individuelles. Aucune collaboration, communication ou aide extérieure n’est autorisée pendant les épreuves.
L’utilisation d’IA génératives est strictement interdite pendant l’épreuve INGInious ainsi que pendant les examens sur papier, en janvier comme en août.
Les étudiants doivent donc réaliser les épreuves individuellement et sans utiliser d’outil d’IA générative.
L’épreuve INGInious constitue ainsi une opportunité sans risque en janvier : en cas d’échec, l’étudiant peut encore obtenir ses 10 points de pratique grâce à la programmation sur papier en janvier. En cas de réussite, il valide directement cette partie et bénéficie d’une matière de programmation réduite pour l’examen de janvier.
Autres infos
Préalables: un background solide en algorithmique et structure de données (par exemple acquis via le cours LINFO1121) et un bonne maitrise du langage Java
 
 
 
Faculté ou entité
en charge


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