PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP

35
Universidad Complutense Madrid PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP 2012

description

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 - PowerPoint PPT Presentation

Transcript of PROGRAMACIÓN CON RESTRICCIONES IBM ILOG CPLEX CP

Page 1: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

UniversidadComplutenseMadrid

PROGRAMACIÓN CON RESTRICCIONES

IBM ILOG CPLEX CP2012

Page 2: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

FACULTAD DE INFORMÁTICA

Frank Canchari LapaMarta Caro Martínez

GRADO EN INGENIERÍA INFORMÁTICA3ro A

Page 3: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 4: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

1. Introducción IBM ILOG CPLEX CPEs 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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 5: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 6: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 7: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 8: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 9: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

A. IntroducciónB. OPL para la Programación con

Restricciones (P.R. o CP)C. Estructura del Modelado en OPL y

Sintaxis

Page 10: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL-Introducción

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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

Page 11: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL - Introducción P. Lineal

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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

Las Restricciones están limitadas por Matrices con valores conocidos:

a y b son coeficientes técnicos conocidos

La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes con el vector X

En OPL esto se resuelve mediante Simplex Algorithm (método simple)

Page 12: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL - Introducción P. Cuadrática

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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

La Función Objetivo es el resultado de sumar la multiplicación de el vector de coeficientes con el vector X

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.

Las Restricciones están limitadas por :a y b son coeficientes técnicos conocidos∑

𝑖=1

𝑛

[𝑎¿¿ 𝑗 , 𝑖×𝑋 𝑖]≥𝑏 𝑗 ∀ 𝑗 ,1≤ 𝑗 ≤𝑚¿

Page 13: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL - Introducción P. Restricciones

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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

Las Restricciones donde Una asignación Satisface la restricción R si:

Asignación de las variables de X, es una n-tupla de valores

Una Restricción es Satisfactible si existe al menos una asignación que la satisface

Page 14: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

A. IntroducciónB. OPL para la Programación con

Restricciones (P.R. o CP)C. Estructura del Modelado en OPL y

Sintaxis

Page 15: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL - Para P.R. (CP)

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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

FIN

Sin Sol FINCon Sol

Inconsistencia?

Existen Dominios no

Vacíos?Son Todos Dominios Unitarios?

Retroceso

Fase de Búsqueda

No Si

NoSi NoSi

Page 16: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL - Para P.R. (CP)

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Mapa de Componentes

IBM ILOG CPLEX CP

Código

OPL

ILOG CPLEX ILOG SOLVER

ILOG SCHEDULER

Page 17: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

A. IntroducciónB. OPL para la Programación con

Restricciones (P.R. o CP)C. Estructura del Modelado en OPL y

Sintaxis

Page 18: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

a) Datosb) Variablesc) Función de optimizaciónd) Restriccionese) Procedimiento básicos

Page 19: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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;

Page 20: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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>};

Page 21: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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;

Page 22: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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;

Page 23: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

3. Lenguaje OPL – Estructura y Sintaxis

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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);

Page 24: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 25: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de MapaEl 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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 26: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de MapaDeclaración del Dominio

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

//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

Page 27: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de MapaDeclaración de Variables

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

//Variables de decisión----------------------------------dvar int gal = in r; //Galiciadvar int can = in r; //Cantabriadvar int pva = in r; //País Vascodvar int nav = in r; //Navarradvar int ara = in r; //Aragóndvar int cat = in r; //Cataluñadvar int ast = in r; //Asturiasdvar int cyl = in r; //Castilla y Leóndvar int rio = in r; //La Riojadvar int mad = in r; //Madriddvar int clm = in r; //Castilla la Manchadvar int val = in r; //Valenciadvar int mur = in r; //Murciadvar int alu = in r; //Andalucíadvar int ext = in r; //Extremadura

Page 28: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de MapaDeclaración de Función de Optimización

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

//En este caso No queremos Optimizar nada-----------------

//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;

}

Restricciones

Page 29: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de Mapa

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

//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]);}

Mostrar Resultado

Page 30: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Ejemplo: Coloreado de Mapa

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 31: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 32: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 33: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

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.

Page 34: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

Índice

1. Introducción2. Historia y creación3. Lenguaje OPL4. Ejemplo5. Uso del lenguaje6. Situación actual

Facultad de InformáticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Page 35: PROGRAMACIÓN CON RESTRICCIONES IBM ILOG  CPLEX CP

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áticaUniversidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2