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