contexte
En janvier 2010, je devais valider 4 cours à Paris VIe pour terminer mon diplome d'informaticien de l'Université de Montréal:
Aussi, devant faire face à mes obligations financières, je devais travailler à temps partiel pendant le semestre. C'est pourquoi, le choix de cours est pour moi un enjeu majeur afin de me libérer stratégiquement pour l'emploi et ce un maximum de jours par semaine.

Formulation
La fonction "objectif" à minimiser est donc le nombre de jours par semaine ou l'étudiant suis des cours Il s'agit donc de trouver le meilleur agencement de cours sujet aux contrantes suivantes:
  1. Un des cours doit être "Principes des sytèmes d'exploitation "
  2. Un des cours doit être "Applications et interfaces homme-machine "
  3. Les 2 autres cours doivent être choisis et ce parmi les cours offerts en licence 3  (Je croyais au départ envisageable de planifier des unités d'enseignement de niveau master comme ce fut le cas à l'automne 2009 mais je m'en suis tenu à celles de la licence pour différentes raisons administratives entre autres.).
  4. Les 2 cours à options sont en outre sensé plus ou moins équivaloir à 2 cours à options de l'Université de Montréal et doivent me permettre d'élargir mes horizons en vue du 2e cycle.
  5. Il faut aussi choisir un horaire pour ces cours dans l'emploi du temps de la licence en tant que tel.
Résolution
Je trouvais la tache fastidieuse à réaliser à la main alors je me suis fait aidé par mon ordinateur. Le résultat n'est pas immédiat mais le code source que j'ai écrit en Java m'a permis de générer les grilles horaires suivantes: Ces grilles m'ont ensuite servi comme support à la révision de ma décision instinctive initiale. Il s'agit en quelques sortes d'un problème de recherche opérationnelle intéressants à différents égards. J'ai en définitive obtenu des bons résultats globaux et suis satisfait des cursus sélectionnés;