Le langage AMPL - Informatique
Transcription
Le langage AMPL - Informatique
Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Le langage AMPL Jean-Pierre Dussault1 Départment d’informatique Université de Sherbrooke 1 email: [email protected] Club info Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Diète Simpliste Un producteur de bétail utilise trois types de grains pour nourrir ses animaux ; les grains coûtent respectivement 41, 35 et 96 cents la livre. Il doit s’assurer que les animaux ont suffisamment de 4 types de nutriments, c’est-à-dire 1250, 250, 900 et 232.5 onces par semaine. Il connaı̂t les quantités de chaque nutriment dans chaque type de grain (en onces par livre) : grain1 grain2 grain3 nutriment#1 2 3 7 nutriment#2 1 1 0 nutriment#3 5 3 0 nutriment#4 1.5 1.2 1 Il souhaite satisfaire la bonne nutrition de ses animaux le moins cher possible. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Entités importantes 1 donnée : besoins nutritionnels b = (1250, 250, 900, 232, 5) ; 2 donnée : coût de chaque grain c = (41, 35, 96) ; 3 donnée : quantités denutriments par sorte de grain 2 3 7 1 1 0 ; Q= 5 3 0 1.5 1.2 1 variables de décisions : quantités de chacune des 3 sortes de grain, x1 , x2 , x3 ; 4 5 restriction implicite : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Entités importantes 1 donnée : besoins nutritionnels b = (1250, 250, 900, 232, 5) ; 2 donnée : coût de chaque grain c = (41, 35, 96) ; 3 donnée : quantités denutriments par sorte de grain 2 3 7 1 1 0 ; Q= 5 3 0 1.5 1.2 1 variables de décisions : quantités de chacune des 3 sortes de grain, x1 , x2 , x3 ; 4 5 restriction implicite : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Entités importantes 1 donnée : besoins nutritionnels b = (1250, 250, 900, 232, 5) ; 2 donnée : coût de chaque grain c = (41, 35, 96) ; 3 donnée : quantités denutriments par sorte de grain 2 3 7 1 1 0 ; Q= 5 3 0 1.5 1.2 1 variables de décisions : quantités de chacune des 3 sortes de grain, x1 , x2 , x3 ; 4 5 restriction implicite : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Entités importantes 1 donnée : besoins nutritionnels b = (1250, 250, 900, 232, 5) ; 2 donnée : coût de chaque grain c = (41, 35, 96) ; 3 donnée : quantités denutriments par sorte de grain 2 3 7 1 1 0 ; Q= 5 3 0 1.5 1.2 1 variables de décisions : quantités de chacune des 3 sortes de grain, x1 , x2 , x3 ; 4 5 restriction implicite : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Entités importantes 1 donnée : besoins nutritionnels b = (1250, 250, 900, 232, 5) ; 2 donnée : coût de chaque grain c = (41, 35, 96) ; 3 donnée : quantités denutriments par sorte de grain 2 3 7 1 1 0 ; Q= 5 3 0 1.5 1.2 1 variables de décisions : quantités de chacune des 3 sortes de grain, x1 , x2 , x3 ; 4 5 restriction implicite : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Éléments du modèle Formulation mathématique min 41x1 + sujet à 2x1 x1 5x1 1.5x1 x1 35x2 + 96x3 + 3x2 + + x2 + 3x2 + 1.2x2 + , x2 , Jean-Pierre Dussault 7x3 ≥ 1250; ≥ 250; ≥ 900; x3 ≥ 232.5; x3 ≥ 0. Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL var x1; var x2; var x3; minimize cost: subject to Bornex1: Bornex2: Bornex3: 41*x1 + A: B: C: D: 2*x1 x1 5*x1 1.5*x1 35*x2 + 96*x3; + 3*x2 + + x2 + 3*x2 + 1.2*x2 + x1 x2 Jean-Pierre Dussault Le langage AMPL 7*x3 >= 1250; >= 250; >= 900; x3 >= 232.5; >= >= x3 >= 0; 0; 0; Un exemple de diète simple Généralisation Le langage et l’implantation AMPL La situation Formulation mathématique Traduction AMPL La traduction est directe. La fonction économique est nommée (cost), et chacune des contraintes également (A, B, C, D, Bornex1, Bornex2, Bornex3). Un langage ne serait pas nécessaire pour formuler un problème spécifique. Voyons l’abstraction de ce problème. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Modèle plus abstrait Formulation mathématique I t Utilisons 900, 232, 5) , c = (41, 35, 96) et b = (1250, 250, 2 3 7 1 1 0 pour récrire Q= 5 3 0 1.5 1.2 1 min c 1 x1 + c 2 x2 + c 3 x3 sujet à Q11 x1 Q21 x1 Q31 x1 Q41 x1 x1 + + + + , Q12 x2 + Q13 x3 Q22 x2 Q32 x2 Q42 x2 + Q43 x3 x2 , x3 Jean-Pierre Dussault Le langage AMPL ≥ ≥ ≥ ≥ ≥ b1 ; b2 ; b3 ; b4 ; 0. Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Modèle plus abstrait Formulation mathématique II ou encore min P3 sujet à P3 Q1i xi Pi=1 3 Q2i xi Pi=1 3 Q3i xi Pi=1 3 i=1 Q4i xi x i=1 Jean-Pierre Dussault c i xi ≥ ≥ ≥ ≥ ≥ Le langage AMPL b1 ; b2 ; b3 ; b4 ; 0. Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Modèle plus abstrait Formulation mathématique III ou finalement min P3 c i xi sujet à P3 Qji xi x i=1 i=1 ≥ bj ; ∀j = 1, 2, 3, 4 ≥ 0. On a donc les données c, b, Q et les variables de décision x. Les coûts c concernent un ensemble d’aliments (grains) et les besoins b concernent un ensemble de nutriments. Emprumptons de l’anglais les noms FOOD et NUTR pour ces ensembles. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Modèle plus abstrait Formulation mathématique IV On peut écrire min P c i xi sujet à P Qji xi x ∀i∈FOOD ∀i∈FOOD Jean-Pierre Dussault ≥ bj ; ∀j ∈ NUTR ≥ 0. Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait set NUTR; set FOOD; param c {FOOD} > 0; param b {NUTR} >= 0; param Q {NUTR,FOOD} >= 0; var x {j in FOOD} >= 0; minimize total_cost: sum {i in FOOD} c[i]*x[i]; subject to diet{j in NUTR}: sum {i in FOOD} Q[j,i]*x[i] >= b[j]; Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Ceci constitue la moitié de la traduction AMPL du problème, le modèle. On le conserve habituellement dans un fichier d’extension “.mod”, diet.mod dans ce cas. Les valeurs specifiques pour un problème donné sont fournies dans un fichier d’extension “.dat”, diet.dat dans notre cas. diet.dat fournit les valeurs pour les ensembles NUTR et FOOD, les vecteurs c et b, ainsi que la matrice Q. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait set NUTR := A B C D; set FOOD := grain1 grain2 grain3 ; param: c param: D b := A 232.5 ; param A B C D Q: grain1 2 1 5 1.5 := grain1 41 grain2 1250 B grain2 3 1 3 1.2 Jean-Pierre Dussault grain3 7 0 0 1; 35 grain3 250 C := Le langage AMPL 96 900 ; Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait Modèle plus général Bornes Il est de bonne guerre de spécifier des bornes sur la plupart des quantités du modele. P3 min c i xi i=1 sujet à bmaxj xmax ≥ ≥ P3 i=1 Qji xi Jean-Pierre Dussault x ≥ bminj ; ∀j = 1, 2, 3, 4 ≥ xmin . Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait set NUTR; set FOOD; param c {FOOD} > 0; param x_min {FOOD} >= 0; param x_max {j in FOOD} >= x_min[j]; param b_min {NUTR} >= 0; param b_max {i in NUTR} >= b_min[i]; param Q {NUTR,FOOD} >= 0; var x {j in FOOD} >= x_min[j], <= x_max[j]; minimize total_cost: sum {j in FOOD} c[j] * x[j]; subject to diet {i in NUTR}: b_min[i] <= sum {j in FOOD} Q[i,j] * x[j] <= b_max[i]; Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait On peut maintenant reformuler le modèle de départ en spécifiant des valeurs pour ce modèle plus abstrait. On utilise encore un fichier d’extension “.dat” pour ça. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL set NUTR set FOOD param: grain1 grain2 grain3 param: A B C D param Q: A B C D Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait := A B C D; := grain1 grain2 grain3 ; c x_min x_max := 41 0 Infinity 35 0 Infinity 96 0 Infinity ; b_min b_max := 1250 Infinity 250 Infinity 900 Infinity 232.5 Infinity ; grain1 grain2 grain3 := 2 3 7 1 1 0 5 3 0 1.5 1.2 1; Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait On peut maintenant utiliser le modèle avec des données un peu moins simplistes. Il s’agit toujours d’un problème simpliste, mais qui se rapproche légèrement d’une situation réelle. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait set NUTR := A B1 B2 C ; set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; param: BEEF CHK FISH HAM MCH MTL SPG TUR c 3.19 2.59 2.29 2.89 1.89 1.99 1.99 2.49 param: A C B1 b_min 700 700 700 x_min 0 0 0 0 0 0 0 0 x_max := 100 100 100 100 100 100 100 100 ; b_max := 10000 10000 10000 Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL B2 700 param Q (tr): A BEEF 60 CHK 8 FISH 8 HAM 40 MCH 15 MTL 70 SPG 25 TUR 60 Aspects du langage Implantation 10000 ; C 20 0 10 40 35 30 50 20 B1 10 20 15 35 15 15 25 15 B2 := 15 20 10 10 15 15 15 10 ; Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Richesse expressive pour définir des ensembles : opérations (union, inter, diff, cross) ; ensembles ordonnés, circulaires ; ensembles d’ensembles. Facilités pour définir des modèles non-linéaires. Syntaxe spécialisée pour certains modèles : réseaux ; complémentarité. Instructions de contrôle : if--then--else, for, etc. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Plan 1 Un exemple de diète simple La situation Formulation mathématique Traduction AMPL 2 Généralisation Abstraction du modèle simple Séparation du modèle et des données Généralisation du modèle abstrait 3 Le langage et l’implantation AMPL Aspects du langage Implantation Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Interface : doit utiliser un “solveur” pour effectivement résoudre les problèmes ; Pré-solve simplifie les problèmes avant de les soumettre aux solveurs ; Possibilités variées pour communiquer avec les solveurs Interface commune pour de nombreux solveurs : serveur Web NEOS. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Interface : doit utiliser un “solveur” pour effectivement résoudre les problèmes ; Pré-solve simplifie les problèmes avant de les soumettre aux solveurs ; Possibilités variées pour communiquer avec les solveurs Interface commune pour de nombreux solveurs : serveur Web NEOS. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Interface : doit utiliser un “solveur” pour effectivement résoudre les problèmes ; Pré-solve simplifie les problèmes avant de les soumettre aux solveurs ; Possibilités variées pour communiquer avec les solveurs Interface commune pour de nombreux solveurs : serveur Web NEOS. Jean-Pierre Dussault Le langage AMPL Un exemple de diète simple Généralisation Le langage et l’implantation AMPL Aspects du langage Implantation Interface : doit utiliser un “solveur” pour effectivement résoudre les problèmes ; Pré-solve simplifie les problèmes avant de les soumettre aux solveurs ; Possibilités variées pour communiquer avec les solveurs Interface commune pour de nombreux solveurs : serveur Web NEOS. Jean-Pierre Dussault Le langage AMPL