View
34
Download
4
Category
Preview:
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Recommended