P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 18 -
Una vez explicada la batería de problemas con la que vamos a trabajar, y según la
metodología a seguir en este proyecto, pasamos a describir los modelos de resolución
exacta con los que vamos a trabajar.
Utilizaremos modelos matemáticos para llegar a la solución óptima tanto para el
objetivo táctico con trabajos sin clases como para la resolución táctica con trabajos con
clases.
Para poder gestionar la información que proporcionaba la batería de problemas se ha
implementado un algoritmo en Visual Basic, en dicha implementación tanto para el
problema sin clases como para el problema con clases el procedimiento ha sido el
mismo:
-Procedimiento de lectura donde todos los problemas de la batería se han volcado uno
a uno.
-Gestionar la información que cada problema individual posee y volcarla en variables
matriz para posteriormente trabajar con ella.
-Con la información necesaria procedente de los problemas con los que vamos a
trabajar, se le aplica un algoritmo con el que obtenemos el modelo matemático con la
función objetivo y las restricciones acordes con la metodología necesaria para la
solución óptima del problema Táctico.
-El archivo construido mediante algoritmo que contiene el modelo matemático tiene
extensión para ser resuelto mediante el programa de resolución LINGO, lg4.
Como se ha comentado anteriormente este procedimiento es el mismo tanto para los
problemas sin clase como para los problemas con clases.
4.1.- Modelos utilizados para máquinas sin clase.
El modelo sin clases busca el mínimo número de máquinas necesarias para realizar los
trabajos.
A continuación explicaremos el modelo utilizado para el cálculo del mínimo número de
máquinas necesarias.
El procedimiento será:
- Declaramos las variables e índices utilizados.
- Descripción de la Función Objetivo.
- Descripción de las restricciones utilizadas.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 19 -
4.1.1.-Declaración de variables y subíndices.
Y = Variable discreta o continua, que nos indica el número de máquinas utilizadas.
= Variable binaria o continua con subíndices del número de tareas y diferentes
posibles instantes de comienzo.
t = Subíndice que recorre todos los posibles instantes de comienzo de una tarea.
i = Subíndice por el que recorre todas las tareas que pueden ser accionadas en un
instante de tiempo t.
J = número total de tareas.
k = Subíndice que recorre las distintas posibilidades de comienzo por los que la
variable X puede ser activada.
= Primer instante posible de inicio de la tarea i.
= Último instante posible de inicio de la tarea i.
4.1.2.-Función objetivo.
Min Y
La finalidad de la función objetivo es obtener el mínimo número de máquinas que
realicen todas las tareas.
4.1.3.-Restricciones.
a.- Restricción para minimizar el número de máquinas.
Esta restricción obliga que en cada instante del horizonte temporal donde se puedan
accionar cada uno de los posibles inicios de cada tarea, sea menor o igual al número
de máquinas calculadas.
Un ejemplo:
X1_1 + X1_2 + X1_3 + X2_1 + X2_2 + X3_1 <= Y;
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 20 -
Esta restricción es sacada en un instante concreto dentro de todo el intervalo donde se
podrán calcular.
-Vemos que en este instante concreto las posibles tareas que pueden estar activas son
las que corresponden con el primer subíndice de la variable .
En este ejemplo, las tareas son la 1º, 2º y 3º.
-También podemos observar que dentro de este instante concreto dentro del intervalo
total de posible activación de tareas, el segundo subíndice marca la posibilidad de que
una misma actividad se accione en diferentes instantes de inicio por lo que:
X1_1 = quiere decir que en ese instante la actividad 1 puede estar activada
habiendo empezado en su primer instante posible de inicio.
X1_2 = quiere decir que en ese instante la actividad 1 puede estar activada
habiendo empezado en su segundo instante posible de inicio.
b.- Restricción para que solo una tarea puede ser activada en un mismo instante.
Esta restricción obliga que dentro de todos los instantes en los que se pueda activar
una tarea, solo se active uno.
Un ejemplo:
X1_1+X1_2+X1_3+X1_4+X1_5 = 1
De esta restricción vemos que cuando la tarea 1 pueda ser activada en los cinco
instantes diferentes, sólo sea activada en uno de ellos.
Cabe destacar que los subíndices que corresponde a los posibles instante de comienzo
no marcan el instante, sino el numero de instantes posibles, esto quiere decir que la
tarea uno sea posible realizarla en los instantes del 1 al 5. Sino que hay 5 posibles
instantes de comienzo, el instante concreto de comienzo se puede leer en la
información concreta de la tarea en cada uno de los problemas de la batería.
Por lo que la variable estará activa en la restricción dependiendo del instante t
general que corresponde con el intervalo total de acción desde el primer instante
posible de la primera tarea hasta el último instante posible de finalización de la última
tarea.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 21 -
4.2-Implementacion del modelo matemático sin clases en Visual Basic.
El procedimiento para implementar en Visual Basic el modelo matemático y obtener el
archivo Lingo donde se calculará la resolución óptima. Mostramos el modelo completo
para su mejor comprensión.
Mostramos un breve esquema del procedimiento para implementar el modelo
matemático en archivo con extensión .lg4 para resolverlo con LINGO.
Para comentar el algoritmo utilizado para crear el archivo LINGO con el modelo, se
expondrá de forma esquemática para entender la generalidad de su proposición,
haciendo leve referencia a las funciones utilizadas para fines diferentes a la obtención
del modelo matemático.
De acuerdo a lo comentado en el párrafo anterior se expondrá la función principal (Sub
Main), la cual contiene las funciones necesarias para completar el algoritmo.
Respecto a la declaración de las variables, solo se comentaran las necesarias para
comprender como se ha obtenido el modelo matemático.
Algoritmo de Visual
Basic donde trata la
información de los
problemas en extensión
.txt y crea el archivo
para LINGO .lg4 con el
modelo matemático
Archivo de la
batería de
problemas con
extensión .txt
Extensión lg4.
con la función
objetivo y
restricciones
para calcular el
óptimo.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 22 -
FUNCIÓN PRINCIPAL, Sub main.
Sub main()
FicheroEntrada = "File_3_2_400_16_3_4_9.txt"
LeerArchivoEntrada
GenerarModelo
End Sub
El primer paso es meter en la variable “FicheroEntrada” el nombre del problema que
queremos realizar.
Cabe destacar que este procedimiento de introducir el nombre del problema a mano
no se realizó a la hora de obtener todos los problemas, ya que debido a su número,
1080 problema en la batería, llevaría mucho tiempo. Para todos los problemas de la
batería se utilizo un pequeño algoritmo donde combina todas las posibilidades y así
obtener la totalidad de la batería.
4.3.- Modelos utilizados para máquinas con clases.
El modelo con clases busca el mínimo coste posible, el cálculo se realiza sumando
todas la máquinas de cada clase que se han utilizando, sabiendo que cada clase de
máquina tiene un coste diferente.
A continuación explicaremos el modelo utilizado para el cálculo del mínimo número de
máquinas necesarias.
El procedimiento será el mismo que con la máquinas sin clases:
- Declaramos las variables e índices utilizados.
- Descripción de la Función Objetivo.
- Descripción de las restricciones utilizadas.
4.3.1.-Declaración de variables.
= Variable discreta o continua, que nos indica el número de máquinas de cada clase
utilizadas.
= Variable binaria con subíndices del número de tareas, la clase de tarea y
diferentes posibles instantes de comienzo.
t = Subíndice que recorre todos los posibles instantes de comienzo de una tarea.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 23 -
i = Subíndice por el que recorre todas las tareas que pueden ser accionadas en cada
instante de tiempo t.
J = Número total de tareas.
c = Subíndice que recorre las clases de cada trabajo.
C = Número total de clases de tareas.
k = Subíndice que recorre las distintas posibilidades de comienzo por los que la
variable X puede estar activa.
= Primer instante posible de inicio de la tarea i.
= Último instante posible de inicio de la tarea i.
L ( c) = Matriz de compatibilidad.
4.3.2.-Función objetivo.
La finalidad de la función objetivo es la obtener el mínimo coste de máquinas,
conociendo el coste que tiene cada clase de máquina.
4.3.3.-Restricciones.
a.- Restricción para minimizar el número de máquinas.
Esta restricción es parecida a la del modelo matemático sin clases, lo único que el
estudio de cada instante temporal de todo el intervalo se hace para cada clase de
trabajo, por lo que obliga que en cada instante del horizonte temporal donde se
puedan accionar cada uno de los posibles inicios de cada tarea, sea menor o igual al
número de máquinas calculadas de cada clase.
Un ejemplo:
X1_1_1 + X1_1_2 + X1_1_3 + X3_1_1 <= Y1;
X1_2_1 + X1_2_2 + X1_2_3 + X2_2_1 + X2_2_2 <= Y2;
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 24 -
Estas restricciones son sacadas del modelo matemático final, con la intención de hacer
ver la diferencia con el modelo sin clases.
Estas dos restricciones ejemplos se han tomado en un instante temporal cualquiera,
pudiendo no ser el mismo instante en las dos restricciones.
Se aprecia que una restricción es para la clase de máquina 1 y la otra para la clase de
máquina 2.
El mismo procedimiento de comprobación de instantes se harán para todas las clases
de máquinas.
- Vemos que en los instantes en los que se encuentran las dos restricciones
respectivamente, las posibles tareas que pueden estar activas son las que
corresponden con el primer subíndice de la variable .
En este ejemplo, las tareas son la 1º y 2º en las dos restricciones
- Como en el modelo sin clases, podemos observar que, en cada clase de máquinas,
dentro de este instante concreto dentro del intervalo total de posible activación de
tareas, el segundo subíndice marca la posibilidad de que una misma actividad se
accione en diferentes instantes de inicio por lo que:
X1_1_2 = quiere decir que en ese instante la actividad 1, de la clase de
máquina 2, puede estar activada habiendo empezado en su primer instante
posible de inicio.
X2_2_1 = quiere decir que en ese instante la actividad 2, de la clase de
máquina 1, puede estar activada habiendo empezado en su segundo instante
posible de inicio.
b.- Restricción para que solo una tarea puede ser activada en un mismo instante.
Esta restricción obliga que de cada clase de máquinas, dentro de todos los instantes en
los que se pueda activar una tarea, solo se active uno. Pasando por todas las tareas.
Un ejemplo:
X4_1_1 + X4_2_1 + X4_1_2 + X4_2_2 + X4_1_3 + X4_2_3 + X4_1_4 + X4_2_4
+ X4_1_5 + X4_2_5 = 1;
De esta restricción vemos que cuando la tarea 4 pueda ser activada en los cinco
instantes diferentes, y las dos clases de máquinas, solo sea activada en uno de ellos.
4.4.-Implementacion del modelo matemático con clases en Visual Basic.
Como en el apartado anterior para máquinas sin clases, el procedimiento para
implementar en Visual Basic el modelo matemático y obtener el archivo Lingo donde
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 25 -
se calculará la resolución optima, siempre que se calcule dentro del tiempo límite de 4
horas establecido, se comenta a continuación paso a paso.
Mostramos el modelo matemático.
El procedimiento es el mismo con máquinas sin clases, como veremos en el esquema a
continuación:
La implementación del archivo de LINGO en Visual se explica igual que en el apartado
anterior.
FUNCIÓN PRINCIPAL, Sub main.
Sub main()
FicheroEntrada = "File_3_2_400_16_3_4_9.txt"
LeerArchivoEntrada
GenerarModelo
End Sub
El primer paso es meter en la variable “FicheroEntrada” el nombre del problema que
queremos realizar.
Algoritmo de Visual
Basic donde trata la
información de los
problemas en extensión
.txt y crea el archivo
para LINGO .lg4 con el
modelo matemático
Archivo de la
batería de
problemas con
extensión .txt
Extensión lg4.
con la función
objetivo y
restricciones
para calcular el
óptimo.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 26 -
Cabe destacar que este procedimiento de introducir el nombre del problema a mano
no se realizó a la hora de obtener todos los problemas de la batería, ya que debido a su
número, 1080 problema en la batería, llevaría mucho tiempo. Para todos los
problemas de la batería se utilizó un pequeño algoritmo donde combina todas las
posibilidades y así obtener la totalidad de la batería.
4.5.- Pasos para la resolución de un problema.
Una vez que hemos creado todos los archivos .lg4, hacemos los cálculos con el
programa LINGO. De los resultados obtenidos anotamos el resultado de la función
objetivo, tiempo de resolución y en el caso de máquinas con clases, el número de clase
de máquinas empleados para resolver.
Cabe destacar que para la resolución de los modelos matemáticos mediante archivos
LINGO se ha acotado el tiempo de resolución empleados en cada problema, siendo el
tiempo máximo de espera de 4 horas.
En los casos en los que el tiempo de resolución de los modelos supere las 4 horas, se
paraliza el cálculo y se apuntan los valores calculados hasta ese instante.
Se realiza una explicación sobre el programa utilizado.
4.5.1.- Software LINGO.
LINGO: (LINear Generalize Optimizer) es una herramienta simple para formular
problemas lineales y no lineales, resolverlos y analizar su solución. El resultado que
LINGO nos proporciona es la optimización que nos ayuda a encontrar el mejor
resultado: la ganancia más alta, o el costo más bajo. A menudo estos problemas
involucran el uso más eficiente de los recursos. Los problemas de optimización son
clasificados a menudo como lineales o no lineales, dependiendo si las relaciones en el
problema son lineales con respecto a las variables.
Uno de los rasgos más poderosos de LINGO es su aplicación en el lenguaje de modelo
matemático. El cual permite expresar un problema de una manera muy similar a la
anotación matemática normal pudiendo también, expresar una serie entera de
restricciones en una declaración compacta. Esto lleva a modelos que son mucho más
fáciles de mantener.
Otro aspecto es la sección de los datos, que le permite aislar los datos de la
formulación del modelo. De hecho LINGO puede leer datos incluso de una hoja de
cálculo separada, base de datos, o archivo de texto. Con datos independientes del
modelo, es mucho más fácil de hacer cambios, y hay menos oportunidad de error
cuando se realiza el modelo.
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 27 -
4.5.2.-Resolucion de problemas.
A continuación se adjuntarán un rápido tutorial que explica como correr los
problemas:
1.-Una vez que hemos creado todos los archivos .lg4, para accionarlos solo tenemos
que accionarlos con doble click, el problema que queramos correr.
Figura 4.1.- Batería de problemas en formato .lg4.
2.-Una vez el doble click, se abre el programa LINGO con el modelo matemático.
Figura 4.2.- Programa LINGO abierto con problema a resolver.
Accionando el botón Solve, se acciona el programa y comienza el cálculo del modelo matemático.
Figura 4.2.- Botón Solve
P.F.C. Resolución exacta y heurística de problemas de programación táctica de trabajos en intervalos.
4.-Modelos de resolución exacta empleados. 2014
- 28 -
3.- Pantalla de seguimiento de resolución.
5.-Pantalla de óptimos.
Una vez se consigue el óptimo, bien porque se termina el proceso de búsqueda o
porque interrumpimos dicha búsqueda, nos aparece una pantalla donde se ven las
variables que se activan.