Voici des notes de cours en anglais sur la programmation linéaire. Le contenu ne correspond pas tout à fait au cours du Master Informatique d'AMU, mais certaines parties se recoupent.
Les TP sont organisés en trois devoirs :
Pour le problème de découpe, il sera nécessaire d'appeler un solveur de programme linéaire depuis un programme. Pour cela on utilisera l'API de glpk. Voici un exemple de programme linéaire résolu avec glpk en C (il est fourni sous la forme d'un pdf car vous n'êtes pas supposé le copier-coller !). Vous pouvez y retrouver comment s'utilisent les principales fonctions de l'API, mais la consultation de la documentation de GLPK sera de toute façon nécessaire.
Voici des instances du problème de sac-à-dos à résoudre, avec le nombre de nœuds que mon algorithme a parcouru pour trouver la solution :
fichier | objectif maximum | nombre de nœuds calculés | nombre total de nœuds |
---|---|---|---|
sac0 | 103 | 62 | 11017 |
sac1 | 2077672 | 1013 | 1029114 |
sac2 | 2095878 | 7033 | ??? (trop gros pour le calculer) |
sac3 | 2132531 | 20605 | ??? (encore plus) |
sac4 | 2166542 | 210285 | ??? (encore plus) |
Voici des instances pour le problème de découpe. Certaines instances ont plusieurs largeurs initiales, il faut donc généraliser le programme pour pouvoir les résoudre. La première instance est celle dans le sujet.