1 / 35

PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP

U niversidad C omplutense M adri d. PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP. 2012. Facultad de Informática. Grado en Ingeniería Informática 3 ro A. Frank Canchari Lapa Marta Caro Martínez. Índice. Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje

lynch
Download Presentation

PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Universidad Complutense Madrid PROGRAMACIÓN CON RESTRICCIONESIBM ILOG CPLEX CP 2012

  2. Facultad de Informática Grado en Ingeniería Informática 3ro A Frank Canchari LapaMarta Caro Martínez

  3. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  4. 1. Introducción IBM ILOG CPLEX CP Es un lenguaje de Programación con Restricciones basada en OPL (Optimization ProgrammingLanguage), siendo este un lenguaje de Modelado para la resolución de la programación matemática. OPL modela: Programación lineal, entera y mixta Programación cuadrática y problemas convexos cuadráticamente limitados Programación con Restricciones Modelado de planificación (scheduling) Conexión con base de de datos relacionales IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  5. 1. Introducción IBM ILOG CPLEX CP Hablar de CPLEX CP, es hablar de IBM ILOG CPLEX Optimizer Studio (informalmente conocido como CPLEX). Siendo este una IDE que integra el Lenguaje de Modelado de OPL y multiplataforma soportando: • HP, AIX, Linux, Windows y MacOS. CPLEX cuenta con una amplia gama de librerías para los lenguajes de programación tradicionales más importantes (C, C++, C#, Java, Phyton, Visual Basic y FORTAN). También tiene complementos para ser usados desde las tablas de Microsoft Excel y MATLAB CPLEX también soporta la conexión a servidores de bases de datos para la extracción de información, soportando: • Windows: ODBC, Oracle, Sybase, Microsoft SQL Server • UNIX: Oracle IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  6. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  7. 2. Historia y Creación Originalmente desarrollado por Robert E. Bixbyy ofrecida comercialmente desde el año 1988 con el nombre de CPLEXOptimization. El origen de su nombre está en su primera concepción, ya que fue pensada para C, y también en el uso como algoritmo de simplex algorithm (conocido como método simplex, para la programación lineal). En el año 1997 fue adquirida por ILOG. Finalmente en el año 2009, IBM completa la adquisición de ILOG en la Bolsa de Nueva York y París, al precio de 215 millones de euros. Tras el último cambio de propietario, obtiene el nombre de IBM ILOG CPLEX Optimizer Studio. En la actualidad, la versión más reciente de la aplicación es la 12.4. IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  8. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  9. 3. Lenguaje OPL Introducción OPL para la Programación con Restricciones (P.R. o CP) Estructura del Modelado en OPL y Sintaxis IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  10. 3. Lenguaje OPL-Introducción Como ya se ha mencionado, OPL engloba muchos campos de la programación matemática. Por este motivo explicaremos brevemente algunos de los paradigmas principales donde se enfoca. Programación Lineal Programación Cuadrática Programación Con Restricciones IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  11. 3. Lenguaje OPL - Introducción P. Lineal Se trata de la resolución de problemas mediante Sistemas de Inecuaciones Lineales optimizando la función objetivo. Las variables están definidas en un vector X, donden es el numero de elementos La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes con el vector X Las Restricciones están limitadas por Matrices con valores conocidos: a y b son coeficientes técnicos conocidos En OPL esto se resuelve mediante Simplex Algorithm (método simple) IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  12. 3. Lenguaje OPL - Introducción P. Cuadrática Se trata de la resolución de problemas donde la Función Objetivo es Cuadrática y las Restricciones son Lineales Las variables están definidas en un vector X, donden es el numero de elementos La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes con el vector X Las Restricciones están limitadas por : a y b son coeficientes técnicos conocidos En OPL esto se resuelve mediante Pivote Complementario, Wolfe y en algunas situaciones con aproximaciones de la Función de Lagrange, entre otros algoritmos matemáticos. IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  13. 3. Lenguaje OPL - IntroducciónP. Restricciones Se trata de la resolución de problemas donde no existe unaFunción Objetivo que buscar, si no encontrar una o más asignaciones que puedan satisfacer a la Restricción Conjunto de variables X, donde cada elemento toma valores de su respectivo Dominio Asignación de las variables de X, es una n-tupla de valores Las Restricciones donde Una asignaciónSatisface la restricción R si: Una Restricción es Satisfactible si existe al menos una asignación que la satisface IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  14. 3. Lenguaje OPL Introducción OPL para la Programación con Restricciones (P.R. o CP) Estructura del Modelado en OPL y Sintaxis IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  15. 3. Lenguaje OPL - Para P.R. (CP) Después del contexto teórico de cómo OPL da solución a los problemas de CP, vamos a ver, a modo general, como es el algoritmo de su resolutor. No Si Existen Dominios no Vacíos? Son Todos Dominios Unitarios? Inconsistencia? No Si Si No Fase de Búsqueda Fase de Propagación de Consistencia Retroceso FIN Sin Sol FIN Con Sol IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  16. 3. Lenguaje OPL - Para P.R. (CP) Mapa de Componentes ILOG CPLEX ILOG SOLVER ILOG SCHEDULER IBM ILOG CPLEX CP Código OPL IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  17. 3. Lenguaje OPL Introducción OPL para la Programación con Restricciones (P.R. o CP) Estructura del Modelado en OPL y Sintaxis IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  18. 3. Lenguaje OPL – Estructura y Sintaxis Datos Variables Función de optimización Restricciones Procedimiento básicos IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  19. 3. Lenguaje OPL – Estructura y Sintaxis Datos Tipos básicos: //Enteros------------------------------------- int num1 = 5; int num2 = num1 * num1 + 5; int num3 = …; int inNum << "Inserta un numero"; //Reales-------------------------------------- float real = -5.1; float+ real = 5.1; //Enumerados---------------------------------- enum Color {R,G, B}; Color miColor= G; IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  20. 3. Lenguaje OPL – Estructura y Sintaxis Datos Tipos Estructurados: //Rangos-------------------------------------- range Intervalo = 1..5; range Intervalo2 = [2*num1..5*num1]; //Arrays-------------------------------------- int miArray[1..5]= [2,4, 7, 8, 3]; Color misCoches[1..5]= [R,B, B,R,G]; Color misCoches[Intervalo]= [R, B, B, R, G]; int miArray2[i in 1..5]= i+ 4; //Estructura---------------------------------- struct Punto{ float x; float y; }; Punto p = <1.3,5.3>; //Set----------------------------------------- {int}Primos4 = {2, 3, 5, 7}; {Punto}CorteEjes = {<2,0>,<0,7>}; IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  21. 3. Lenguaje OPL – Estructura y Sintaxis Variables de decisión: //Enteros------------------------------------- dvar int entero1 in 0..5; dvar int arrayEnt[1..10] in 0..5; dvar int arrayCoch[Intervalo] in 0..5; //Reales-------------------------------------- dvar float varX; dvar float+ varY; //Enumerados---------------------------------- dvar Color coches[Intervalo]; //Aserciones --------------------------------- assert numReynas>= 3; IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  22. 3. Lenguaje OPL – Estructura y Sintaxis Funciones de optimización: //Minimizar----------------------------------- minimize 10*var1+5*var2; //Maximizar----------------------------------- maximize 10*var1 + 5*var2; Restricciones Lineales: //-------------------------------------------- 10*var1 +5*var2<= 5; -varX + 4*varY <= 50; Restricciones NO Lineales: //-------------------------------------------- numero <> 4; -varX*varY > 10; IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  23. 3. Lenguaje OPL – Estructura y Sintaxis Procedimientos Básicos: //Buscar------------------------------------------- search{ tryall(j in 1..5orderedbydecreasingj)entero1=j; }; //Forall------------------------------------------- forall(j in 1..5){ reinas[j] <=8; reinas[j] >=1; }; //Suma-------------------------------------------- sum(j in 1..5)reinas[j]=(8*(8+1))/1; numReinas== sum(j in 1..8)reinas[j]; //alldifferent------------------------------------ allDifferent (array); IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  24. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  25. Ejemplo: Coloreado de Mapa El lenguaje OPL de IBM tiene un amplio repertorio de instrucciones, funciones etc., pero a modo de introducción usaremos el primer ejemplo visto en clase. IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  26. Ejemplo: Coloreado de Mapa Declaración del Dominio //Especificamos que es Constraint Program---------------- using CP; //Inicializamos un rango--------------------------------- range r = 1..4; //Podemos usar array de string--------------------------- string Colores[r]=["Negro", "Anaranjado", "Verde", "Gris"]; //Para poder usar la inicialización del dominio----------- execute{} //simplemente actualiza las definiciones IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  27. Ejemplo: Coloreado de Mapa Declaración de Variables //Variables de decisión---------------------------------- dvar int gal = in r; //Galicia dvar int can = in r; //Cantabria dvar int pva = in r; //País Vasco dvar int nav = in r; //Navarra dvar int ara = in r; //Aragón dvar int cat = in r; //Cataluña dvar int ast = in r; //Asturias dvar int cyl = in r; //Castilla y León dvar int rio = in r; //La Rioja dvar int mad = in r; //Madrid dvar int clm = in r; //Castilla la Mancha dvar int val = in r; //Valencia dvar int mur = in r; //Murcia dvar int alu = in r; //Andalucía dvar int ext = in r; //Extremadura IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  28. Ejemplo: Coloreado de Mapa Declaración de Función de Optimización //En este caso No queremos Optimizar nada----------------- Restricciones //Constraints--------------------------------------------- subject to{ gal!=ast; gal!=cyl; ast!=cyl; ast!=can; can!=pva;can!=cyl; pva!=nav;pva!=rio; nav!=rio;nav!=ara;ara!=cat;ara!=val; rio!=cyl;pva!=cyl; cal!=val;cyl!=mad; cyl!=ext;cyl!=clm;ext!=clm;ara!=clm; mad!=clm;clm!=val;ext!=alu;clm!=mur; alu!=mur;mur!=val;rio!=ara;ara!=cyl; } IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  29. Ejemplo: Coloreado de Mapa Mostrar Resultado //Mostrar------------------------------------------------ execute { writeln("\tGalicia : ", Colores[gal]); writeln("\tCantabria : ", Colores[can]); writeln("\tPaís Vasco : ", Colores[pva]); writeln("\tNavarra : ", Colores[nav]); writeln("\tAragón : ", Colores[ara]); writeln("\tCataluña : ", Colores[cat]); writeln("\tAsturias : ", Colores[ast]); writeln("\tCastilla y León : ", Colores[cyl]); writeln("\tLa Rioja : ", Colores[rio]); writeln("\tMadrid : ", Colores[mad]); writeln("\tCastilla la Mancha: ", Colores[clm]); writeln("\tValencia : ", Colores[val]); writeln("\tMurcia : ", Colores[mur]); writeln("\tAndalucia : ", Colores[alu]); writeln("\tExtremadura : ", Colores[ext]); } IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  30. Ejemplo: Coloreado de Mapa IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  31. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  32. Uso del Lenguaje El principal objetivo del uso de OPL es que el programador sea capaz de modelar los problemas de optimización más comunes que se encuentran en entornos industriales. OPL permite resolver eficientemente una extensa gama de problemas scheduling (planificación): -problemas de construcción, -proyectos con consideraciones presupuestarias, -planificación de carga de barcos -proyectos de desarrollos de software a gran escala, etc. IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  33. Uso del Lenguaje VENTAJAS DE USO El Lenguaje OPL es un lenguaje fácil de aprender y a la vez potente. Representación muy cercana a la formulación matemática del problema a resolver. Se reduce el tiempo de desarrollo sin sacrificar eficiencia. Compatibilidad de las bibliotecas de componentes. Simplicidad: Resuelve problemas de tamaño o dificultad prácticamente ilimitados. Agilidad : IBM ILOG CPLEX es compatible con una gran variedad de sistemas informáticos.

  34. Índice Introducción Historia y creación Lenguaje OPL Ejemplo Uso del lenguaje Situación actual IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

  35. Situación Actual Ampliamente usado en la actualidad. Conexión a Bases de datos, servidores, librerías para C++, C y Java. Cuenta con una plataforma de programación, llamado IBM ILOG CPLEX Optimizer Studio que permite disponer de un sistema de soporte para la toma de decisiones mediante análisis para mejorar la eficacia, reducir costes y aumentar la rentabilidad. Última versión desarrollada: 12.4. IBM ILOG CPLEX CP Optimization Studio -2 Facultad de Informática Universidad Complutense de Madrid

More Related