Sunteți pe pagina 1din 5

Lgica y optimizacin Aplicadas

Optimizacin de un problema de scheduling en OPL Studio


Martin Esposito; Francisco Oldecop
Registros: 15691 15801

martincho412@gmail.com; frantz.dmc@gmail.com

Hemos realizado un ejemplo de aplicacin de las capacidades y el funcionamiento del lenguaje de


optimizacin OPL en la herramienta OPL Studio de ILOG Software. Para ello, hemos tomado como
base, una posible situacin (simplificada para este ejemplo) real en la que sea necesaria la
optimizacin de tareas y despus de realizado un anlisis del problema, se ha procedido a la
construccin del programa en OPL que permitir encontrar una solucin optimizada del conflicto.

Descripcin y Narrativa del caso de aplicacin.


Una pequea fbrica de calzado elabora tres tipos de producto: Zapatillas deportivas, Botas de
trabajo y ojotas playeras.

La fabrica cuenta con cuatro maquinas para realizar los trabajos: Una maquina cortadora, una
mquina perforadora, una mquina de coser y una maquina de engomado.

Los trabajos se realizan en lotes de a 20 pares.

El proceso de elaboracin de cada lote de los productos consiste en:

Para las Zapatillas Deportivas:


1. Cortado de la tela (10 minutos).
2. Costura (15 minutos).
3. Engomado de la suela (10 minutos).
Para las Botas de trabajo:
1. Cortado de la tela y el cuero (14 minutos).
2. Perforado del cuero (10 minutos).
3. Engomado del cuero, la tela y la suela (20 minutos).
4. Costura (15 minutos).
Para las Ojotas Playeras:
1. Cortado de la goma (5 minutos).
2. Perforacin de la suela (2 minutos).

La empresa consta de un nico camin, con capacidad para 60 cajas de calzado. Cuando se
terminan tres lotes de calzado, se meten en cajas, se cargan en el camin y se despachan a depsito
(20 minutos).

1
Lgica y optimizacin Aplicadas

Descripcin del programa


En esta seccin, realizaremos una breve descripcin del cdigo del programa, comentando el
propsito y la funcionalidad de sus elementos:

1 enum Tasks ={cortaZ, cortaB, cortaO, perfB, perfO, costZ, costB, engoZ, engoB,
despacho};

2 scheduleHorizon = 121;

3 int duration[Tasks] = [10, 14, 5, 10, 2, 15, 15, 10, 20, 20];

4 Activity a[t in Tasks](duration[t]);

5 UnaryResource Cortadora;

6 UnaryResource Perforadora;

7 UnaryResource Maq_Coser;

8 UnaryResource Maq_Engomar;

En esta primera seccin del cdigo, se definen los principales elementos del problema con los que se
va a trabajar, incluyendo:

* Las tareas que se han de realizar (con enum Tasks en la linea 1) que incluyen cortar,
perforar, coser y engomar cada tipo de calzado y el despacho en el camin.

* La duracin de dichas tareas (en el arreglo de enteros duration de la linea 3).

* Los recursos de los que se dispone para realizar las tareas (en los UnaryResource de las
lneas 5 a 8) formados por las cuatro maquinas de las que dispone la fabrica.

En la lnea 2, se define el horizonte de planificacin o scheduleHorizon que marca la cota superior del
tiempo de trabajo, que para este ejemplo, se define como la suma de la duracin de todas las tareas
(121).

La sentencia de la lnea 4 (Activity a[t in Tasks](duration[t])) define un arreglo de actividades a, que


forma el vinculo entre el enum Tasks de las tareas y el arreglo de enteros duration, relacionando a
cada tarea con su duracin.

9 minimize

10 a[despacho].end

Las lneas 9 y 10 indican a OPL las actividades sobre las que debe trabajar y el tipo de tarea que
debe realizar (en este caso, minimizar).

2
Lgica y optimizacin Aplicadas

11 subject to {

12 a[cortaZ] precedes a[costZ];

13 a[costZ] precedes a[engoZ];

14 a[engoZ] precedes a[despacho];

15 a[cortaB] precedes a[perfB];

16 a[perfB] precedes a[engoB];

17 a[engoB] precedes a[costB];

18 a[costB] precedes a[despacho];

19 a[cortaO] precedes a[perfO];

20 a[perfO] precedes a[despacho];

21 a[cortaZ] requires Cortadora;

22 a[costZ] requires Maq_Coser;

23 a[engoZ] requires Maq_Engomar;

24 a[cortaB] requires Cortadora;

25 a[perfB] requires Perforadora;

26 a[engoB] requires Maq_Engomar;

27 a[costB] requires Maq_Coser;

28 a[cortaO] requires Cortadora;

29 a[perfO] requires Perforadora;

30 };

En la lnea 11 se define un bloque que se extiende hasta la lnea 30, que contiene las restricciones
impuestas sobre las actividades a minimizar.

* Las lneas 12 a 20 mediante la palabra reservada precedes, indican la precedencia de las


actividades, es decir, que actividades deben realizarse antes que otras.

# Por ejemplo, en la lnea 12, a[cortaZ] precedes a[costZ] nos indica que no se puede realizar
la costura de las zapatillas sin antes haber cortado la tela.

* En las lneas 21 a 29, de definen mediante la palabra reservada requires los recursos que
necesita cada actividad para realizarse.

# En la lnea 24, por ejemplo, a[cortaB] requires Cortadora indica que la actividad de cortar el
cuero para las botas requiere el uso de la Cortadora, y por lo tanto, no se puede realizar esta
actividad mientras la maquina est ocupada.

3
Lgica y optimizacin Aplicadas

Resultado del programa.


El trabajo de optimizacin de OPL en este ejemplo consiste en encontrar una planificacin que
permita realizar las actividades en el menor tiempo posible.

Nuestro programa encuentra una solucin en un tiempo de 79 minutos:

4
Lgica y optimizacin Aplicadas

Optimal Solution with Objective Value: 79

a[cortaB] = [0 -- 14 --> 14]

a[cortaZ] = [14 -- 10 --> 24]

a[perfB] = [14 -- 10 --> 24]

a[cortaO] = [24 -- 5 --> 29]

a[perfO] = [29 -- 2 --> 31]

a[costZ] = [24 -- 15 --> 39]

a[engoB] = [24 -- 20 --> 44]

a[engoZ] = [44 -- 10 --> 54]

a[costB] = [44 -- 15 --> 59]

a[despacho] = [59 -- 20 --> 79]

Conclusiones
Mediante este sencillo ejemplo hemos podido observar el funcionamiento y la utilidad de OPL Studio
como herramienta para la optimizacin en problemas de scheduling de tareas con restricciones de
precedencia y recursos limitados.

En el resultado final de la ejecucin del programa podemos ver que hay tareas que pueden realizarse
de manera concurrente, logrando as un menor tiempo de trabajo del que hubiramos obtenido con
una ejecucin lineal simple.

Material Utilizado
ILOG OPL Studio 3.7 Lenguaje Manual

https://en.wikipedia.org/wiki/Scheduling_(production_processes)

S-ar putea să vă placă și