Vous êtes sur la page 1sur 24

Dbuter avec CPLEX

OUDANI Mustapha, Facult des Sciences et Techniques de Fs, Master ROSSD,

15 fvrier 2013

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

1 / 20

Plan

1 2 3 4 5

Introduction Optimiseur intractif CPLEX Callable Library API Java OPL Studio

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

2 / 20

Plan

1 2 3 4 5

Introduction Optimiseur intractif CPLEX Callable Library API Java OPL Studio

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

2 / 20

Plan

1 2 3 4 5

Introduction Optimiseur intractif CPLEX Callable Library API Java OPL Studio

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

2 / 20

Plan

1 2 3 4 5

Introduction Optimiseur intractif CPLEX Callable Library API Java OPL Studio

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

2 / 20

Plan

1 2 3 4 5

Introduction Optimiseur intractif CPLEX Callable Library API Java OPL Studio

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

2 / 20

Introduction

Historique et Applications

Cre par Robert E. Bixby en utilisant le langage C en 1987, Rachet par ILOG en 1997, 95 % des papiers qui mentionnent un solveur citent CPLEX, Solveur Standard dans les applications de la chane logistique, Utilis par plusieurs compagnies arinnes (Delta, Continental,...), 2004 INFORMS Impact Award.

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

3 / 20

Introduction

Problmes couverts

Programmation linaire, Programmation linaire mixte, Programmation quadratique, Programmation mixte quadratique , Programmation contraintes quadratiques, Programmation mixte contraintes quadratiques, Programmes avec des millions de contraines et de variables (version intgrale).

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

4 / 20

Introduction

Algorithmes
Programmation Linaire : Simplex Primal Simplex Dual Simplex pour les problmes de ot Point intrieur (barrier) Programmation Quadratique : Simplex Primal Simplex Dual Point intrieur (barrier) Programmation Contraintes Quadratiques : Point intrieur (barrier)
Prsent par OUDANI Mustapha Encadr par: Ahmed EL HILALI Alaoui 15 fvrier 2013 5 / 20

Introduction

Composantes de CPLEX

On peut utiliser CPLEX sous direntes manires : Mode intractif, Cplex Callable Library (bibliothque en langage C) : utilise les matrices pour reprsenter un problme, Ilog Concert Technology : utilise les objects et les mthodes pour reprsenter un problme avec les langages de programmation C++, Java, C#..., Avec un langage de modlisation comme OPL, MPL, AMPL...

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

6 / 20

Optimiseur intractif

Section I : CPLEX en mode intractif

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

7 / 20

Optimiseur intractif

Utiliser le menu d'aide


menu dmarrer Excuter taper : cplex

CPLEX accepte les commandes en dirents formats : on peut taper le nom complet ou sa forme rduite, en majiscule ou en miniscule. Pour obtenir de l'aide CPLEX> help ou CPLEX> h Pour obtenir de l'aide propos d'une commande spcique on a la syntaxe gnrale : help nom_commande ,exemple : CPLEX> help add CPLEX> help problem

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

8 / 20

Optimiseur intractif

Enter un problme
Souvent, on fait entrer les petits problmes d'une faon intractive, pour entrer des problmes de grande taille, on fait la lecture du problme partir d'un chier. exemple : Maximiser x1 + 2x2 + 3x3 S.C : x1 + x2 + x3 20 x1 3x2 + x3 30 0 x1 40 0 x2 0 x3
Prsent par OUDANI Mustapha Encadr par: Ahmed EL HILALI Alaoui 15 fvrier 2013 9 / 20

Optimiseur intractif

Entrer un problme
Pour entrer un nouveau problme CPLEX> enter On choisit un nom pour notre problme exemple : programme1 On fait entrer le problme dans l'ordre suivant :
1 2 3

Pour entrer la fonction objectif maximize (ou max) x1 + 2x2 + 3x3 // ou minimize (min) On peut nommer nos variables en : voiture, machine, conteneur On peut utiliser tous les caractres alphanumriques

Fonction objectif Contraintes Bornes

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

10 / 20

Optimiseur intractif

Entrer un problme
Pour entrer les contraintes on utilise, subject to ou st st x1 + x2 + x3 <= 20 x1 3x2 + x3 <= 30 On peut nommer les contraintes : st temps : x1 + x2 + x3 <= 20 cot : x1 3x2 + x3 <= 30 On peut entrer des contraintes longues en utilisant <return>, CPLEX interprte les lignes multiples comme une seule contrainte : st x1 + x2 + < return > x3 <= 20 < return > cot : x1 3x2 + x3 <= 30

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

11 / 20

Optimiseur intractif

Entrer un problme
Pour entrer les bornes, on utilise bounds : bounds x1 <= 40 Si aucune borne n'est pas entre, CPLEX donne la valeur 0 pour la borne infrieure et + pour la borne suprieure, donc pour notre problme on va pas entrer les autres contraintes sur les bornes. Pour une variable qui prend des valeurs quelconques,
bounds x3 free

Pour entrer des variables particulires :


generals x1 binaries x2

Pour les variables entires, on entre generals,exemple : Pour les variables binaires, on entre binaries,exemple :

Pour nir l'entre d'un problme on tape end


Prsent par OUDANI Mustapha Encadr par: Ahmed EL HILALI Alaoui 15 fvrier 2013 12 / 20

Optimiseur intractif

Achage d'un problme


Aprs la saisie du problme, on peut vrier que ce dernier a t bien entr, pour cela : CPLEX> display Une liste d'options apparait. Certaines options concernent la partie de description du problme, l'aure concerne la solution. Celle-ci ne peut tre ache qu'aprs la rsolution du problme.
problem all
1 2 3

Si le problme est d'une grande taille, son achage sur cran est moins pratique. On peut utiliser l'option stats pour acher

display problem stats


Prsent par OUDANI Mustapha

Le nombre et le type de contraintes Variables Coecients non nuls des contraintes

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

13 / 20

Optimiseur intractif

Achage d'un problme


Pour acher les noms de variables :
display problem nom_variable numro_colonne Pour numro_colonne on entre un nombre qui indique le numro de la

colonne de la variable On peut acher tous les noms des variables en tapant - ou * aprs le mot variables Pour acher les contraintes diplay problem nom_contrainte La fonction objectif est considre comme la contrainte numro 0, elle peut tre ache galement par son nom par dfaut obj Pour acher les bornes :
display problem bounds 1 display problem bounds display problem bounds *
Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

14 / 20

Optimiseur intractif

Rsolution d'un problme


Pour rsoudre un programme linaire, on peut lancer l'une des cinq commandes suivantes : primopt algorithme primal du simplexe tranopt algorithme dual du simplexe baropt algorithme de points intrieurs netopt algorithme primal du simplexe pour les problmes de ot optimize Cplex choisit l'algorithme de rsolution Pour rsoudre un programme mixte (linaire ou quadratique ou contraintes quadratiques), on peut utiliser la commande : mipopt nom_problme

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

15 / 20

Optimiseur intractif

Rsolution d'un problme


Pour rsoudre un probme dja saisi : CPELX> optimize nom_probme Pour acher les informations post-rsolution : CPLEX> display solution variables Pour acher la valeur dual pour chaque contrainte : CPLEX> display solution dual On peut aussi acher l'analyse de sensibilit de la fonction objectif (Changement de la solution optimale comme rponse aux petites perturbations des donnes du problmes) CPLEX> display sensitivity obj ou CPLEX> display sensitivity obj *
Prsent par OUDANI Mustapha Encadr par: Ahmed EL HILALI Alaoui 15 fvrier 2013 16 / 20

Optimiseur intractif

Ecriture d'un problme et chier de solution

Le problme ou sa solution peuvent tre enregitrs en utilisant la commande write Lorsque vous taper la commande write un message vous demande d'entrer un nom du problme crire Aprs slectionner un format du chier parm une liste de choix, choisissez le format LP On peut entrer le nom et le type du chier de problme directement CPLEX> write exemple lp ou CPLEX> write exemple.lp

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

17 / 20

Optimiseur intractif

Ecriture d'un problme et chier de solution

La syntaxe gnrale pour la commande write est : CPLEX> write nom_chier format_chier ou CPLEX> write nom_chier.extension

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

18 / 20

Optimiseur intractif

Lecture d'un problme partir d'un chier


On peut faire entrer souvent un problme par sa lecture partir d'un chier au lieu de sa saisie par clavier Pour lire un lire un exemple d'un chier LP CPLEX> read Spcier le nom de chier (exemple) Entrer le format du chier : lp Maintenant le problme est pris en considration en mmoire, et on peut le manipuler avaec les commandes de CPLEX La syntaxe gnrale pour la commande read est : CPLEX> read nom_chier format_chier ou CPLEX> read nom_chier.extension
Prsent par OUDANI Mustapha Encadr par: Ahmed EL HILALI Alaoui 15 fvrier 2013 19 / 20

Optimiseur intractif

Congurer les paramtres de CPLEX

L'utilisateur peut changer les paramtres de CPLEX en modiant leurs valeurs initiales, pour voir les paramtres congurables : CPLEX> set Une liste de ces paramtres s'ache, on peut congurer l'un d'eux en tapant son nom La syntaxe gnrale pour la commande set est : CPLEX> set nom_paramtre nouvelle_valeur Il est possible de recongurer tous les paramtres leurs valeurs initiales par : CPLEX> set defaults

Prsent par OUDANI Mustapha

Encadr par: Ahmed EL HILALI Alaoui

15 fvrier 2013

20 / 20