You are on page 1of 22

Le Langage de Modélisation AMPL

Modelling Language for Mathematical

Programming

Abdelmoutalib Metrane

EMSI
Marrakech Maroc

December 3, 2017

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Introduction

Il existe plusieurs solveurs de la recherche opérationnelle, que


ça soit gratuit ou non. Il y a aussi en open source.

1 Solveur EXCEL ou MATLAP


2 AMPL, OPL,
3 ZIMPL LINDO
4 SCIP
5 AIMMS, APMonitor, CMPL, CVX, CVXOPT, CVXPY

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


AMPL

Introduction

AMPL est un langage de modélisation algébrique pour des


problèmes d'optimisation linéaires et non-linéaires à variables
discrète ou continues.

AMPL contient plusieurs solveurs, chaque solveur est


spécialisé dans un domaine bien déterminé. Il contient :

1 Minos 5.5
2 Cplex
3 Lpsolve
4 Ipopt
5 xpress

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Le plus puissant des 4 solveurs est Cplex version 12.6.0.1 il est
disponible en version étudiante à l'adresse www.ampl.com

La documentation est disponible dans le site suivant:


http://ampl.com/resources/the-ampl-book/

Le point fort de Cplex est la programmation en nombre entiers


et la programmation dynamique.

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Désavantage de l'interface DOS

1 Impossible de couper/coller
2 Impossible de déler les output

Solution

Utilisation de programmes utilitaires SW.EXE disponible dans


le chier amplcml

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


SW.EXE

SW est une interface qui permet de naviguer dans les données


d'une fenêtre DOS et qui permet les fonctions d'édition
standard de Windows. (couper/copier/coller).
Voir readme.sw pour plus d'information.

Édition de chiers

Il est possible d'éditer les chiers de modèle (.mod) de


données (.dat) ou d'éxécution (.run) à l'aide d'un éditeur de
texte comme NotePad, WordPad ou Bloc-notes.

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Démarrer et arrêter AMPL

Pour démarrer AMPL, entrer ampl à l'invite de SW :


sw:ampl
ampl :

Commandes et quitter AMPL

Il est possible alors d'entrer les commandes AMPL. Pour


quitter :
ampl : quit;
sw :

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Deux chiers : .mod et .dat
1 Le modèle est décrit dans le chier nom-de-chier.mod
2 Les données sont décrites dans le chier
nom-de-chier.dat

Le chier .mod

Déclarations d'ensemble : set " nom de l'ensemble ..."

Déclarations de paramètres : param " nom du paramètre


..."

Déclaration de variables : var " nom de la variable ..."

Description des contraintes : subject to " nom de la


contraintes..."

Description des objectifs : minimize ou maximize " nom


de l'objectif ..."

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Exemple1

Considérons le modèle de programmation linéaire suivant où


on a juste besoin du chier .mod:

Max Z = 4x1 + 5x2

sous les contraintes

−x1 + 2x2 ≤ 12

3x1 + 5x2 ≤ 52

x1 + x2 ≤ 14

x1 ≤ 12

x1 , x2 ≥ 0.

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Exemple1.mod

Fichier Exemple1.mod
*******************************

var X1 >= 0 ;
var X2 >= 0 ;
maximize Prot: 4 * X1 + 5 * X2;
subject to cont1: -X1 + 2 * X2 <=12;
subject to cont2: 3*X1 + 5* X2 <= 52;
subject to cont3: X1 + X2 <=14;
subject to cont4: X1 <= 12;

*******************************

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Résolution de Res-graph1.mod

Résolution de Res-graph1.mod avec ampl par l'interface sw.exe

*******************************
sw: ampl
ampl: model Exemple1.mod;
ampl: solve;
MINOS 5.5: optimal solution found.
3 iterations, objective 61
ampl: display X1, X2;
X1 = 9
X2 = 5
*******************************

Le solveur MINOS 5.5 est choisit par défaut, ce solveur ne


tient pas compte aux problèmes en nombres entiers

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Résolution de Res-graph1.mod par Cplex

Résolution de Res-graph1.mod avec ampl par l'interface sw.exe


et à l'aide du solveur Cplex, mais il faut ajouter "integer"
après les déclaration des variables:
var X1 >=0 integer;

*******************************
sw: ampl
ampl: model Res-graph1.mod;
ampl: option solver cplex;
ampl: solve;
CPLEX 11.0.1: optimal solution; objective 61
2 dual simplex iterations (1 in phase I)
ampl: display X1, X2;
X1 = 9
X2 = 5
*******************************

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Les commandes d'AMPL

*******************************
sw: ampl entrer à AMPL
ampl: model nom-de-chier.mod; ouvrir un chier modèl
ampl: option solver nom-de-solveur; choisir le solveur
ampl: solve; résoudre
ampl: display nom-de-variable ; sortir les résultats
*******************************

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier mod et dat

Problème de voiture sport et économique

var X1 >=0 ;
var X2 >=0;
maximize Prot: 22410 * X1 + 33230 * X2;
subject to Atelier1: 3.5 * X1 + 4 * X2 <=1500;
subject to Ateleir2: 2 * X1 + 3 * X2 <=1500;
subject to MINeconomique: 120 <= X1;

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier.mod

set A;
param T:=2;
param cost {1..T};
param a {j in 1..T };
param b {j in 1..T };
param d {i in A};
var X {j in 1..T} ;
maximize Prot: sum {j in 1..T} cost[j] * X[j];
subject to Atelier {i in A}: sum {j in 1..T} a[j] * X[j]<= d[i];
subject to MINeconomique {j in 1..1}: 120 <= X[j];

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier.dat

set A := Atelier1 Atelier2;


param : a b cost :=
1 3.5 2 22410
2 4 3 33230 ;
param : d :=
Atelier1 1500
Atelier2 2000 ;

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier .run

On peut exécuter tous ces commandes dans un chier


d'extension .run et ramasser les résultats dans un chier
d'extension Usine-auto2.ans (par exemple)
*******************************
reset;
model Usine-auto2.mod;
option solver cplex;
solve;
display X1, X2 > usine.ans;
*******************************

Exécuter le Fichier .run

*******************************
sw: ampl
ampl: include Usine-auto2.run;
*******************************

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Modèle du transport

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Modèle du transport

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier transp.mod

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Fichier transp.dat

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo


Résolution du problème transport

*******************************
sw: ampl
ampl: model 'C:\ Users\ DELL \ Desktop\ Bureau2017\
AMPL2017\ transp.mod';
ampl:data 'C:\ Users\ DELL\Desktop\ Bureau 2017\
AMPL2017\ transp.dat';
ampl: solve;
MINOS 5.5: optimal solution found.
13 iterations, objective 196200
ampl: display Trans;
Trans [*,*] (tr)

Abdelmoutalib Metrane Le Langage de Modélisation AMPL Modelling Language fo

You might also like