Outils et Logiciels d Optimisation - Cours 2 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 256
Format propriétaire de CPLEX Assez peu utilisé par les autres logiciels d optimisation Format utilisé par CPLEX Interactive Optimizer pour rentrer un problème. Permet de définir un problème, mais pas l algorithme de résolution à utiliser. Facile à lire pour l utilisateur. Pas vraiment optimisé en taille de fichier
Règles et syntaxe Le format n est pas sensible à la casse (majuscule = minuscule). Commentaires : Tout texte suivant le caractère \ est considéré comme un commentaire. La zone de commentaire s arrête quand on passe à une nouvelle ligne. Noms : Chaque variable sera représentées par son nom. On peut aussi (facultatif) nommer l objectif et les contraintes. Contient au plus 255 caractères alphanumériques (a-z, A-Z, 0-9) ou l un des symboles! # $ % & ( ),.;? { } Eviter de commencer les noms par un e ou E pour éviter les confusions avec la notation exponentielle.
Règles et syntaxe Mots Clés : Chaque mot-clé doit commencer une ligne et est séparé du reste par au moins un espace (ou retour à la ligne). Maximize, Minimize, Maximum, Minimum, Max, Min : permettent de définir le sens d optimisation. Ils sont suivi par la fonction objectif Subject To, Such That, s.t., st : Introduit la section des contraintes. Bounds : Introduit la section où l on définit les bornes sur les variables. General, Generals, Gen : Les variables qui suivent ce mot-clés seront considérées comme entières. Binary, Binaries, Bin : Idem pour les variables binaires. End : Tout problème se finit par ce mot-clé.
Règles et syntaxe Objectif : Commence par le mot-clé définissant le sens d optimisation. Suivi simplement d une expression : [nom:] 1x1 + 2 x2 + z. Contraintes La section de contraintes commence par le mot-clé adéquate. Chaque contrainte à la forme suivante : [nom:] exp linéaire sens coefficient Sens possibles : <, <=, =<, >, >=, =>, =. Les trois premiers sont considéré comme, les trois suivants comme et le dernier comme =.
Règles et syntaxe Les lignes sont limitées à 560 caractères. On peut écrire l objectif et chaque contrainte sur plusieurs lignes. Ne pas couper un nom de variable ou un mot-clé pour changer de ligne. On peut mettre des espaces où on veut, sauf au milieu des noms et des mot-clès.
Exemple Maximize obj: x1 + 2 x2 + 3 x3 + x4 Subject To c1: - x1 + x2 + x3 + 10 x4 <= 20 c2: x1-3 x2 + x3 <= 30 c3: x2-3.5 x4 = 0 Bounds 0 <= x1 <= 40 2 <= x4 <= 3 General x4 End
Standard largement utilisé par les logiciels d optimisation. Les données sont spécifiées par colonnes (variables). Rend le format assez difficile à lire directement. Chaque variable, contrainte et objectif est référencé par un nom.
Sections Un fchiers.mps se décompose en plusieurs sections : NAME : Nom du problème OBJSENSE : sens d optimisation OBJNAME : nom de l objectif ROWS : noms et sens de chaque contrainte COLUMNS : noms et coefficients des variables dans chacune des contraintes RHS : coefficients du membre de droite de chaque contrainte RANGES : bornes pour les contraintes limitées par un intervale BOUNDS : bornes sur les variables ENDATA : signale la fin du problème
Champs Chaque ligne est divisée en 6 champs : Champ 1 Champ 2 Champ 3 Champ 4 Champ 5 Champ 6 Indicateur Nom Nom Valeur Nom Valeur Les noms sont limités à 255 caractères. Tous les caractères ASCII sont autorisés pour les noms sauf l espace. Les nombres sont limités à 25 caractères. Le premier champ doit commencer en colonne 1 ou 2. Commentaires : * dans le champ 1.
Objectif Par défaut : Minimiser la première contrainte libre. OBJSENSE : Champ 2 : MAX ou MIN les autres champs sont vides OBJNAME : Champ 2 : nom de la contrainte libre servant d objectif. les autres champs sont vides
ROWS Chaque ligne correspond à une contrainte Champ 1 : Sens de la contrainte : N : contrainte libre G : contrainte L : contrainte E : contrainte = Champ 2 : nom de la contrainte les autres champs ne sont pas utilisée
COLUMNS Chaque ligne va contenir pour une variable donnée jusqu à deux coefficients non nul dans des contraintes. plusieurs lignes peuvent être nécessaire pour une variable. Champ 1 : Vide Champ 2 : nom de la variable Champ 3 : nom d une contrainte Champ 4 : valeur de la variable dans la contrainte précédente Champ 5 (opt) : nom d une contrainte Champ 6 (opt) : valeur de la variable dans la contrainte précédente
RHS Champ 1 : Vide Champ 2 : identificateur rhs Champ 3 : nom d une contrainte Champ 4 : valeur du membre de droite de la contrainte précédente Champ 5 (opt) : nom d une contrainte Champ 6 (opt) : valeur du membre de droite de la contrainte précédente
BOUNDS Champ 1 : Type de borne : LO : borne inférieure UP : borne supérieure FX : valeur fixée FR : variable libre MI : PL : + BV : variable binaire (Champ 4 : 1, 0 ou vide) LI : borne inf variable entière UI : borne sup variable entière Champ 2 : identificateur BOUND Champ 3 : nom d une variable Champ 4 : valeur de la borne les autres champs ne sont pas utilisés
Exemple NAME ROWS N obj L c1 L c2 E c3 COLUMNS x1 obj -1 c1-1 x1 c2 1 x2 obj -2 c1 1 x2 c2-3 c3 1 x3 obj -3 c1 1 x3 c2 1 x4 obj -1 c1 10 x4 c3-3.5 RHS rhs c1 20 c2 30 BOUNDS UP BOUND x1 40 LI BOUND x4 2 UI BOUND x4 3 ENDATA
Cplex interactive optimizer Présentation en live!