Documente Academic
Documente Profesional
Documente Cultură
Una fábrica tiene que programar a sus trabajadores en turnos para tener una producción continua, dado
que resulta caro parar y volver a arrancar el proceso de producción. Los trabajadores tienen una jornada
laboral de 8 horas, un turno inicia cada 4 horas y tienen requerimientos mínimos para cubrir el personal
por turno. El tomador de decisiones tiene que hacer el programa de arribos de los trabajadores tomando
en cuenta la demanda en cada turno, minimizando el numero de empleados a ocupar por día.
Formulación
Como podemos deducir cada trabajador puede cubrir 2 turnos dado que su jornada es de 8 horas y los
turnos son de 4 horas, así que para cubrir la demanda de trabajadores debemos tomar en cuenta los que
entran en el turno en proceso mas los trabajadores que entraron el turno anterior. Entonces empecemos
a definir nuestro problema.
Como tenemos 6 turnos podemos declararlos como los indices por los cuales nos guiaremos es decir
Definimos ahora que la suma de todos los empleados de los turnos será los que minimizaremos,
entonces nuestras variables las definiremos como
y cada restricción se formará tomando en cuenta los requerimientos de la demanda de los turnos de la
siguiente manera
x i x i−1≥d i ∀ i=2,. .6 .
x 1 x6 =d 1
x i ≥0
variables
z;
positive variables
x1,x2,x3,x4,x5,x6;
equations
fo Funcion Objetivo
eq1 restriccion para el turno 1
eq2 restriccion para el turno 2
eq3 restriccion para el turno 3
eq4 restriccion para el turno 4
eq5 restriccion para el turno 5
eq6 restriccion para el turno 6;
fo.. z=e=x1+x2+x3+x4+x5+x6;
eq1.. x6+x1=g=10;
eq2.. x1+x2=g=20;
eq3.. x2+x3=g=80;
eq4.. x3+x4=g=65;
eq5.. x4+x5=g=55;
eq6.. x5+x6=g=20;
Text 1: prog.gms
Básicamente lo que hacemos en este código es insertar el modelo extendido de acuerdo al formato de
GAMS, declarando nuestras variables libres, las positivas, el conjunto de ecuaciones la integración del
modelo y se llama a resolver con programación entera mixta minimizando z.
GAMS nos arroja un archivo de salida con el mismo nombre que nuestra entrada pero con la
extensión .lst, en esta nos detalla el proceso de solución y el valor de nuestras variables y restricciones.
S O L V E S U M M A R Y
MODEL prog OBJECTIVE z
TYPE MIP DIRECTION MINIMIZE
SOLVER CPLEX FROM LINE 27
IBM ILOG CPLEX May 24, 2010 23.4.3 LEX 17710.17719 LEI x86_64/Linux
Cplex 12.1.0, GAMS Link 34
LP status(1): optimal
Optimal solution found.
Objective : 145.000000
fo Funcion Objetivo
eq1 restriccion para el turno 1
eq2 restriccion para el turno 2
eq3 restriccion para el turno 3
eq4 restriccion para el turno 4
eq5 restriccion para el turno 5
eq6 restriccion para el turno 6
Text 2: prog.lst
Como no se especificó que solver utilizará GAMS este elige a CPLEX por defecto y resuelve el
problema mediante el método de ramificación y acotamiento. La solución la arroja en un tiempo de
0.001 segundos, dado que es un problema muy pequeño y fácil de resolver computacionalmente.
Finalmente debemos interpretar los resultados, la solución indica los trabajadores que deberán entrar
para cada turno, véase la tabla siguiente:
El total de trabajadores que tendremos será de 145 que es el optimo encontrado, si nos damos cuenta
no podemos ajustar al 100% los requerimientos dado que tendremos un exceso de trabajadores en el
segundo horario, esto es debido a que si quisiéramos ajustar perfectamente el problema se vuelve
infactible es decir, se quedaría corto el personal para el tercer turno y no se cumpliría con el mínimo.