mod elisation avec mosel -...

41
Recherche Op ´ erationnelle: Mod´ elisation avec MOSEL Pierre Bonami [email protected] (copie des transparents et supports de cours disponibles ` a: http://pageperso.lif.univ-mrs.fr/ pierre.bonami/Teaching.html) 7 novembre 2012

Upload: lamnguyet

Post on 09-Mar-2018

225 views

Category:

Documents


1 download

TRANSCRIPT

Recherche Operationnelle:Modelisation avec MOSEL

Pierre Bonami [email protected]

(copie des transparents et supports de cours disponibles a:http://pageperso.lif.univ-mrs.fr/ pierre.bonami/Teaching.html)

7 novembre 2012

Plan d’aujourd’hui

Modelisation d’un probleme par la programmation lineaire

Mosel

Resolution d’un premier programme lineaire avec MOSEL

Ameliorer le modele

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Programme Lineaire

max /min

n∑i=1

cixi

sous les contraintes :

n∑i=1

aijxi

≤=≥ bj, j = 1, . . . ,m

l ≤ x ≤ u,

x ∈ Rn.

I Variables de decisions (bornees ou non).

I Des constantes

I Fonction objectif.

I Contraintes.

I Les relations entre les variables sont lineaires.

Un probleme

La compagnie Pluton fabrique deux types debarres chocolatees : “pluton base” et “pluton extra”. Pour faire 100barres de “pluton base” il faut 3 kilos de sucre et 1 kilo de chocolat.Pour faire 100 barres de “pluton extra”, il faut 2 kilos de sucre et 3kilos de chocolat. Le profit realise est de 5 euros pour 100 barres de“pluton base”, et de 10 euros pour 100 barres de “pluton extra”. Nousavons en stock 160 kilos de sucre et 200 kilos de chocolat. Combiendoit on produire de barres de chaque type pour maximiser le profit ?

Des questions a se poser

I Quelle decision doit on prendre ?

Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?

des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?

Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?

en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?

des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?

des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?

Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?

en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?

des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?

Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?

en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?

des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?

en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?

des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?

des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?

Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Des questions a se poser

I Quelle decision doit on prendre ? Produire, vendre, acheter,. . .

I Quelles sont les variables qui determinent ces decisions ?des quantites a produire, a transporter

I Quelles sont les quantites constantes du probleme ?Les ressources, les couts unitaires, les temps de fabricationunitaires,. . .

I Quelle est la fonction objectif ?en general minimiser le cout, maximiser le revenu ou le profit,minimiser le temps d’execution d’un processus

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?des ressources limites, un ordre d’execution a respecter,. . .

I Ces relations sont elles representables par des relations lineaires ?Dans ce cours, oui toujours ! Mais des fois il faut etre malin.Dans le reste du monde peut-etre pas, mais en etant malin. . .

Pluton suite...

La compagnie Pluton fabrique deux types debarres chocolatees : “pluton base” et “pluton extra”. Pour faire 100barres de “pluton base” il faut 3 kilos de sucre et 1 kilo de chocolat.Pour faire 100 barres de “pluton extra”, il faut 2 kilos de sucre et 3kilos de chocolat. Le profit realise est de 5 euros pour 100 barres de“pluton base”, et de 10 euros pour 100 barres de “pluton extra”. Nousavons en stock 160 kilos de sucre et 200 kilos de chocolat. Combiendoit on produire de barres de chaque type pour maximiser le profit ?

Reponses

I Quelle decision doit on prendre ?Etablir un programme de production des barres chocolatees.

I Quelles sont les variables qui determinent ces decisions ?Les quantites (positives !) a produire de chaque type de barre.

I Quelles sont les quantites constantes du probleme ?La quantite totale de sucre, de chocolat. Les quantites de sucre etde chocolat pour produire chaque type de barre. Le profits pour100 barres de chaque type.

I Quelle est la fonction objectif ?Maximiser le profit.

I Des contraintes portent-elles sur les variables et quelles sont lesrelations entre les variables ?Respecter les contraintes de ressources en sucre et chocolat.

I Ces relations sont elles representables par des relations lineaires ?On a dit, oui toujours !

Le programme de Pluton

I Soit x1 le nombre de barres bases a produire (en 100aine).

I Soit x2 le nombre de barres extras a produire (en 100aine).

max 5x1 + 10x2sous les contraintes :

3x1 + 2x2 ≤ 160

1x1 + 3x2 ≤ 200

0 ≤ x1,

0 ≤ x2.

Langages de modelisation programmationmathematique

I Interfaces vers les logiciels de resolutions.

I But : Permettre d’ecrire naturellement un programmemathematique en vue de le resoudre avec un logiciel (solveur).

I Avantages : prototypage rapide d’applications, detectionsd’erreurs dans le modele, interfaces intuitives.

I Pour la programmation lineaires de nombreux languages :I proprietaires : Ampl 1, Gams1, Osl, Mosel, Concert (C++),. . .I libres : GnuMathProg, zimpl, pulp (python), flopC++ (C++),. . .

I Interfaces avec un (des) solveur(s)I proprietaires (payants) : Cplex, XpressMP, Mosek.. . .I libres (gratuits) : GLPK, Clp.. . .

1. Permet aussi de modeliser des problemes non-lineaires

Mosel

Langage de Modelisation cree par Yves Colombani & SusanneHeipcke 2.Aujourd’hui vendu par la societe FICO 3.Interface avec le solveur XpressMP.Ressources web :

I Tutoriel : http://brblog.typepad.com/files/mosel WP.pdf

I Manuelutilisateur :http://iem.okstate.edu/baski/IEM4013/moselug.pdf

I Manuel dereference :http://home.dei.polimi.it/malucell/didattica/appunti/mosel/mosel-language reference.pdf

Livre :

I Applications of Optimization with Xpress-MP , Dash Optimization,2002.

2. Anciens etudiants Luminy

3. www.fico.com

Le minimum en Mosel

Demarrer->Tous les programmes->FICO->Xpress IVE

File->New

Initialisationmodel Nom du model

uses ‘‘mmxprs’’;

DeclarationsToutes les variables de decision et donnees doivent etre declarees dans :declarations

!...

end-declarations

Quelque commandes

I end-model termine le model. . .

I writeln permet de faire des sorties.

I minimize/maximimize minimise/maximise un objectif.

Syntaxe

I Affectation avec := (sauf dans les declarations).

I Contraintes d’egalite =

I ! Commence une ligne de commentaires

Declarer une variableOn declare une variable/donnee avec :nom : type ;

Types principaux : real, string, integer, mpvar(variable dedecision), linctr (expression lineaire).Exemple :x1: mpvar;

x2: mpvar;

Le retour de pluton

model Pluton

uses "mmxprs";

declarations

x1 : mpvar;

x2 : mpvar;

Objective:linctr

end-declarations

Objective:= 5 * x1 + 10 * x2;

3*x1+2*x2 <= 160;

x1 + 3* x2 <= 200;

maximize(Objective);

end-model

Ameliorer les sorties

Pour acceder au resultats on peut utiliser les fonctions :

I getobjval qui donne la valeur optimale ;

I getsol(x1) qui donne la valeur de la variable x1 a l’optimum.

En combinant avec writeln on peut faire une sortie raisonnable :

writeln(‘‘On doit produire ’’,getsol(x1)*100,‘‘ barres

bases et ’’,getsol(x2)*100, ‘‘ barres extras.’’);

writeln(‘‘Le profit realise sera ’’,getobjval, ‘‘

euros’’.);

Modele →http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.mos

Ameliorer la presentation du modele

I But separer le modele des donnees

I Le modele est formule de maniere algebrique, abstraite.

I Les donnes sont concretes et mecaniques.

I Quand la taille des problemes augmente, il devient vite avantageuxd’extraire le modele des donnees.

I Que se passe-t-il si demain :1. La quantite de sucre change ?

2. Un nouvel ingredient entre dans la fabrication ?

3. Un nouvelle barre chocolatee est vendue ?

I Dans tous ces cas, on devra changer les donnees mais pas lemodele.

Ensembles, tableaux, . . .

On les declare entre declarations . . . end-declarations.

EnsemblesIl servent essentiellement a indexer. Il peuvent etre :

I Un intervalle d’entiers consecutifs : {1, 2, 3, 4, 5} :I = 1..5.

I Un ensemble de chaines de caracteres :S = { ‘‘base’’,‘‘extra’’}.

On peut differer leur definition apres la declaration (ensemblesdynamiques) :

I Ensemble d’entiers :I : set of integer;

I Ensemble de chaines de caracteres :S : set of string;

Ensembles, tableaux, . . . (suite)

TableauxIls sont indexes par des ensembles (qui doivent avoir ete declares auprealable).

I Tableau unidimensionnel :A1 : array(1..3) of real;

A2 : array(S) of integer;

I Tableau bi-dimensionnel :A3: array(S,1..2) of real;

(si S est deja specifie le tableau sera statique sinon il sera dynamique.)Pour acceder aux elements du tableau on fait avec des parentheses :

I A(1), A(2),

I x(“base”), x(“extra”).

Initialisation des donnees dynamiques

Deux methodes :

I Directement dans le fichier de modele.

I Dans un fichier .dat separe.

Dans le meme repertoire que le fichier de modele, creer un fichierd’extension .dat ou seront stockees les donnees.Ce fichier sera lu dans le modele dans un bloque :initializations from ‘‘fichier.dat’’

...

end-initializations

Initialisation des donnees dynamiques

Deux methodes :

I Directement dans le fichier de modele.

I Dans un fichier .dat separe.

Dans le meme repertoire que le fichier de modele, creer un fichierd’extension .dat ou seront stockees les donnees.Ce fichier sera lu dans le modele dans un bloque :initializations from ‘‘fichier.dat’’

...

end-initializations

Initialisations dans un fichier externe (conseille)

Helas la syntaxe est differente, l’affectation est faite par ” :”

I Donner une valeur a un real : r : 0.5

I Initialiser un tableau unidimensionnel (dont on connait les indiceset la taille) :A1 : [1.2 3.4 2.3] ! A1 : array(1..3) of real;

I Initialiser un ensemble :S : [‘‘bleu’’ ‘‘jaune’’] ! S: set of string;.

I Initialiser un tableau unidimensionnel indexe par des string :A2 : [(‘‘bleu’’) 1 (‘‘jaune’’) 3]! A2 : array(S)

of integer;

I Initialiser un tableau multidimensionnel :A3 : [

(‘‘bleu’’ 1) 1.1 (‘‘jaune’’ 1) 1.7

(‘‘bleu’’ 2) 2.3 (‘‘jaune’’ 2) 4.3]

! A3 : array(S,1..2) of real;

A nouveau

Fichier data.datA1 : [1.2 3.4 2.3]

A2 : [(‘‘bleu’’) 1 (‘‘jaune’’) 3]

A3 : [

(‘‘bleu’’ 1) 1.1 (‘‘jaune’’ 1) 1.7

(‘‘bleu’’ 2) 2.3 (‘‘jaune’’ 2) 4.3]

Commandes dans le modeleinitializations from ‘‘data.dat’’

r A1 S A2 A3

end-initializations

Sommer, repeter, iterer

I Sommer sur un ensemble S predefini :sum(i in S)

I Sommer avec une condition :sum(i in S |i <> 0)

I Sommer sur deux ensembles S1 et S2 :sum(i in S1, j in S2)

I Repeter sur un ensemble :forall( i in S)

Par exemple on peut definir un ensemble de contraintes :forall(i in S) sum(j in S2) a(i,j)*x(j) <= b(s).

Retour a PlutonOn peut maintenant definir des ensembles et des tableaux pour separerles donnees du modele.model Pluton

uses "mmxprs";

declarations

x1 : mpvar;

x2 : mpvar;

Objective:linctr

end-declarations

Objective:= 5 * x1 + 10 * x2;

3*x1+2*x2 <= 160;

x1 + 3* x2 <= 200;

maximize(Objective);

end-model

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.I L’ensemble des ingredients : {“chocolat”, “sucre”}.I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.

I L’ensemble des ingredients : {“chocolat”, “sucre”}.I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.I L’ensemble des ingredients : {“chocolat”, “sucre”}.

I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.I L’ensemble des ingredients : {“chocolat”, “sucre”}.I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.I L’ensemble des ingredients : {“chocolat”, “sucre”}.I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos

Donnees

I L’ensemble des barres produites : {“base”, “extra”}.I L’ensemble des ingredients : {“chocolat”, “sucre”}.I Un tableau de variables de decision indexe par l’ensemble des barres

I Un tableau bi-dimensionnel des quantites d’ingredients necessairespour produire chaque barre.

I Un tableau unidimensionnel des quantites disponibles et des profits.

Fichier donnees pour Pluton :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton.dat.Fichier modele ameliore :http://pageperso.lif.univ-mrs.fr/ pierre.bonami/MASS/Pluton2.mos