• No se han encontrado resultados

OPL, un lenguaje de programación de restricciones.

N/A
N/A
Protected

Academic year: 2021

Share "OPL, un lenguaje de programación de restricciones."

Copied!
41
0
0

Texto completo

(1)

OPL, un lenguaje de

programación de restricciones.

Nacho Castiñeiras

(2)

Índice

z

Primeros pasos

z

ILOG CPLEX

z

ILOG SOLVER

(3)

Primeros pasos.

(4)

Objetivo de esta fase previa.

Uhm, ¡cómo me gustaría usar OPL! Lástima que deba conocer la sintaxis

Primeros pasos

(5)

Primeros pasos

z

Motivación

(6)

Motivación

¿Qué queremos?

Resolver problemas de :

¾

Satisfacción de restricciones.

¾

Optimización de restricciones.

(7)

Motivación

¿Cómo resolverlos?

Ciclo de vida

Descripción ‘en Castellano’

del problema Modelarlo

(8)

Mapa de componentes

¿Qué nos ofrece ILOG?

¾

Resolutores especializados.

¾

Un lenguaje de modelado: OPL

(9)

Mapa de componentes

Modelo

OPL Resolutor(modelo) Æ solución Descripción

(10)

Mapa de componentes

Código OPL

OPL Studio 3.7

ILOG CPLEX ILOG SOLVER

(11)
(12)

Sintaxis mínima OPL

Estructura de un modelo OPL.

1.

Datos

2.

Variables

3.

Función de óptimo

4.

Restricciones

(13)

Sintaxis mínima OPL.

Datos

¾

Tipos básicos.

int, float, enum ¾

Tipos estructurados.

(14)

Datos.

Tipos básicos

int

z int numero1 = 2;

z int numero2 = numero1 * numero1 + 1; z int numero3 = ...;

(15)

Datos. Tipos básicos

float

z float real = -3.2;

(16)

Datos. Tipos básicos.

enum

z enum Color { Azul, Grana, Naranja };

z enum Days { Lunes, Miercoles, Viernes,

Domingo};

(17)

Datos. Tipos estructurados

range

z range coches 1..6;

(18)

Datos. Tipos estructurados

arrays

Dos aspectos a estudiar

(19)

Datos. Tipos estructurados

arrays

int

mi_array[2..5] =

[10, 20, 30, 40];

//int

a1 = mi_array[3];

Color concesionario[coches] =

[Azul, Grana, Naranja, Naranja, Azul, Azul];

(20)

Datos. Tipos estructurados

arrays

int

camisetas[i

in

1..3] =

i+1;

int

feliz[Days,1..3] =

[ [1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12] ];

(21)

Datos. Tipos estructurados

z int muy_elegante[Days, Color] = ...;

(22)
(23)

Datos. Tipos estructurados

sets

{int} pares_hasta4 = {0,2,4};

{Conexion} conexiones = {<1,2>, <1,3>, <2,3>}; //Array indexado por los elementos de un

conjunto. Estos elementos son estructuras.

(24)

Sintaxis mínima OPL

Estructura de un modelo OPL.

1.

Datos

2.

Variables

3.

Función de óptimo

4.

Restricciones

(25)

Sintaxis mínima OPL

Variables de decisión

(26)

Variables de decisión

int

z var int entero1 in 0..5;

z var int nuevo_concesionario1[coches] in 0..1;

enum

(27)

Variables de decisión

float

z var float x3; z var float+ x4;

(28)

Sintaxis mínima OPL

assert

Restricciones dependientes únicamente de datos de entrada.

assert

(29)

Sintaxis mínima OPL

Estructura de un modelo OPL.

1.

Datos

2.

Variables

3.

Función de óptimo

4.

Restricciones

(30)
(31)

Sintaxis mínima OPL

Estructura de un modelo OPL.

1.

Datos

2.

Variables

3.

Función de óptimo

4.

Restricciones

(32)

Sintaxis mínima OPL

Restricciones

¾ Lineales

(33)

Restricciones

Lineales

(34)

Restricciones

No lineales

(35)

Sintaxis mínima OPL

Estructura de un modelo OPL.

1.

Datos

2.

Variables

3.

Función de óptimo

4.

Restricciones

(36)

Sintaxis mínima OPL

Procedimientos de búsqueda search{

tryall(j in 0..5 ordered by decreasing j) entero1 = j;

(37)

Sintaxis mínima OPL

Operadores.

Sobre grupo elementos. sum, prod, max, min Relacionales. =, <>, <, <=, >, >=

Lógicos. \/, &, not, =>, <=> Binarios. +, -, *, /, mod

(38)

Sintaxis mínima OPL

Condiciones

z //filtrado de un conjunto

{Conexion} nuevas_conexiones = { p | p in

conexiones : p.origen + p.destino = 4};

z {int} modulos[i in 3..4] = { e | e in 1..10 : e

mod i = 0 };

(39)
(40)

Sintaxis mínima OPL

Ideas extra sobre restricciones

z //Restricciones de orden superior

forall(i in Range)

s[i] = sum(j in Range) (s[j] = i);

z //Array indexado con posición de otro array

forall(m in Men)

husband[wife[m]] = m;

z //Restricciones globales

(41)

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

De non ser así, as facturas non poderán tramitarse para o pago, e a USC, a través do responsable de asuntos económicos do centro da USC que solicitou os seus servicios Rexeitará

En nuestra opinión, las cuentas anuales de la Entidad Pública Empresarial Red.es correspondientes al ejercicio 2010 representan en todos los aspectos significativos la imagen fiel

En nuestra opinión, las cuentas anuales de la Entidad Pública Empresarial Red.es correspondientes al ejercicio 2012 representan en todos los aspectos

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo 168

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

The possibility of non-trivial representations of the gauge group on wavefunc- tionals of a gauge invariant quantum field theory leads to a generation of mass for intermediate