Home
Programmation Linéaire TP n 4 : Cplex Callable Library
Contents
1. const int matcent const int matind const double matval const double lb const double ub const double rngval numcols numrows objsen nombre de colonnes nombre de lignes sens de l objectif CPX_MIN CPX_MAX obj rhs sense vecteur objectif vecteur membre droit vecteur de sens des contraintes L E G matbeg matcnt matind matval vecteurs repr sentant la matrice des contraintes lb ub vecteurs des bornes inf rieures et sup rieures pour les variables rngval pas dit dans ce TP Seuls les coefficients non nuls de la matrice des contraintes sont repr sent s dans le tableau matval matdeb associe chaque colonne de la matrice des contraintes l indice du premier l ment lire dans matval matind associe chaque coefficient de matval son indice i e sa ligne dans la colonne laquelle il appartient enfin matcnt associe chaque colonne le nombre de coefficients non nuls qu elle contient Ainsi les coefficients non nuls de la colonne j sont matval matdeb j matval matdeb j 1 matval matdeb j matcnt j 1 et se situent respectivement dans la ligne matind matdeb j matind matdeb j 1 matind matdeb j matent j 1 2 2 2 Par fonctions On peut appeler successivement les routines CPXnewcols CPXnewrows CPXaddcols CPXaddrows cf partie soit l on d finit le probl me par ses variables CPXnewcols puis
2. on remplit la matrice en d crivant totalement les contraintes CPXaddrows soit l on d finit le probl me par ses contraintes CPXnewrows puis on remplit la matrice en d crivant totalement les variables CPXaddcols 2 2 3 Par lecture de fichier Si les donn es sont d j rang es dans un fichier aux formats lp ou mps la routine CPXreadcopy prob permet de lire le fichier et d en copier les donn es dans la structure PL int CPXreadcopyprob CPXENVptr env CPXLPptr lp char nom_ fichier char type_ fichier 2 3 Interrogation Plusieurs accesseurs sont naturellement d finis qui permettent de r cup rer les donn es d un prob l me les plus importants tant sans doute ceux permettant d en conna tre la taille pour r cup rer le nombre de variables de lp int CPXPUBLIC CPXgetnumcols CPXCENVptr env CPXCLPptr lp pour r cup rer le nombre de contraintes de lp int CPXPUBLIC CPXgetnumrows CPXCENVptr env CPXCLPptr lp Pour les autres accesseurs objectif membre droit lignes colonnes bornes se reporter l aide Cplex ne serait ce que cplex h 2 4 Modification d un probl me 2 4 1 Ajout de ligne contrainte de colonne variable Cr ation de lignes et de colonnes incompl tes Par incompl tude on entend absence des coefficients correspondants dans la matrice des contraintes Une contrainte est alors caract ris e par le membre droit et le sens tandis qu une variable es
3. PXopenCplex est le suivant CPXENVptr CPXPUBLIC CPXopenCplex int statut CPXENVptr type Cplex qui d signe un pointeur vers l environnement statut contient le code de l erreur ventuelle 0 en cas de succ s Ainsi pour ouvrir l environnement Cplex il faut d clarer une variable de type CPXENVptr d clarer une variable de type int puis affecter l environnement par appel CPXopenCplex CPXENVptr env NULL int statut 0 env CPXopenCplex amp statut 1 2 4 Gestion de l erreur La plupart des fonctions retournent un entier 0 en cas de succ s une certaine constante symbolique en cas d erreur Pour retrouver la description associ e un code num rique donn il faut d clarer une cha ne de caract res de taille suffisante puis faire appel la fonction CPXgeterrorstring le mes sage correspondant l entier statut est crit dans une cha ne str_err_ message dans l exemple ci suit str_err_ message 1024 CPXgeterrorstring env statut str_err_ message 1 2 5 Lib ration de l espace m moire Il faut lib rer l espace r serv par les structures Cplex Malheureusement il n existe pas de fonction permettant de lib rer toute r servation m moire faite pour des structures li es un certain environ nement il faut donc d abord lib rer les diff rentes structures notamment les programmes lin aires par la fonction CPXfreeprob puis l environnement Cplex par
4. Universit Paris 13 INFO2 MI1 Institut Galil e Ann e 2011 2012 Programmation Lin aire TP n 4 Cplex Callable Library Exercice 1 crire un programme C C permettant de r soudre le programme lin aire suivant Max 5x1 7x2 8x3 SC 371 279 lt 9 1071 2x3 gt 11 T1 lt 0 1 lt HD x 4 0 a T3 lt 3 Vous utiliserez pour cela la Cplex Callable Library et en particulier la fonction CPXloadlp Vous prendrez soin de bien lire la documentation qui vous est fournie Utilisation de la biblioth que d optimisation Cplex Cplex inclut une biblioth que d velopp e en trois langages C libcplex a C libilocplex a Java cplex jar et qui contient un certain nombre de fonctions qu il est possible d appeler dans un programme C C Java Dans le cadre de ce TP nous travaillerons exclusivement en C 1 Utilisation de la biblioth que Ilog Cplex 1 1 Description La biblioth que Ilog Cplex contient des routines organis es en plusieurs cat gories 1 les routines d optimisation qui permettent de r soudre un probl me 2 les routines de mod lisation qui permettent de re d finir un probl me 3 les routines de param trisation qui servent conna tre ou modifier les valeurs des param tres des fonctions de Cplex 4 les routines d interrogation qui permettent d acc der aux informations inh rentes un prob l me et sa solution 1 2 Documentation technique 1 2 1 Organisa
5. e de coefficients modifier rowlist vecteur des numcoefs indices de ligne des coefficients modifier collist vecteur des numcoefs indices de colonne des coefficients modifier vallist vecteur des numcoefs nouveaux coefficients affecter Pour les autres fonctions se reporter la documentation Cplex 3 R solution d un probl me La r solution du probl me se fait l aide d une des routines d optimisation suivantes apr s que le probl me ait t d fini et initialis fonction quiv Synopsis CPXIpopt optimize int CPXPUBLIC CPXlpopt CPXCENVptr env CPXLPptr Ip CPXprimopt primopt int CPXPUBLIC CPXprimopt CPXCENVptr env CPXLPptr lp CPXdualopt tranopt int CPXPUBLIC CPXdualopt CPXCENVptr env CPXLPptr lp 3 1 R cup ration de la solution Apr s appel une fonction d optimisation les informations relatives la r solution d un probl me peuvent tre r cup r es par la routine CPXsolution int CPXPUBLIC CPXsolution CPXCENVptr env CPXCLPptr lp int lpstat_p double objval_p double x double pi double slack double dj X pi variables primales co ts r duits des variables primales pi slack variables duales variables d cart 4 Sauvegarde des informations Les fonctions CPXwriteprob et CPXwritesol permettent respectivement d crire un probl me et la solution d un probl me dans un fichier int CPXPUBLIC CPXwriteprob int CPXPUBLIC CPXwri
6. efficients de la matrice Les fonctions sont CPXaddrows et CPXaddcols De nouveau les lignes ou colonnes ins r es sont ajout es la suite du point de vue de leur indice des lignes et colonnes d j existantes Attention autant l on peut ajouter implicitement une variable donc une colonne en ajoutant une ligne cas d une contrainte faisant intervenir une variable qui n tait jusque lors impliqu e dans aucune contrainte existante autant l on ne peut ajouter de contrainte consid rer un indice de ligne suppl mentaire au moment de l ajout d une variable int CPXaddrows ajout de lignes compl tes un probl me CPXCEN Vptr env CPXLPptr Ip int cent int rent int nzent const double rhs const char sense const int rmatbeg const int rmatind const double rmatval char colname char rowname ccnt nombre de contraintes ajout es rcnt nombre de variables ventuellement ajout es nzcnt nombre de coefficients non nuls ins rer dans la matrice int CPXaddcols ajout de colonnes compl tes un probl me CPXCENVptr env CPXLPptr lp int cent int nzcent const double obj const int ematbeg const int ematind const double ematval const double Ib const double ub char colname 2 4 2 Suppression de ligne contrainte de colonne variable Les fonctions CPXdelrows et CPXdelsetrows resp CPXdelcols et CPXdelsetcols permet tent de supprimer un ensemble de lignes r
7. esp de colonnes int CPXdelrows CPXCENVptr env CPXLPptr lp int begin int end int CPXdelcols CPXCENVptr env CPXLPptr Ip int begin int end begin end indice des premi re et derni re lignes colonnes supprimer int CPXdelsetrows CPXCEN Vptr env CPXLPptr Ip int delstat int CPXdelsetcols CPXCENVptr env CPXLPptr lp int delstat delstat vecteur de taille CPXgetnumrows env lp CPXgetnumcols env lp les lignes colonnes d indice ind tel que delstat ind 1 sont supprim es 2 4 3 Modification de donn es du probl me Un ensemble de fonctions pr fix es par CPXchg principalement CPXchgcoef CPXchgcoeflist CPXchgbds CPXchgobj CPXchgrhs CPXchgsense CPXchgcoef CPXchgprobtype permettent de modifier 1 les coefficients de la matrice incluant ceux de la fonction objectif et du membre droit 2 les bornes sur les variables 3 le sens des contraintes 4 les propri t s du probl me Fonctions CPXchgcoef CPXchgcoeflist int CPXPUBLIC CPXchgcoef re d finition d un coefficient de la matrice CPXCENVptr env CPXLPptr Ip int i int j double newvalue indice de ligne 1 pour l objectif indice de colonne 1 pour le membre droit newvalue la valeur du coefficient int CPXPUBLIC CPXchgcoeflist re d finition d un ensemble de coefficients de la matrice CPXCEN Vptr env CPXLPptr Ip int numcoefs const int rowlist const int collist const double vallist J numcoefs nombr
8. la fonction CPXcloseCPLEX lib rer l espace occup par un probl me int CPXPUBLIC CPXfreeprob CPXCENVptr env CPXLPptr lp_p lib rer l espace occup par un environnement int CPXPUBLIC CPXcloseCPLEX CPXENVptr env_ p 2 Manipulation d un programme lin aire 2 1 D finition Une fois un environnement ouvert il faut initialiser une structure de donn e dans laquelle un prob l me r soudre sera stock Cette initialisation se fait par appel la routine CPXcreateprob qui retourne un pointeur vers un PL CPXLPptr CPXPUBLIC CPXcreateprob CPXCENVptr env int status _p const char amp probname_str CPXLPptr type Cplex qui d signe un pointeur vers une structure PL probname str d signe le nom donn au probl me Plusieurs probl mes peuvent tre ouverts simultan ment dans un m me environnement Apr s son initialisation il est possible de d finir un probl me de plusieurs mani res par structures informa tiques par appels successifs des fonctions de modification de PL ou encore par lecture de fichier 2 2 Initialisation 2 2 1 Par structures On peut rassembler toutes les donn es dans diff rents tableaux et appeler la routine CPXcopylp qui va copier les donn es dans la structure de donn e PL int CPXPUBLIC CPXcopylp CPXCENVptr env CPXLPptr Ip int numcols int numrows int objsen const double obj const double rhs const char sense const int matbeg
9. t caract ris e par son coefficient dans la fonction objectif son type continu binaire et ses bornes inf rieure et sup rieure Les nouvelles lignes ou colonnes cr es sont ajout es la suite du point de vue de leur indice des lignes et colonnes d j existantes int CPXPUBLIC CPXnewrows ajout de contraintes vides un probl me CPXCENVptr env CPXLPptr Ip int nb const double rhs const char sense const double rngval char rowname nb nombre de contraintes rhs vecteur de taille nb des membres droits const char sense vecteur de taille nb des sens des contraintes int CPXPUBLIC CPXnewcols ajout de variables un probl me CPXCEN Vptr env CPXLPptr Ip int nb const double ob j const double lb const double ub const char xctype char colname nombre de variables vecteur de taille nb des coefficients objectif lb ub vecteurs de taille nb des bornes inf et sup const char xctype vecteur des types des variables r el C binaire B entier Une ligne resp une colonne ainsi cr e peut ensuite tre compl t e par appel la fonction CPX addcols resp CPXaddrows ou encore aux fonctions de modification des coefficients telles que CPXchgcoef ou CPXchgcoeflist document es plus loin au paragraphe Cr ation de lignes et de colonnes compl tes Il faut donner les m mes informations que pr c demment avec en plus la description des co
10. tesol CPXCENVptr env CPXCLPptr lp const char filename_ str const char filetype_str filetype _str type du fichier nulle si l extension est donn e dans le nom du fichier Annexes A 1 Compilation 1 exo c exo 0 gcc c exo c o ex0 0 I LOCAL cplex 10 1 cplex101 include 2 eX0 0 exo gcc exo o o exo L LOCAL cplex 10 1 cplex101 lib x86 RHEL3 0 3 2 static_ pic lcplex lm Ipthread A 2 Programme Cplex minimal include lt cplex h gt int main declarations CPXENVptr env NULL environnement Cplex CPXLPptr lp NULL PL Cplex int statut 0 statut technique des fonctions ouverture de Cplex env CPXopenCPLEX amp statut creation d un PL lp CPXcreateprob env amp statut gros_ probleme instanciation d un PL statut CPXreadcopyprob env lp mon_pb lp NULL resolution d un PL statut CPXprimopt env lp souvegarde de la solution dans un fichier statut CPXwritesol env lp resolution txt NULL liberation de l espace memoire statut CPXfreeprob env amp lp statut CPXcloseCPLEX amp env on s en va return 0
11. tion et conventions de nommage Les structures et fonctions Cplex ont pour pr fixe CPX Les fichiers d ent te essentiellement cplex h pour la biblioth que C contiennent les constantes ex CPX_INFBOUND pour d signer l infini et les prototypes de toutes les routines et param tres de Cplex Ces fichiers sont situ s dans le r pertoire LOCAL cplex 10 1 cplex101 include ilcplex 1 2 2 Compilation Pour faire appel aux objets Cplex il faut bien videmment 1 dans vos sources penser inclure cplex h Hinclude lt cplex h gt 2 dans la commande de compilation indiquer les chemins fichier d ent tes et biblioth que et le lien la biblioth que NB il faut aussi utiliser les librairies standard m et pthread I LOCAL cplex 10 1 cplex101 include L LOCAL cplex 10 1 cplex101 lib x86 RHEL3 0 3 2 static pic lcplex Im Ipthread 1 2 8 Initialisation de l environnement Cplex Pour invoquer des objets ou fonctions Cplex il faut en premier lieu initialiser l environnement Cplex ayant besoin de quelques structures de donn es internes pour op rer La routine CPXopenCplex permet cette initialisation et retourne un pointeur vers l environnement cr dont le type est CPX ENVptr Toutes les structures et fonctions Cplex n cessitent la r f rence un environnement Notons que plusieurs environnements autant que de licences disponibles peuvent tre ouverts si multan ment Le mode d emploi de C
Download Pdf Manuals
Related Search
Related Contents
http://ikea-club.com.ua Bedienungsanleitung Copyright © All rights reserved.
Failed to retrieve file