Chapitre 3: Introduction GLPK Installation GLPK (1/2)
Transcription
Chapitre 3: Introduction GLPK Installation GLPK (1/2)
20/10/2013 2013 – 2014 RCP104 Optimisation en Informatique Chapitre 3: Introduction GLPK Dr. Nazih OUWAYED [email protected] http://nouwayed.yolasite.com Installation GLPK (1/2) Téléchargement http://www.gnu.org/software/glpk/#downloading 1 2 3 2 RCP104 – Optimisation en Informatique Octobre 2013 1 20/10/2013 Installation GLPK (2/2) Configuration Déplacer le dossier décompresser glpk-4.52 dans C:\ Configurez-le en suivant les instructions \glpk-4.52\w64\readme.txt GLPK nécessite un compilateur C/C++ Turbo c++ http://turbo-c.soft32.com/ 3 RCP104 – Optimisation en Informatique Octobre 2013 Instructions GLPK (1/4) Définition Le « GNU Linear Programming Kit » (GLPK) est un outil performant pour résoudre des problèmes d'optimisation linéaire de variables continues ou mixtes (entières et continues). Ce kit est composé d'un langage de modélisation GNU MathProg et d'une librairie de fonctions C (GLPK) utilisant le solveur Glpsol. GNU MathProg qui est un sous-ensemble du langage de modélisation AMPL L'extrême avantage de ce kit est d’être en libre accès et relativement facile à installer et à utiliser 4 RCP104 – Optimisation en Informatique Octobre 2013 2 20/10/2013 Instructions GLPK (2/4) La modélisation d'un problème d'optimisation se divise en deux parties : La section Modèle contient toutes les déclarations, les paramètres calculables et les défnitions des contraintes et de l'objectif. La section Données contient toutes les données fixes (valeurs des paramètres, du contenu des ensembles). Il est recommender de séparer (mais on peut mettre modèle et données dans le même fichier .mod) les deux parties en deux fichiers : Modèle devra être sauvegardée avec l'extension .mod et les données sont placées entre les instructions data; et end; Le fichier .mod joue le rôle d'un programme principal en programmation. Données devra être sauvegardée avec l'extension avec l'extension .dat 5 RCP104 – Optimisation en Informatique Octobre 2013 Instructions GLPK (3/4) Compilation : se placer dans glpsol --options --model modele.mod --data donnees.dat glpsol --help 6 RCP104 – Optimisation en Informatique Octobre 2013 3 20/10/2013 Instructions GLPK (4/4) Plus de détails Doc GLPK – AMPL http://gnuwin32.sourceforge.net/packages/glpk.htm Cours GLPK – MathProg http://catalogue.polytechnique.fr/site.php?id=122&fileid=1811 7 RCP104 – Optimisation en Informatique Octobre 2013 Déclaration des variables Déclaration des variables param nom_du_varaiable:=valeur; Affichage display nom_du_variable ; Commentaire display nom_du_variable ; # Commentaire ex1.mod #Exemple 1: param a := 4; param b := 5; param c:=a*b;# a fois b display c; 8 ex2.mod #Exemple 2: param a := 4; param b := 5; param c:=sqrt(a*b);# racine carée de a*b display c; RCP104 – Optimisation en Informatique Octobre 2013 4 20/10/2013 Fonctions mathématiques (1/3) 9 RCP104 – Optimisation en Informatique Octobre 2013 Fonctions mathématiques (2/3) Exemple 3 Calculer le maximum entre deux variables a=sin(10) et b=sin(82) ex3.mod #Exemple 3: param a := sin(10); param b := sin(82); param c:=max(a,b);# maximum entre a et b display c; 10 RCP104 – Optimisation en Informatique Octobre 2013 5 20/10/2013 Fonctions mathématiques (3/3) ex4.mod #Exemple 4 param c:=sum{i in 1..5}2*i ; display c; 11 RCP104 – Optimisation en Informatique Octobre 2013 Vecteur (1/4) Déclaration N.B. A ajouter dans le fichier .mod set I := {1..4}; param givens{I}; Affectation d’un vecteur N.B. A ajouter à la fin de fichier .mod ou dans un fichier .dat data; param givens:= 1 36, 2 34, 3 38, 4 27; end; 12 RCP104 – Optimisation en Informatique Octobre 2013 6 20/10/2013 Vecteur (2/4) Utilisation N.B. A ajouter dans le fichier .mod param res:=givens[3]; display res; 13 RCP104 – Optimisation en Informatique Octobre 2013 Vecteur (3/4) Exemple 5 Calculer le maximum de givens{I} ex5.mod ex5.dat #Exemple 5 #Exemple 5 set I := {1..4}; param givens{I}; param res:=max{i in I}givens[i]; display res; data; 14 param givens:= 1 36, 2 34, 3 38, 4 27; end; RCP104 – Optimisation en Informatique Octobre 2013 7 20/10/2013 Vecteur (4/4) Exemple 6 4 givens (i) * 2 Calculer ∏ i =1 ex6.mod ex6.dat #Exemple 6 #Exemple 6 set I := {1..4}; param givens{I}; param res:=Prod{i in I}givens[i]*2; display res; data; 15 param givens:= 1 36, 2 34, 3 38, 4 27; end; RCP104 – Optimisation en Informatique Octobre 2013 Matrice (1/3) Déclaration N.B. A ajouter dans le fichier .mod set I := {1..4}; # nombre de lignes set J := {1..3}; # nombre de colonnes param givens{I, J}; Affectation d’une matrice N.B. A ajouter à la fin de fichier .mod ou dans un fichier .dat data; param givens : 1 2 3 4 1 2 3 := 12 13 14 16 77 88 44 55 66 13 67 98; end; 16 RCP104 – Optimisation en Informatique Octobre 2013 8 20/10/2013 Matrice (2/3) Utilisation N.B. A ajouter dans le fichier .mod param res:=givens[3,2]; display res; 17 RCP104 – Optimisation en Informatique Octobre 2013 Matrice (3/3) Exemple 7 4 3 givens(i, j ) Calculer ∑∑ i =1 j =1 #Exemple 7 ex7.mod set I := {1..4}; set J := {1..3}; param givens{I, J}; param res:=sum{i in I, j in J}givens[i,j]; display res; 18 #Exemple 7 data; param givens : 1 2 3:= 1 12 13 14 2 16 77 88 3 44 55 66 4 13 67 98; end; RCP104 – Optimisation en Informatique ex7.dat Octobre 2013 9 20/10/2013 Conditionnelle (1/2) Syntaxe : Param x:= If condition then ValeurA else ValeurB; ex8.mod #Exemple 8 param x:=1; param y:= if x>10 then 10 else 15; display y; 19 RCP104 – Optimisation en Informatique Octobre 2013 Conditionnelle (2/2) Exemple 9 Ecrire l’algorithme qui retourne 1 si la vitesse moyenne d’une voiture qui roule à 60, 100 ou 200 km/h est inférieure à la vitesse maximale et 0 dans le cas inverse. #Exemple 9 ex9.mod set I:= {1..3}; param vitesses{I}; param maxi:=max{i in I}vitesses[i]; param moy:=(sum{i in I}vitesses[i])/3; param res:= if moy<maxi then 1 else 0; display res; 20 #Exemple 9 ex9.dat data; param vitesses:= 1 60, 2 100, 3 200; end; RCP104 – Optimisation en Informatique Octobre 2013 10 20/10/2013 Opérateurs arithmétiques (1/2) 21 RCP104 – Optimisation en Informatique Octobre 2013 Opérateurs arithmétiques (2/2) Exemple 10 5 Ecrire l’algorithme pour ∑ (i * (i + 1)) / 2 + i 2 i =1 ex10.mod #Exemple 10 param c:=sum{i in 1..5}(i*(i+1))/2+i^2 ; display c; 22 RCP104 – Optimisation en Informatique Octobre 2013 11 20/10/2013 Prédicat (1/2) Exemple 11 Ecrire l’algorithme qui retourne la somme de givens{i,j} lorsque i=j ex11.mod #Exemple 11 set I := {1..4}; set J := {1..3}; param givens{I, J}; param res:=sum{i in I, j in J : i=j}givens[i,j]; display res; 23 #Exemple 11 data; param givens : 1 2 3:= 1 12 13 14 2 16 77 88 3 44 55 66 4 13 67 98; end; RCP104 – Optimisation en Informatique ex11.dat Octobre 2013 Prédicat (2/2) Exemple 12 Ecrire l’algorithme qui retourne la somme de givens{i,j} lorsque i=j et i différent de 2 #Exemple 12 ex12.mod set I := {1..4}; set J := {1..3}; param givens{I, J}; param res:=sum{i in I, j in J : i=j && i!=2}givens[i,j]; display res; 24 #Exemple 12 data; param givens : 1 2 3:= 1 12 13 14 2 16 77 88 3 44 55 66 4 13 67 98; end; RCP104 – Optimisation en Informatique ex12dat Octobre 2013 12 20/10/2013 Expressions relationnelles (1/2) 25 RCP104 – Optimisation en Informatique Octobre 2013 Expressions relationnelles (1/2) Exemple 13 Soit une matrice A=[12 15 16; 19 18 16] Calculer la valeur maximale ex13.mod ex13.dat #Exemple 13 #Exemple 13 set I := {1..2}; set J := {1..3}; param A{I, J}; param maxi:=max{i in I, j in J}A[i,j]; display maxi; data; param A: 1 2 3:= 1 12 15 16 2 19 18 16; end; 26 RCP104 – Optimisation en Informatique Octobre 2013 13 20/10/2013 Boucle (1/2) Syntaxe For(i in I){ } #Exemple 14 ex14.mod Set I:={1..2}; for{i in I} { printf "*\n"; } 27 RCP104 – Optimisation en Informatique Octobre 2013 Boucle (2/2) Exemple 15 Ecrire l’algorithme qui affiche le résultat suivant #Exemple 15 ex15.mod set I := {1..2}; set J := {1..3}; param A{I, J}; for {i in I} { for{j in J} { printf "A[%s,%s] is %g \n", i, j, A[i,j]; } } 28 #Exemple 15 ex15.dat data; param A: 1 2 3:= 1 12 15 16 2 19 18 16; end; RCP104 – Optimisation en Informatique Octobre 2013 14 20/10/2013 Optimisation (1/3) Modèle Ou Minimize A B C ex16.lp 29 RCP104 – Optimisation en Informatique Octobre 2013 Optimisation (2/3) Résolution glpsol --cpxlp ex16.lp --output ex16.sol 30 RCP104 – Optimisation en Informatique Octobre 2013 15 20/10/2013 Optimisation (3/3) Solution A B C ex16.sol 31 RCP104 – Optimisation en Informatique Octobre 2013 Références Introduction au langage de modélisation GNU MathProg (GLPK) - Romain Apparigliato - GDF-Suez, Direction de la Recherche et de l'Innovation 32 RCP104 – Optimisation en Informatique Octobre 2013 16