You are on page 1of 35

Universidad

Complutense
Madrid

PROGRAMACIN CON RESTRICCIONES

IBM ILOG CPLEX CP


2012

FACULTAD DE INFORMTICA

GRADO EN INGENIERA INFORMTICA


3ro A
Frank Canchari Lapa
Marta Caro Martnez

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

1. Introduccin IBM ILOG CPLEX CP


Es un lenguaje de Programacin con Restricciones
basada en OPL (Optimization Programming Language),
siendo este un lenguaje de Modelado para la
resolucin de la programacin matemtica.
OPL modela:

Programacin lineal, entera y mixta


Programacin cuadrtica y problemas convexos
cuadrticamente limitados
Programacin con Restricciones
Modelado de planificacin (scheduling)
Conexin con base de de datos relacionales

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

1. Introduccin 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 libreras para los lenguajes
de programacin tradicionales ms importantes (C, C++, C#, Java,
Phyton, Visual Basic y FORTAN). Tambin tiene complementos para
ser usados desde las tablas de Microsoft Excel y MATLAB

CPLEX tambin soporta la conexin a servidores de bases de datos


para la extraccin de informacin, soportando:
Windows: ODBC, Oracle, Sybase, Microsoft SQL Server

UNIX: Oracle
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

2. Historia y Creacin
Originalmente desarrollado por Robert E. Bixby y ofrecida
comercialmente desde el ao 1988 con el nombre de CPLEX Optimization.
El origen de su nombre est en su primera concepcin, ya que fue
pensada para C, y tambin en el uso como algoritmo de simplex algorithm
(conocido como mtodo simplex, para la programacin lineal).
En el ao 1997 fue adquirida por ILOG.
Finalmente en el ao 2009, IBM completa la adquisicin de ILOG en la
Bolsa de Nueva York y Pars, 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 versin ms reciente de la aplicacin es la 12.4.

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL
A. Introduccin
B. OPL para la Programacin con
Restricciones (P.R. o CP)
C. Estructura del Modelado en OPL y
Sintaxis

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL-Introduccin
Como ya se ha mencionado, OPL engloba muchos
campos de la programacin matemtica. Por este
motivo explicaremos brevemente algunos de los
paradigmas principales donde se enfoca.

Programacin Lineal
Programacin Cuadrtica
Programacin Con Restricciones

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL - Introduccin P. Lineal


Se trata de la resolucin de problemas mediante Sistemas de
Inecuaciones Lineales optimizando la funcin objetivo.
Las variables estn definidas en un vector X, donde n es el numero de elementos
, 1 0+
La Funcin Objetivo es el resultado de sumar la multiplicacin de el vector de
coeficientes con el vector X

, -

=1

, =1

Las Restricciones estn limitadas por Matrices con valores conocidos:

,, -
=1

= 1,2, ,

a y b son coeficientes
tcnicos conocidos

En OPL esto se resuelve mediante Simplex Algorithm (mtodo simple)


Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL - Introduccin P. Cuadrtica


Se trata de la resolucin de problemas donde la Funcin
Objetivo es Cuadrtica y las Restricciones son Lineales
Las variables estn definidas en un vector X, donde n es el numero de elementos
, 1 0+
La Funcin Objetivo es el resultado de sumar la multiplicacin de el vector de
coeficientes con el vector X

() =

, - +
=1

,, =1 =1

Las Restricciones estn limitadas por :

,, -
=1

, 1

a y b son coeficientes
tcnicos conocidos

En OPL esto se resuelve mediante Pivote Complementario, Wolfe y en algunas


situaciones con aproximaciones de la Funcin de Lagrange, entre otros
algoritmos matemticos.
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL - Introduccin P. Restricciones


Se trata de la resolucin de problemas donde no existe una Funcin
Objetivo que buscar, si no encontrar una o ms asignaciones que
puedan satisfacer a la Restriccin
Conjunto de variables X, donde cada elemento toma valores de su respectivo Dominio
= 1 , 2 , 3 ,
= * 1 , 2 , 3 , , ( )+
Asignacin 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 asignacin 1 , 2 , 3 , , Satisface la restriccin R si:
(1 , 2 , 3 , , ) 1 , 2 , 3 ,
Una Restriccin es Satisfactible si existe al menos una asignacin que la satisface
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL
A. Introduccin
B. OPL para la Programacin con
Restricciones (P.R. o CP)
C. Estructura del Modelado en OPL y
Sintaxis

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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


Despus del contexto terico de cmo OPL da solucin a los problemas de
CP, vamos a ver, a modo general, como es el algoritmo de su resolutor.

Fase de Propagacin
de Consistencia
No

Si

FIN
Con Sol

Son Todos
Dominios
Unitarios?

Inconsistencia?
No

Si

Retroceso

Si
Existen
Dominios no
Vacos?

No

FIN
Sin Sol

Fase de Bsqueda
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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


Mapa de Componentes
ILOG CPLEX

ILOG SOLVER

ILOG SCHEDULER

IBM ILOG CPLEX CP

Cdigo
OPL
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL
A. Introduccin
B. OPL para la Programacin con
Restricciones (P.R. o CP)
C. Estructura del Modelado en OPL
y Sintaxis

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL Estructura y Sintaxis


a)
b)
c)
d)
e)

Datos
Variables
Funcin de optimizacin
Restricciones
Procedimiento bsicos

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL Estructura y Sintaxis


Datos Tipos bsicos:
//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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL Estructura y Sintaxis


Variables de decisin:
//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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL Estructura y Sintaxis


Funciones de optimizacin:
//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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

3. Lenguaje OPL Estructura y Sintaxis


Procedimientos Bsicos:
//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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Ejemplo: Coloreado de Mapa


El lenguaje OPL de IBM tiene un amplio repertorio de
instrucciones, funciones etc., pero a modo de introduccin
usaremos el primer ejemplo visto en clase.

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Ejemplo: Coloreado de Mapa


Declaracin 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 inicializacin del dominio----------execute{} //simplemente actualiza las definiciones

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Ejemplo: Coloreado de Mapa


Declaracin de Variables
//Variables de
dvar int gal =
dvar int can =
dvar int pva =
dvar int nav =
dvar int ara =
dvar int cat =
dvar int ast =
dvar int cyl =
dvar int rio =
dvar int mad =
dvar int clm =
dvar int val =
dvar int mur =
dvar int alu =
dvar int ext =
Facultad de Informtica
Universidad Complutense de Madrid

decisin---------------------------------in r; //Galicia
in r; //Cantabria
in r; //Pas Vasco
in r; //Navarra
in r; //Aragn
in r; //Catalua
in r; //Asturias
in r; //Castilla y Len
in r; //La Rioja
in r; //Madrid
in r; //Castilla la Mancha
in r; //Valencia
in r; //Murcia
in r; //Andaluca
in r; //Extremadura
IBM ILOG CPLEX CP Optimization Studio -2

Ejemplo: Coloreado de Mapa


Declaracin de Funcin de Optimizacin
//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 Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Ejemplo: Coloreado de Mapa


Mostrar Resultado
//Mostrar-----------------------------------------------execute {
writeln("\tGalicia
: ", Colores[gal]);
writeln("\tCantabria
: ", Colores[can]);
writeln("\tPas Vasco
: ", Colores[pva]);
writeln("\tNavarra
: ", Colores[nav]);
writeln("\tAragn
: ", Colores[ara]);
writeln("\tCatalua
: ", Colores[cat]);
writeln("\tAsturias
: ", Colores[ast]);
writeln("\tCastilla y Len
: ", 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 Informtica
IBM ILOG CPLEX CP Optimization Studio -2
Universidad Complutense de Madrid

Ejemplo: Coloreado de Mapa

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Uso del Lenguaje


El principal objetivo del uso de OPL es que el programador sea
capaz de modelar los problemas de optimizacin ms comunes
que se encuentran en entornos industriales.
OPL permite resolver eficientemente una extensa gama de
problemas scheduling (planificacin):
-problemas de construccin,
-proyectos con consideraciones presupuestarias,
-planificacin de carga de barcos
-proyectos de desarrollos de software a gran escala, etc.

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Uso del Lenguaje


VENTAJAS DE USO
El Lenguaje OPL es un lenguaje fcil de aprender y a la vez
potente.
Representacin muy cercana a la formulacin matemtica del
problema a resolver.
Se reduce el tiempo de desarrollo sin sacrificar eficiencia.
Compatibilidad de las bibliotecas de componentes.
Simplicidad: Resuelve problemas de tamao o dificultad
prcticamente ilimitados.
Agilidad : IBM ILOG CPLEX es compatible con una gran
variedad de sistemas informticos.

ndice
1.
2.
3.
4.
5.
6.

Introduccin
Historia y creacin
Lenguaje OPL
Ejemplo
Uso del lenguaje
Situacin actual

Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

Situacin Actual
Ampliamente usado en la actualidad.
Conexin a Bases de datos, servidores, libreras para
C++, C y Java.
Cuenta con una plataforma de programacin,
llamado IBM ILOG CPLEX Optimizer Studio que
permite disponer de un sistema de soporte para la
toma de decisiones mediante anlisis para mejorar la
eficacia, reducir costes y aumentar la rentabilidad.
ltima versin desarrollada: 12.4.
Facultad de Informtica
Universidad Complutense de Madrid

IBM ILOG CPLEX CP Optimization Studio -2

You might also like