AMPL données Aut. 04

Transcription

AMPL données Aut. 04
MTH 6414 : Outils et logiciels en recherche opérationnelle
Optimisation mathématique & Gestion des
données.
Accès aux données dans AMPL
Alberto Amaya, doctorant
et Fabien Marzolf M.Sc.A.
MTH 6414 – Aut-04
1
PLAN
Introduction
1. S.I. et structures de données
2. Fonctionnement d’AMPL
3. Utilisation d’AMPL
4. Stockage de données -SGBD
5. Données sous forme de tableau
6. Utilisation de fichiers *.tab
7. Utilisation du SQL
8. Automatisation
Conclusion
Références
MTH 6414 – Aut-04
2
1
1. Introduction
La programmation mathématique ≠ résolution
d’un algorithme et impression de la solution
optimale :
formuler le modèle, ensemble de variables, objectifs et
contraintes représentant le problème ;
collecter les données relatives au problème ;
générer la fonction objectif et les contraintes en
adéquation avec le modèle et les données ;
résoudre ;
analyser les résultats ;
raffiner l’ensemble et re-résoudre.
MTH 6414 – Aut-04
3
1. Introduction
AMPL est un langage de modélisation orientéobjet qui permet d’améliorer ce processus :
une écriture compacte et « naturelle » du modèle
mathématique ;
une séparation du modèle et des données (le modèle est
indépendant des données) ;
une construction adéquate de la matrice des coefficients
(contraintes) par une interaction avec divers systèmes
informationnels ;
une représentation et une analyse des résultats facilitées
par cette interaction.
MTH 6414 – Aut-04
4
2
2. Le fonctionnement d’AMPL
Interconnectivité
Il est possible d’utiliser différents supports pour la gestion
des données (Microsoft Excel, Microsoft Access, Fichiers de
type texte).
L’accès aux données est géré par ODBC (Open Database
Connectivity).
Tous ces liens sont gérés par le système d’exploitation
(ODBC32 pour Windows) : on n’a rien à faire !
MTH 6414 – Aut-04
5
2. Le fonctionnement d’AMPL
Échange de l’information
Modèle
*.mod
Fichier AMPL
*.nl
AMPL
Solveur
Données
fichier
*.sl
MTH 6414 – Aut-04
6
3
2. Le fonctionnement d’AMPL
Accès aux données
Fichiers texte
*.tab / *.dat
MS Access
*.mdb
BD
Relationnelle
AMPL
Tableurs Excel
*.xls
MTH 6414 – Aut-04
7
2. Le fonctionnement d’AMPL
Eléments d’un modèle
set Nodes;
set Roads within {i in Nodes, j in Nodes};
param time {Roads};
param cap{Roads};
}
} Ensembles
Paramètres
var Use {(i,j) in Roads} >= 0;
}
Variables
minimize Total_Time:
sum {(i,j) in Roads} time[i,j] * Use[i,j];
}
subject to Balance {k in Nodes diff {input,output}}:
Objectif
} Contraintes
sum {(i,k) in Roads} Use[i,k] = sum {(k,j) in Roads} Use[k,j];
…
MTH 6414 – Aut-04
Morceau du fichier pcc1.mod
8
4
Exemple #1
a
b
c
d
Les données (ensembles et paramètres) sont
stockées dans un fichier *.dat (type texte)
MTH 6414 – Aut-04
9
Exemple #1 : fichier de données
MTH 6414 – Aut-04
10
5
Exemple #1 : Ligne de commandes d’AMPL
ampl: model pcc1.mod;
ampl: data pcc1.dat;
ampl: option solver cplex;
ampl: solve;
ampl: display Total_Time > pcc1.txt
ampl: display Use > pcc1.txt
Modèle
*.mod
Fichier AMPL
*.nl
AMPL
Données
Solveur
fichier
*.sl
MTH 6414 – Aut-04
11
3. Utilisation d’AMPL
On a utilisé la « ligne de commande »
Mais, on peut utiliser AMPL en mode
« batch » (traitement séquentiel ou
par lots)
Avec un fichier “script”
MTH 6414 – Aut-04
12
6
3. Utilisation d’AMPL
Fichiers scripts
Fichier texte (*.run ou autre) qui contient
l’ensemble de instructions qui devront être
exécutées à répétition par l’ordinateur.
Similaire à un programme informatique (script)
qui va appeler les différentes parties de votre
modélisation du problème.
MTH 6414 – Aut-04
13
3. Utilisation d’AMPL
Fichiers scripts
Similaire à un langage de programmation ( pas
très développé) avec boucles, tests, etc…:
If condition then {
let x= x+1;
display variable;
… …..
} else {
………
};
MTH 6414 – Aut-04
for {a in UN_ENSEMBLE} {
………
};
repeat { . . . } while time[3].dual > 0;
repeat { . . . } until time[3].dual = 0;
14
7
3. Utilisation d’AMPL
Fichiers scripts
Fichier texte qui représente le « noyau », i.e le
lien entre le modèle, le solveur et les
données.
SVP voir le Document préparé par Nathalie PERRIER et le
site http://www.ampl.com/NEW/loop1.html
MTH 6414 – Aut-04
15
Exemple #2
Les données (ensembles et paramètres) sont
stockées dans un fichier *.dat (type texte)
On roule l’AMPL en mode batch (utilisant un
fichier script)
MTH 6414 – Aut-04
16
8
Exemple #2 : utilisation d’un fichier script
MTH 6414 – Aut-04
17
4. Stockage des DONNÉES
Les données « numériques » sont pour
l’instant stockées dans des fichiers de
type texte (*.dat).
L’écriture de ces fichiers n’est pas
conviviale
L’analyse des résultats est fastidieuse.
L’utilisation des systèmes informationnels
Excel et/ou Access est adéquate pour
pallier ces problèmes.
MTH 6414 – Aut-04
18
9
4. Stockage des DONNÉES
Dans le cas d’un SGBD (MS Access), il faut créer
un modèle relationnel « classique » afin de
stocker l’information (Tables, Clés, Relations).
MTH 6414 – Aut-04
19
4. Stockage des DONNÉES
La structure de AMPL (sets , paramètres)
permet de faciliter l’interaction avec des
bases de données relationnelles
Avec les instructions read table et write
table on peut importer et exporter
données vers AMPL.
MTH 6414 – Aut-04
20
10
Exemple # 3
Les données sont stockées dans un fichier *.mdb
(dans le SGBD ACCESS de Microsoft)
On roule l’AMPL en mode batch (utilisant un
fichier script)
MTH 6414 – Aut-04
21
Exemple #3 : Données
MTH 6414 – Aut-04
22
11
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
Définition des tables
Lecture des tables
Résolution : appel du solveur
Écriture dans les tables de sorties
MTH 6414 – Aut-04
23
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
Définition des tables
Voir fichier
fichier
pcc1.mdb.run
pcc1.mdb.run
Voir
Lecture des tables
Résolution : appel du solveur
Écriture dans les tables de sorties
MTH 6414 – Aut-04
24
12
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
*************************
*************************
Définition des tables
modelpcc1.mod;
pcc1.mod;
model
Lecture
dessolver
tables cplex;
option
solver
cplex;
option
Résolution : appel du solveur
Écriture dans les tables de sorties
MTH 6414 – Aut-04
25
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
Définition des tables
table origs
origs IN
IN "ODBC"
"ODBC" "pcc1.mdb"
"pcc1.mdb" "nodes":
"nodes":
table
Lecture Nodes
des tables<- [name];
Nodes <[name];
Résolution : appel du solveur
table arcs
arcs IN
IN "ODBC"
"ODBC" "pcc1.mdb"
"pcc1.mdb" "roads":
"roads":
table
Roads <<- [from,to],
[from,to], time,cap;
time,cap;
Roads
Écriture
dans les tables
de sorties
MTH 6414 – Aut-04
26
13
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
Définition des tables
table use
use OUT
OUT "ODBC"
"ODBC" "pcc1.mdb"
"pcc1.mdb" "use":
"use":
table
LectureRoads
des tables
Roads
-> [from,to],
[from,to], Use;
Use;
->
Résolution
: appel
du solveur
table cost
cost
OUT
"ODBC" "pcc1.mdb"
"pcc1.mdb" "cost":
"cost":
table
OUT
"ODBC"
],Total_Time;
[[ ],Total_Time;
Écriture dans les tables de sorties
MTH 6414 – Aut-04
27
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
readtable
tableorigs;
origs;
read
readtable
tablearcs;
arcs;
read
Définition des tables
let output:='d';
letinput:='a';
input:='a';
let
let output:='d';
Lecture
des tables
Résolution : appel du solveur
solve;
solve;
Écriture dans les tables de sorties
MTH 6414 – Aut-04
28
14
Exemple #3 : script
Structure des fichiers scripts
{Options}
Modèles
writetable
tableuse
use; ;
write
Définition des tables
writetable
tablecost
cost; ;
write
Lecture des tables
displayTotal_Time
Total_Time ;
display
Résolution
: appel du solveur ;
Écriture dans les tables de sorties
MTH 6414 – Aut-04
29
Tables
Définition des tables
Table Nom IN/
IN/ OUT/
OUT/ INOUT “ODBC”
ODBC” “nom.ext”
“nomtable”
nomtable” :
set <- / -> / <-> [champ] , param
IN/OUT/INOUT : lecture, écriture dans la table
set <- [champ] : dé
définition de l’l’ensemble et du sens de
l’information (lecture ou écriture de l’l’ensemble)
Lire = read table nom ;
Écrire = write table nom ;
MTH 6414 – Aut-04
30
15
5. DONNÉES sous forme de tableau
Disposition des données.
L’écriture utilisée jusqu’à présent nécessite
l’écriture en « colonnes » des ensembles et
des paramètres.
Il est possible de disposer les données (IN &
OUT) sous forme de tableau :
MTH 6414 – Aut-04
31
Exemple # 4
Les données sont stockées dans un fichier *.xls
(dans la feuille de calcul EXCEL de Microsoft)
On roule l’AMPL en mode batch (utilisant un
fichier script)
MTH 6414 – Aut-04
32
16
Exemple #4: Structure des données en Excel
MTH 6414 – Aut-04
33
Exemple 4: définition « d’une table » Excel
Excel est un chiffrier donc possède une structure
particulière (feuille de calcul).
Il faut ainsi configurer la plage de données pour y
avoir accès (créer une « table ») :
Sélectionner vos données
Insertion → Nom → Définir
Le nom que vous spécifiez fera office de nom de
table. Le nom du champ est l’entête de la
colonne.
MTH 6414 – Aut-04
34
17
Exemple 4: définition « d’une table » Excel
Exemple de définition d’une table
MTH 6414 – Aut-04
35
Exemple #4: fichier script
MTH 6414 – Aut-04
36
18
Exemple #4: fichier script
modelpcc2.mod;
pcc2.mod;
model
optionsolver
solvercplex;
cplex;
option
paramcost{Nodes,Nodes};
cost{Nodes,Nodes};
param
MTH 6414 – Aut-04
37
Exemple #4: fichier script
<..> Génération de n
colonnes
En-tête des
colonnes
première
colonne
tableorigs
origsININ"ODBC"
"ODBC""pcc2.xls"
"pcc2.xls""length":
"length":
table
Nodes<-<-[Nodes];
[Nodes];
Nodes
tablelength
lengthININ"ODBC"
"ODBC""pcc2.xls":
"pcc2.xls":
table
Nodes} }->->[Nodes],
[Nodes],
{i{iininNodes
Nodes} }<<long[i,j]
long[i,j] ~~(j)(j)>;>;
{j{jininNodes
MTH 6414 – Aut-04
38
19
Exemple #4: fichier script
tabledistance
distanceOUT
OUT"ODBC"
"ODBC""pcc2Tmp.xls":
"pcc2Tmp.xls":
table
Nodes} }->->[cost],
[cost],
{i{iininNodes
Nodes} }<<ififi!=
i!=j jthen
then cost[i,j]
cost[i,j]~~(j)(j)>;>;
{j{jininNodes
MTH 6414 – Aut-04
39
Exemple #4: fichier script
#########################################################
#########################################################
#
# # Résolution
#
# Résolution
#
#########################################################
#########################################################
#
#
for{i{iininNodes}
Nodes}{ {
for
for{j{jininNodes
Nodesdiff
diff{i}}
{i}}{ {
for
letoutput:=j;
output:=j;
let
letinput:=i;
input:=i;
let
solve;
solve;
letcost[input,output]
cost[input,output]:=:=totLong;
totLong;
let
};};
};};
MTH 6414 – Aut-04
40
20
Exemple #4: conclusion
pcc2.xls
pcc2Tmp.xls
AMPL
pcc(i,j)
MTH 6414 – Aut-04
41
6. Utilisation de fichiers *.tab
L’utilisation des fichiers de type texte (*.tab) est
peu conviviale mais est quelquefois nécessaire.
Le format est pareil à celui d’une table mais en
mode texte.
ensemble
ampl.tab 2 1
ORIG
DEST
N156
N160
N156
N161
N162
N160
N162
N161
MTH 6414 – Aut-04
paramètres
cout
175.5993
366.0594
308.29
498.7501
42
21
7. Utilisation du SQL
Utilisation du SQL
Structured Query Language : langage servant à accéder et
à manipuler les données.
Dans notre cas, principalement des instructions du type :
select champs from table where conditions
table cheapFoods IN "ODBC" "diet.mdb"
"SQL=SELECT * FROM Aliments WHERE cost <= 2.49":
FOOD <<- [FOOD], cost, f_min, f_max;
MTH 6414 – Aut-04
43
8. Automatisation
Automatiser le traitement dans le cas où l’on désire faire
de multiples résolutions afin d’analyser le comportement
du modèle face à la variation d’un ou plusieurs
paramètres.
« Programmation » à l’aide de boucle, tests, etc…
MTH 6414 – Aut-04
44
22
Exemple #5: utilisation de VBA-Excel
MTH 6414 – Aut-04
45
Exemple #5: utilisation de VBA-Excel
Voir fichier
Pcc2.xls
MTH 6414 – Aut-04
46
23
Exemple #5: L’interface utilisée
MS Excel
pcc2.xls
MSDOS
runAMPL.bat
CPLEX
VBA
VBA
AMPL
pcc2.mod
Script
pcc2.xls.run
pcc2Tmp.xls
MTH 6414 – Aut-04
47
Conclusion
L’utilisation d’un système informationnel facilite
le stockage et le traitement de l’information
décrivant un problème.
L’utilisation d’un langage de modélisation
« évolué » comme AMPL permet de produire
efficacement et rapidement une bonne analyse de
la problématique étudiée.
Il faut faire preuve d’imagination mais également
de beaucoup de rigueur et de débrouillardise !
MTH 6414 – Aut-04
48
24
Références
Le livre
« AMPL : A Modeling Language for Mathematical
Programming » Fourer,
Fourer, Gay, Kernighan
Site Web d’AMPL
http://www.ampl.com
http://www.ampl.com/NEW/tables.html
http://www.ampl.com
/NEW/loop1.html
http://www.ampl.com/NEW/loop1.html
Liste des suffixes
http://www.ampl.com/cm/cs/what/ampl/NEW/suffbuiltin.html
Un bon site sur les dB et le SQL
http://wwwlsi.supelec.fr
/www/yb
yb//poly_bd/
http://wwwlsi.supelec.fr/www/
poly_bd/sql/
sql/carte.image
map?20,90
map?20,90
MTH 6414 – Aut-04
49
Références
Système d’information
« Conception de systèmes d’information » Trépanier,
Lapierre,
Lapierre, Baudot, Marzolf.
« Le développement de systèmes d’information » Rivard,
Rivard,
Talbot
Access
http://www.mvps.org
http://www.mvps.org//accessfr/
accessfr/resources/
resources/downloads.htm
MTH 6414 – Aut-04
50
25