La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP

Presentaciones similares


Presentación del tema: "PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP"— Transcripción de la presentación:

1 PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP
Universidad Complutense Madrid PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP Este Esta presentación, que se recomienda ver en modo de presentación, muestra las nuevas funciones de PowerPoint. Estas diapositivas están diseñadas para ofrecerle excelentes ideas para las presentaciones que creará en PowerPoint 2010. Para obtener más plantillas de muestra, haga clic en la pestaña Archivo y después, en la ficha Nuevo, haga clic en Plantillas de muestra. 2012

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

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

4 1. Introducción IBM ILOG CPLEX CP
Es un lenguaje de Programación con Restricciones basada en OPL (Optimization Programming Language), 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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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 Mac OS. 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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

7 2. Historia y Creación Originalmente desarrollado por Robert E. Bixby y ofrecida comercialmente desde el año 1988 con el nombre de CPLEX Optimization. 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. Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

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

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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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, donde n es el numero de elementos ∀𝑗, 1≤𝑗≤𝑛 𝑋 𝑗 ≥0} La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes 𝒄 𝒊 con el vector X 𝑀𝑎𝑥= 𝑗=1 𝑛 [𝑐 𝑗 × 𝑋 𝑖 ] y 𝑀𝑖𝑛= 𝑗=1 𝑛 [𝑐 𝑗 × 𝑋 𝑗 ] Las Restricciones están limitadas por Matrices con valores conocidos: 𝑗=1 𝑛 [𝑎 𝑖,𝑗 × 𝑋 𝑗 ]≤ 𝑏 𝑖 𝑖=1,2,…,𝑚 a y b son coeficientes técnicos conocidos En OPL esto se resuelve mediante Simplex Algorithm (método simple) Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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, donde n es el numero de elementos ∀𝑖, 1≤𝑖≤𝑛 𝑋 𝑖 ≥0} La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes 𝒄 𝒊 con el vector X 𝑀𝑖𝑛(𝑀𝑎𝑥)= 𝑗=1 𝑛 [𝑐 𝑗 × 𝑋 𝑗 ] + 𝑖=1 𝑛 𝑗=1 𝑛 [ 𝑞 𝑖,𝑗 × 𝑋 𝑗 × 𝑋 𝑖 ] Las Restricciones están limitadas por : a y b son coeficientes técnicos conocidos 𝑖=1 𝑛 [𝑎 𝑗,𝑖 × 𝑋 𝑖 ]≥ 𝑏 𝑗 ∀𝑗, 1≤𝑗≤𝑚 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. Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

13 3. Lenguaje OPL - Introducción P. Restricciones
Se trata de la resolución de problemas donde no existe una Funció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 𝑋= 𝑥 1 , 𝑥 2 , 𝑥 3 ,… 𝑥 𝑛 𝐷={𝐷 𝑥 1 ,𝐷 𝑥 2 ,𝐷 𝑥 3 ,…,𝐷( 𝑥 𝑛 )} Asignación de las variables de X, es una n-tupla de valores 𝑑 1 , 𝑑 2 , 𝑑 3 ,…, 𝑑 𝑛 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑑 𝑖 ∈𝐷 𝑥 𝑖 𝑝𝑎𝑟𝑎 𝑖=1,2,…,𝑛 Las Restricciones 𝑅 𝑉 donde 𝑉⊆𝑋 𝑅( 𝑥 1 , 𝑥 2 , 𝑥 3 ,… 𝑥 𝑚 )⊆𝐷 𝑥 1 ×𝐷 𝑥 2 ×𝐷 𝑥 3 ×…×𝐷( 𝑥 𝑚 ) Una asignación 𝑑 1 , 𝑑 2 , 𝑑 3 ,…, 𝑑 𝑚 Satisface la restricción R si: 𝑅( 𝑑 1 , 𝑑 2 , 𝑑 3 ,…, 𝑑 𝑚 )∈𝑅 𝑥 1 , 𝑥 2 , 𝑥 3 ,… 𝑥 𝑚 Una Restricción es Satisfactible si existe al menos una asignación que la satisface Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

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. Fase de Propagación de Consistencia Inconsistencia? No Si Existen Dominios no Vacíos? Son Todos Dominios Unitarios? Si No Si No Retroceso FIN Con Sol FIN Sin Sol Fase de Búsqueda Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

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

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

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; Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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>}; Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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; Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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; Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

23 3. Lenguaje OPL – Estructura y Sintaxis
Procedimientos Básicos: //Buscar search{ tryall(j in 1..5 ordered by decreasing j)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); Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

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. Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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; } Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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]); } Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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

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

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. Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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 Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2

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. Facultad de Informática Universidad Complutense de Madrid IBM ILOG CPLEX CP Optimization Studio -2


Descargar ppt "PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP"

Presentaciones similares


Anuncios Google