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

Documents pareils