Vous êtes sur la page 1sur 16

20/10/2013

2013 – 2014

RCP104
Optimisation en Informatique

Chapitre 3: Introduction GLPK

Dr. Nazih OUWAYED


nazih.ouwayed@gmail.com
http://nouwayed.yolasite.com

Installation GLPK (1/2)


Téléchargement http://www.gnu.org/software/glpk/#downloading

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 ex2.mod
#Exemple 1: #Exemple 2:
param a := 4; param a := 4;
param b := 5; param b := 5;
param c:=a*b;# a fois b param c:=sqrt(a*b);# racine carée de a*b
display c; display c;

8 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}; data;


param givens{I};
param res:=max{i in I}givens[i]; param givens:= 1 36, 2 34, 3 38, 4 27;
display res; end;

14 RCP104 – Optimisation en Informatique Octobre 2013

7
20/10/2013

Vecteur (4/4)
Exemple 6 4

Calculer ∏
i =1
givens (i) * 2

ex6.mod ex6.dat
#Exemple 6 #Exemple 6

set I := {1..4}; data;


param givens{I};
param res:=Prod{i in I}givens[i]*2; param givens:= 1 36, 2 34, 3 38, 4 27;
display res; end;

15 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 :=
1 12 13 14
2 16 77 88
3 44 55 66
4 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

Calculer ∑∑
i =1 j =1
givens(i, j )

ex7.mod #Exemple 7 ex7.dat


#Exemple 7
data;
param givens : 1 2 3:=
set I := {1..4};
1 12 13 14
set J := {1..3};
2 16 77 88
param givens{I, J};
3 44 55 66
param res:=sum{i in I, j in J}givens[i,j];
4 13 67 98;
display res;
end;

18 RCP104 – Optimisation en Informatique Octobre 2013

9
20/10/2013

Conditionnelle (1/2)
Syntaxe :
Param x:= If condition then ValeurA else ValeurB;

#Exemple 8 ex8.mod

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 ex9.dat
#Exemple 9
set I:= {1..3};
param vitesses{I};
data;
param maxi:=max{i in I}vitesses[i];
param moy:=(sum{i in I}vitesses[i])/3;
param vitesses:= 1 60, 2 100, 3 200;
param res:= if moy<maxi then 1 else 0;
end;
display res;

20 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 ex11.dat


#Exemple 11
data;
param givens : 1 2 3:=
set I := {1..4};
1 12 13 14
set J := {1..3};
2 16 77 88
param givens{I, J};
3 44 55 66
param res:=sum{i in I, j in J : i=j}givens[i,j];
4 13 67 98;
display res;
end;

23 RCP104 – Optimisation en Informatique 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 #Exemple 12 ex12dat
data;
set I := {1..4}; param givens : 1 2 3:=
set J := {1..3}; 1 12 13 14
param givens{I, J}; 2 16 77 88
param res:=sum{i in I, j in J : i=j && 3 44 55 66
i!=2}givens[i,j]; 4 13 67 98;
display res; end;

24 RCP104 – Optimisation en Informatique 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}; data;


set J := {1..3}; param A: 1 2 3:=
param A{I, J}; 1 12 15 16
param maxi:=max{i in I, j in J}A[i,j]; 2 19 18 16;
display maxi; 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 #Exemple 15 ex15.dat


set I := {1..2};
set J := {1..3};
param A{I, J}; data;
for {i in I} param A: 1 2 3:=
{ 1 12 15 16
for{j in J} 2 19 18 16;
{ end;
printf "A[%s,%s] is %g \n", i, j, A[i,j];
}
}
28 RCP104 – Optimisation en Informatique Octobre 2013

14
20/10/2013

Optimisation (1/3)
Modèle
Ou Minimize
A

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

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

Vous aimerez peut-être aussi