cplex_interactif

24

Upload: hamza-saffaj

Post on 27-Oct-2015

34 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: cplex_interactif

Débuter avec CPLEX

OUDANI Mustapha,

Faculté des Sciences et Techniques de Fès,

Master ROSSD,

15 février 2013

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 1 / 20

Page 2: cplex_interactif

Plan

1 Introduction

2 Optimiseur intéractif

3 CPLEX Callable Library

4 API Java

5 OPL Studio

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 2 / 20

Page 3: cplex_interactif

Plan

1 Introduction

2 Optimiseur intéractif

3 CPLEX Callable Library

4 API Java

5 OPL Studio

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 2 / 20

Page 4: cplex_interactif

Plan

1 Introduction

2 Optimiseur intéractif

3 CPLEX Callable Library

4 API Java

5 OPL Studio

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 2 / 20

Page 5: cplex_interactif

Plan

1 Introduction

2 Optimiseur intéractif

3 CPLEX Callable Library

4 API Java

5 OPL Studio

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 2 / 20

Page 6: cplex_interactif

Plan

1 Introduction

2 Optimiseur intéractif

3 CPLEX Callable Library

4 API Java

5 OPL Studio

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 2 / 20

Page 7: cplex_interactif

Introduction

Historique et Applications

Crée 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 chaîne logistique,

Utilisé par plusieurs compagnies aériènnes (Delta, Continental,...),

2004 INFORMS Impact Award.

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 3 / 20

Page 8: cplex_interactif

Introduction

Problèmes couverts

Programmation linéaire,

Programmation linéaire mixte,

Programmation quadratique,

Programmation mixte quadratique ,

Programmation à contraintes quadratiques,

Programmation mixte à contraintes quadratiques,

Programmes avec des millions de contraines et de variables (versionintégrale).

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 4 / 20

Page 9: cplex_interactif

Introduction

Algorithmes

Programmation Linéaire :

Simplex Primal

Simplex Dual

Simplex pour les problèmes de �ot

Point intérieur (barrier)

Programmation Quadratique :

Simplex Primal

Simplex Dual

Point intérieur (barrier)

Programmation à Contraintes Quadratiques :

Point intérieur (barrier)

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 5 / 20

Page 10: cplex_interactif

Introduction

Composantes de CPLEX

On peut utiliser CPLEX sous di�érentes manières :

Mode intéractif,

Cplex Callable Library (bibliothèque en langage C) : utilise les matricespour représenter un problème,

Ilog Concert Technology : utilise les objects et les méthodes pourreprésenter un problème avec les langages de programmation C++,Java, C#...,

Avec un langage de modélisation comme OPL, MPL, AMPL...

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 6 / 20

Page 11: cplex_interactif

Optimiseur intéractif

Section I : CPLEX en mode intéractif

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 7 / 20

Page 12: cplex_interactif

Optimiseur intéractif

Utiliser le menu d'aide

→ menu démarrer → Exécuter → taper : cplex

CPLEX accepte les commandes en di�érents formats : on peut taperle nom complet ou sa forme réduite, en majiscule ou en miniscule.

Pour obtenir de l'aideCPLEX> helpouCPLEX> h

Pour obtenir de l'aide à propos d'une commande spéci�que on a lasyntaxe générale : help nom_commande ,exemple :CPLEX> help addCPLEX> help problem

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 8 / 20

Page 13: cplex_interactif

Optimiseur intéractif

Enter un problème

Souvent, on fait entrer les petits problèmes d'une façon intéractive,pour entrer des problèmes de grande taille, on fait la lecture duproblème à partir d'un �chier.

exemple :Maximiser x1 + 2x2 + 3x3S.C :

−x1 + x2 + x3 ≤ 20

x1 − 3x2 + x3 ≤ 30

0 ≤ x1 ≤ 40

0 ≤ x2 ≤ ∞0 ≤ x3 ≤ ∞

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 9 / 20

Page 14: cplex_interactif

Optimiseur intéractif

Entrer un problème

Pour entrer un nouveau problèmeCPLEX> enter

On choisit un nom pour notre problème exemple : programme1

On fait entrer le problème dans l'ordre suivant :1 Fonction objectif2 Contraintes3 Bornes

Pour entrer la fonction objectifmaximize (ou max) x1 + 2x2 + 3x3 // ou minimize (min)

On peut nommer nos variables en : voiture, machine, conteneur

On peut utiliser tous les caractères alphanumériques

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 10 / 20

Page 15: cplex_interactif

Optimiseur intéractif

Entrer un problème

Pour entrer les contraintes on utilise, subject to ou st

st −x1 + x2 + x3 <= 20x1 − 3x2 + x3 <= 30

On peut nommer les contraintes :st temps : −x1 + x2 + x3 <= 20coût : x1 − 3x2 + x3 <= 30

On peut entrer des contraintes longues en utilisant <return>, CPLEXinterprète les lignes multiples comme une seule contrainte :st −x1 + x2+ < return >x3 <= 20 < return >coût : x1 − 3x2 + x3 <= 30

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 11 / 20

Page 16: cplex_interactif

Optimiseur intéractif

Entrer un problème

Pour entrer les bornes, on utilise bounds :bounds x1 <= 40

Si aucune borne n'est pas entrée, CPLEX donne la valeur 0 pour laborne inférieure et +∞ pour la borne supérieure, donc pour notreproblème on va pas entrer les autres contraintes sur les bornes.

Pour une variable qui prend des valeurs quelconques,bounds

x3 freePour entrer des variables particulières :

Pour les variables entières, on entre generals,exemple :

generals

x1Pour les variables binaires, on entre binaries,exemple :

binaries

x2

Pour �nir l'entrée d'un problème on tape end

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 12 / 20

Page 17: cplex_interactif

Optimiseur intéractif

A�chage d'un problème

Après la saisie du problème, on peut véri�er que ce dernier a été bienentré, pour cela :CPLEX> display

Une liste d'options apparait. Certaines options concernent la partie dedescription du problème, l'aure concerne la solution. Celle-ci ne peutêtre a�chée qu'après la résolution du problème.problem all

Si le problème est d'une grande taille, son a�chage sur écran estmoins pratique. On peut utiliser l'option stats pour a�cher

1 Le nombre et le type de contraintes2 Variables3 Coe�cients non nuls des contraintes

display problem stats

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 13 / 20

Page 18: cplex_interactif

Optimiseur intéractif

A�chage d'un problème

Pour a�cher les noms de variables :display problem nom_variable numéro_colonne

Pour numéro_colonne on entre un nombre qui indique le numéro de lacolonne de la variable

On peut a�cher tous les noms des variables en tapant - ou * après lemot variables

Pour a�cher les contraintesdiplay problem nom_contrainteLa fonction objectif est considérée comme la contrainte numéro 0, ellepeut être a�chée également par son nom par défaut obj

Pour a�cher les bornes :display problem bounds 1

display problem bounds -

display problem bounds *

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 14 / 20

Page 19: cplex_interactif

Optimiseur intéractif

Résolution d'un problème

Pour résoudre un programme linéaire, on peut lancer l'une des cinqcommandes suivantes :

primopt algorithme primal du simplexe

tranopt algorithme dual du simplexe

baropt algorithme de points intérieurs

netopt algorithme primal du simplexe pour les problèmes de �ot

optimize Cplex choisit l'algorithme de résolution

Pour résoudre un programme mixte (linéaire ou quadratique ou àcontraintes quadratiques), on peut utiliser la commande :mipopt nom_problème

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 15 / 20

Page 20: cplex_interactif

Optimiseur intéractif

Résolution d'un problème

Pour résoudre un probème déja saisi :CPELX> optimize nom_probème

Pour a�cher les informations post-résolution :CPLEX> display solution variables -

Pour a�cher la valeur dual pour chaque contrainte :CPLEX> display solution dual -

On peut aussi a�cher l'analyse de sensibilité de la fonction objectif(Changement de la solution optimale comme réponse aux petitesperturbations des données du problèmes)CPLEX> display sensitivity obj -

ouCPLEX> display sensitivity obj *

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 16 / 20

Page 21: cplex_interactif

Optimiseur intéractif

Ecriture d'un problème et �chier de solution

Le problème ou sa solution peuvent être enregitrés en utilisant lacommande write

Lorsque vous taper la commande write un message vous demanded'entrer un nom du problème à écrire

Après sélectionner un format du �chier parm une liste de choix,choisissez le format LP

On peut entrer le nom et le type du �chier de problème directementCPLEX> write exemple lp

ouCPLEX> write exemple.lp

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 17 / 20

Page 22: cplex_interactif

Optimiseur intéractif

Ecriture d'un problème et �chier de solution

La syntaxe générale pour la commande write est :CPLEX> write nom_�chier format_�chier

ouCPLEX> write nom_�chier.extension

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 18 / 20

Page 23: cplex_interactif

Optimiseur intéractif

Lecture d'un problème à partir d'un �chier

On peut faire entrer souvent un problème par sa lecture à partir d'un�chier au lieu de sa saisie par clavier

Pour lire un lire un exemple d'un �chier LPCPLEX> read

Spéci�er le nom de �chier (exemple)

Entrer le format du �chier : lp

Maintenant le problème est pris en considération en mémoire, et onpeut le manipuler avaec les commandes de CPLEX

La syntaxe générale pour la commande read est :CPLEX> read nom_�chier format_�chier

ouCPLEX> read nom_�chier.extension

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 19 / 20

Page 24: cplex_interactif

Optimiseur intéractif

Con�gurer les paramètres de CPLEX

L'utilisateur peut changer les paramètres de CPLEX en modi�ant leursvaleurs initiales, pour voir les paramètres con�gurables :CPLEX> set

Une liste de ces paramètres s'a�che, on peut con�gurer l'un d'eux entapant son nom

La syntaxe générale pour la commande set est :CPLEX> set nom_paramètre nouvelle_valeur

Il est possible de recon�gurer tous les paramètres à leurs valeursinitiales par :CPLEX> set defaults

Présenté par OUDANI Mustapha Encadré par: Ahmed EL HILALI Alaoui 15 février 2013 20 / 20