Está en la página 1de 72

PLANIFICACIÓN DE LA

PRODUCCIÓN

PROGRAMACIÓN DE LA
PRODUCCIÓN (UNIDAD 5)
Profesor: Francisco Yuraszeck Espinosa
francisco.yuraszeck@unab.cl
Doctor© en Ingeniería Industrial Pontifica Universidad Católica de Valparaíso
Ingeniero Comercial Universidad Técnica Federico Santa María
Master of Science en Marketing Universidad Adolfo Ibáñez
Diplomado en Gestión de Operaciones UAI - eClass
Socio Individual Instituto Chileno de Investigación Operativa (ICHIO)

Segundo Trimestre 2019


Sistemas de Manufactura

Flow Shop: Sistema de producción en el cual n


trabajos se procesan en el mismo orden en las m
máquinas. Poca variedad de productos y alta
producción.
Sistemas de Manufactura

Job Shop: Sistema en el cual n trabajos se procesan


en m máquinas pero no necesariamente siguiendo la
misma ruta o con el mismo número de operaciones.
Alta variedad y poco volumen.
Sistemas de Manufactura

Open Shop: Sistema de producción en el cual n


trabajos se procesan en m máquinas donde la ruta
operaciones no esta predefinida.
Clasificación de los Problemas de Scheduling

Notación de Graham et al (1979): α/β/γ


α: Framework
Clasificación de los Problemas de Scheduling

Notación de Graham et al (1979): α/β/γ


β: Restricciones
Clasificación de los Problemas de Scheduling

Notación de Graham et al (1979): α/β/γ


γ: Función objetivo
Programación de Operaciones (Scheduling)

La Programación de Operaciones tiene por propósito


definir de manera precisa el conjunto de tareas y
fechas en que deben programarse las actividades del
personal y/o equipamiento de modo de cumplir con
las fechas de entrega programadas o requeridas por
las diferentes ordenes de pedido.
Programación de Operaciones (Scheduling)

Una adecuada programación permitirá, entre otros


aspectos:
➢ Decidir qué máquinas concretas deberán realizar
cada una de las operaciones requeridas (asignación)
➢ Determinar la secuencia de los trabajos
(programación)
➢ Controlar el inicio efectivo de la ejecución de las
diferentes tareas (lanzamiento)
➢ Controlar el avance de los trabajos (seguimiento)
➢ Adoptar medidas antes atrasos o pedidos urgentes
(impulsión)
Programación de Operaciones (Scheduling)

En lo que sigue fijaremos la atención en problemas


relacionados con definir una secuencia de los trabajos
a través de las distintas máquinas en un taller.

Número de máquinas:
➢ Una máquina
➢ Varias máquinas
- máquinas en paralelo
- flujo en serie
- taller general o de ruta aleatoria
Programación de Operaciones (Scheduling)

Naturaleza del Proceso de Llegada de Trabajos:

➢ Estático: Todos los trabajos llegan simultáneamente


y de manera previa al inicio de las operaciones.

➢ Dinámico: Los trabajos llegan de manera


intermitente una vez que el sistema está en operación,
pudiendo ocurrir en instantes conocidos o aleatorios.
Programación de Operaciones (Scheduling)

Naturaleza del Tiempo del Proceso:

➢ Determinístico: Se asume un tiempo de proceso


conocido cuando los trabajos llegan.

➢ Probabilístico: El tiempo de proceso es una


variable aleatoria.
Programación de Operaciones (Scheduling)

Algunas definiciones previas:

➢ Ruta: secuencia de operaciones en un trabajo.


➢ Tiempo de flujo: tiempo total que un determinado
trabajo permanece en un taller.
➢ Tardanza: diferencia entre el tiempo de flujo y la
fecha de entrega.
➢ Atraso: max{0,Tardanza}.
➢ Makespan: tiempo activo del taller concluida la
última operación de los trabajos programados.
Programación de Operaciones (Scheduling)

Para determinar una buena programación entre


diferentes alternativas posibles existe una gama de
criterios tendientes a garantizar el cumplimiento de
las fechas lo más holgadamente posible, entre los
cuales destacan:

➢ minimizar el tiempo de flujo promedio.


➢ maximizar la utilización de las máquinas.
➢ minimizar el atraso máximo.
➢ minimizar el atraso promedio.
➢ minimizar el makespan.
Programación de 1 Máquina

Problema: secuenciar n trabajos en la máquina de tal


forma que se minimice un objetivo:

Posibles Objetivos: Tiempo promedio de flujo,


Tardanza Ponderada, Retardo máximo, Número de
trabajos tardíos, etc.

En general los problemas de secuenciación de


trabajos en una máquina son NP-hard!! (ver:
https://en.wikipedia.org/wiki/NP-hardness)
Programación de Operaciones (Scheduling)

Reglas de Prioridad: Para conseguir el objetivo


propuesto, en diversas situaciones es posible definir la
secuencia de los trabajos de acuerdo a una simple
regla de prioridad como las que se enumera a
continuación:

1. FIFO (First in First out). Los trabajos se procesan en


orden de llegada.
2. LIFO (Last in First out). Los trabajos se procesan en
orden inverso de llegada.
Programación de Operaciones (Scheduling)

4. SPT (Shortest Processing Time). Los trabajos se


procesan en orden creciente de tiempo de proceso.
5. LPT (Largest Processing Time). Los trabajos se
procesan en orden decreciente de tiempo de proceso.
6. EDD (Earliest Due Date). Los trabajos se procesan
en orden creciente de fecha de entrega.
Ejemplo: Programación de Operaciones

Una máquina / llegada estática / tiempo proceso


determinístico
Se tiene n trabajos que llegan simultáneamente al
sistema y cuyos tiempos de proceso son fijos y
conocidos. Se deben programar los siguientes
trabajos:
Ejemplo: Programación de Operaciones

FIFO: Suponiendo que se recibieron en el orden dado.


Ejemplo: Programación de Operaciones

LIFO: Se procesan en orden inverso al dado en el


ejemplo.
Ejemplo: Programación de Operaciones

SPT: Se ordenan de manera creciente por tiempo de


proceso.
Ejemplo: Programación de Operaciones

LPT: Se ordenan de manera decreciente por tiempo


de proceso.
Ejemplo: Programación de Operaciones

EDD: Se ordenan de acuerdo a fecha de entrega.


Ejemplo: Programación de Operaciones

Al minimizar el tiempo de flujo promedio:

Resultado General: SPT minimiza el tiempo de flujo


promedio
Ejemplo: Programación de Operaciones

Al minimizar el atraso promedio:


Ejemplo: Programación de Operaciones

Al minimizar el atraso máximo:

Resultado General: EDD minimiza el atraso máximo (al


igual que LIFO en este ejemplo)
Ejemplo: Programación de Operaciones

Al minimizar el número de trabajos atrasados:

Resultado General: Algoritmo de Moore minimiza el


número de trabajos atrasados, independientemente de
cuán atrasados estén.
Algoritmo de Moore

Paso 1. Ordenar los trabajos de acuerdo a la regla


EDD.
Paso 2. Seleccionar el primer trabajo atrasado en la
secuencia actual, digamos el trabajo i. Si no hay
ninguno atrasado siga al Paso 4.
Paso 3. Considere los trabajos 1 al i. Rechace el
trabajo con mayor tiempo de proceso, vuelva al Paso
2.
Paso 4. Forme la secuencia que resulta de tomar la
secuencia actual y colocar todos los trabajos
rechazados al final.
Ejemplo: Programación de Operaciones
Ejemplo: Programación de Operaciones

➢ Paso 2. Seleccionamos trabajo E.


➢ Paso 3. Rechazamos trabajo C.
➢ Paso 2. Secuencia: E D B A. No hay trabajos
atrasados.
➢ Paso 4. Secuencia: E D B A C. Sólo un trabajo
atrasado

Número de Trabajos Atrasados = 1


Branch & Bound

• Ampliamente utilizada en IO para problemas de MILP.


• Se forma un “árbol” al que se le agregan iterativamente
“nodos” (soluciones parciales o relajadas).
• Un nodo tiene una función objetivo (F.O.) que es una cota
inferior (LB) al problema no relajado, dado que se tiene
una solución parcial representada en el nodo.
• Se pueden tener cotas superiores. Si la F.O. de un nodo
es mayor que la cota superior actual, ese nodo se
descarta permanentemente.
• El desafío es encontrar cotas inferiores y superiores
bastante aproximadas a la solución óptima y así reducir
el número de nodos expandidos.
Branch & Bound
Branch & Bound
Programación de n Trabajos en 2 Máquinas

Es un esquema más complejo que el caso de una


máquina donde 2 o más trabajos deben procesarse
en 2 máquinas según un orden común.

Un método para abordar esta clase de problemas es


el Método o Regla de Johnson. Su objetivo es
minimizar el tiempo de tránsito desde el comienzo del
primer trabajo hasta el final del último.
Programación de n Trabajos en 2 Máquinas

La Regla de Johnson consta de los siguientes pasos:

1) Se anota el tiempo de operación de cada trabajo


en ambas máquinas.
2) Se elige el tiempo más breve.
3) Si el tiempo breve es para la primera máquina, se
hace el primer trabajo; si es para la segunda, se
hace el trabajo al último. En caso de empate se
hace el trabajo en la primera máquina.
4) Repite los pasos 2 y 3 con los restantes trabajos
hasta completar la programación.
Ejemplo: Método de Johnson

Paso 1: Se anotan los tiempos de operación.


Trabajo Tiempo en Máquina 1 Tiempo en Máquina 2
A 3 2
B 6 8
C 5 6
D 7 4

Paso 2 y 3: Se selecciona el tiempo de operación más


breve y se asigna. El trabajo A es más breve en la
máquina 2 y se asigna primero y se ejecuta al último
(cuando el trabajo A se asigna, ya no se programa).
Ejemplo: Método de Johnson

Paso 4: Se repiten los pasos 2 y 3 hasta terminar la


programación. Se selecciona el tiempo de operación
más breve de los trabajos restantes. El trabajo D es el
segundo más breve en la máquina 2, así que se
ejecuta en penúltimo lugar (recuerde que el trabajo A
es el último). Ahora los trabajos A y D ya no se
programan. El trabajo C es el más breve en la
máquina 1 entre los trabajos restantes, así que se
ejecuta primero. Ahora queda sólo el trabajo B con el
tiempo más breve en la máquina 1.
Ejemplo: Método de Johnson

Entonces, de acuerdo con el paso 3, se realiza el


primer lugar de los restantes, o sea segundo lugar
general (el trabajo C ya se había programado como
el primero).

En resumen, la secuencia de solución es C ➔ B ➔ D


➔ A y el tiempo de tránsito es de 25 días.
Ejemplo: Método de Johnson
Ejercicio: Método de Johnson

Un servicio técnico de automóviles quisiera evaluar si


puede atender 5 autos en 24 horas o menos. Un auto
se “atiende” si pasa por trabajos de reparación y
pintado. A continuación se detalla el tiempo (en horas)
que se requiere en el taller de reparaciones y el de
pintura para cada uno de los 5 automóviles.
Suponiendo que los autos pasan por las operaciones
de reparación antes de pintado. ¿Se puede cumplir
con los plazos de entrega en un tiempo menor o igual
a 24 horas?
Ejercicio: Método de Johnson

Auto Tiempo Reparación Tiempo Repintado


A 6 3
B 0 4
C 5 2
D 8 6
E 2 1
Ejercicio: Método de Johnson
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Supuesto de que deben seguir misma secuencia no


existe.
Paso 0. Clasificar todos los trabajos existentes en las
4 familias posibles:
- Los que requieren sólo la máquina 1 (A)
- Los que requieren sólo la máquina 2 (B)
- Los que pasan primero por máquina 1 y luego la 2
(AB)
- Los que pasan primero por máquina 2 y luego la 1
(BA)
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Paso 1. Ordenar los trabajos de (AB) y (BA) por el


Algoritmo de Johnson.
Paso 2. Ordenar los trabajos de (A) y (B) en forma
arbitraria.
Paso 3. Programar en la máquina 1 en primer lugar
los trabajos de (AB), luego los trabajos en (A) y
finalmente los trabajos en (BA).
Paso 4. Programar en la máquina 2 en primer lugar
los trabajos de (BA), luego los trabajos en (B) y
finalmente los trabajos en (AB).
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Ejemplo: En la tabla se presentan los tiempos de


proceso para cada trabajo y el orden que deben
seguir en las máquina A y B.
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Siguen el proceso A-B

Ordenando utilizando Johnson, el orden óptimo es:


5-3-2
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Siguen el proceso B-A

Ordenando utilizando Johnson, el orden óptimo es:


6-7
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Para los que siguen solo la máquina A la secuencia es:


1-9
Para los que siguen solo la máquina B la secuencia es:
4-8

➢La secuencia óptima para la máquina A es:


(5 - 3 - 2) - (1 - 9) - (6 - 7)
➢La secuencia óptima para la máquina B es:
(6 - 7) - (4 - 8) - (5 - 3 - 2)
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Ejemplo: Considere los trabajos que se listan a


continuación para ser programados y establezca una
programación de acuerdo al Algoritmo de Jackson.
Taller con rutas aleatorias, 2 máquinas y n
pedidos (Jackson)

Una secuencia posible es la que se muestra a


continuación, que resulta de emplear la heurística
Shifting Bottleneck del software LEKIN Scheduling
System, ver:
http://www.stern.nyu.edu/om/software/lekin/index.htm
Máquinas en Paralelo (T°Determinista)

En esta situación se tiene un conjunto de máquinas en


paralelo (de iguales o diferentes características) y
trabajos que en principio pueden ser asignados
indistintamente a cualquiera de estas.
Máquinas en Paralelo (T°Determinista)

No existe una regla que provea una solución óptima


que haga mínimo el makespan. Una heurística
razonable es la siguiente:
Paso 1. Se ordenan todos los trabajos en orden
decreciente de acuerdo al tiempo de proceso (LPT).
Paso 2. Se toma el primer trabajo de la lista y se
asigna en aquella máquina con menor subíndice que
le termine lo antes posible.
Paso 3. Elimine de la lista el trabajo asignado, vuelva
al Paso 2 mientras existan trabajos pendientes por
asignar.
Máquinas en Paralelo (T°Determinista)

Ejemplo: Programar los siguientes trabajos en un


taller con 2 máquinas en paralelo.
Programación de n trabajos a n máquinas

Algunos centros de trabajo tienen suficientes máquinas


para iniciar todos los trabajos al mismo tiempo. Aquí
el problema no es qué trabajo hacer primero, sino
qué asignación de trabajo a cuáles máquinas dará el
mejor programa general. En estos casos se aplica el
Método de Asignación.
Programación de n trabajos a n máquinas

Método de Asignación: Es apropiado para resolver


problemas que tienen las siguientes características:

1. Hay n “cosas” que se distribuyen a n “destinos”


2. Cada cosa debe asignarse a un solo destino.
3. Sólo puede aplicarse un criterio (por ejemplo,
costo mínimo, utilidad máxima o tiempo mínimo de
terminación).
Programación de n trabajos a n máquinas

Ejemplo Método de Asignación: Suponga que un


programador tiene 5 trabajos que pueden realizarse
en 5 máquinas (n=5). El costo de terminar cada
combinación de trabajos y máquinas se muestra en la
siguiente tabla. El objetivo es diseñar una asignación
de costo mínimo. ¿Cuántas asignaciones posibles se
pueden generar? ¿Cuál es la asignación que permite
obtener el costo mínimo?
Programación de n trabajos a n máquinas

Máquina
Trabajo A B C D E
I $5 $6 $4 $8 $3
II $6 $4 $9 $8 $5
III $4 $3 $2 $5 $4
IV $7 $2 $4 $5 $3
V $3 $6 $4 $5 $5
Programación de n trabajos a n máquinas
Programación de n trabajos a n máquinas
Programación de n trabajos a 1 máquina
minimizando tiempos de setup.

Existen algunas aplicaciones más complejas que se


pueden abordar de forma eficiente a través de
modelos de optimización.

Considere que 3 trabajos necesitan ser asignados a


una cierta máquina. Sin embargo, el tiempo de setup
(tiempo requerido para preparar la máquina antes
de cada trabajo), depende del trabajo que le
precede, como se muestra en la siguiente tabla de
tiempos de setup:
Programación de n trabajos a 1 máquina
minimizando tiempos de setup.

trabajo 1 trabajo 2 trabajo 3


ninguno 4 8 5
trabajo que 1 X 12 9
precede 2 10 X 10
3 12 8 X

El objetivo es programar las actividades del taller de


modo de minimizar la suma de los tiempos de setup
resultante de la asignación. Formule y resuelva un
modelo de optimización para hallar la mejor solución.
Programación de n trabajos a 1 máquina
minimizando tiempos de setup.
Programación de n trabajos a 1 máquina
minimizando tiempos de setup.
Programación de n trabajos a 1 máquina
minimizando tiempos de setup.
Programación de n Trabajos en m
Máquinas

Los centros de trabajos complejos se caracterizan por


numerosos centros de máquinas que procesan trabajos
diferentes que llegan intermitentemente a lo largo del
día.

Si hay que procesar n trabajos en m máquinas y todos


los trabajos se procesan en todas las máquinas,
entonces hay (n!)^m programas alternativos para
este grupo de trabajos.
Programación de n Trabajos en m
Máquinas

En virtud del gran número de programas que hay


incluso para centros de trabajos pequeños, la
simulación por computadora es la única manera
práctica de determinar las bondades relativas de las
reglas de prioridad en esas situaciones.
Programación de n Trabajos en m
Máquinas

¿Qué reglas de prioridad usar?

1. Debe ser dinámico, es decir, que se calcule a


menudo durante un trabajo para que dé cuenta
de los cambios en las condiciones.
2. Debe basarse, en un sentido o en otro, en el
margen del tiempo (la diferencia entre lo que
falta por hacer de un trabajo y el tiempo que
queda para hacerlo).
Programación de Horarios de Trabajo

Servicios como restaurantes enfrentan cambios de


necesidades de una hora a la siguiente. Por supuesto
se necesita más personal en los períodos de mayor
afluencia.

Una forma de generar una asignación es el principio


de la primera hora.

Suponga que cada trabajador trabaja de corrido un


turno de 8 horas.
Programación de Horarios de Trabajo

La regla de la primera hora indica que durante esa


primera hora se asigna un número de trabajadores
igual a lo que se necesita en ese lapso. A cada
período siguiente se asigna el número exacto de
trabajadores adicionales para satisfacer las
necesidades. Cuando en un periodo uno o más
trabajadores terminan su turno se agregan más
trabajadores únicamente si se necesitan para cubrir
las necesidades.
Programación de Horarios de Trabajo

En la siguiente tabla se muestran las necesidades de


trabajadores de las primeras 12 horas de un
restaurante que opera las 24 horas:
PERIODO
10 11 1 2 3 4 5 6 7 8 9
AM AM MEDIODIA PM PM PM PM PM PM PM PM PM
NECESIDADES 4 6 8 8 6 4 4 6 8 10 10 6
Programación de Horarios de Trabajo

Una asignación utilizando la regla de la primera hora


sería la siguiente:
PERIODO
10 11 1 2 3 4 5 6 7 8 9
AM AM MEDIODIA PM PM PM PM PM PM PM PM PM
NECESIDADES 4 6 8 8 6 4 4 6 8 10 10 6
ASIGNADOS 4 2 2 0 0 0 0 0 4 4 2 0
EN FUNCIONES 4 6 8 8 8 8 8 8 8 10 10 10

Comente lo siguiente: ¿Es la mejor forma de generar


una asignación? ¿Qué otra alternativa usted
propondría implementar? ¿Bajo que criterios justifica
su propuesta?
Programación de Horarios de Trabajo

Basados en datos históricos, el número de trabajadores que


se necesita un restaurante cada día se puede describir
mediante la siguiente tabla:

Día Lun Mar Mie Jue Vie Sab Dom


Número 14 13 15 16 19 18 11

Cada trabajador trabaja cinco días consecutivos, y luego toma


dos días de descanso, repitiendo este patrón indefinidamente.

¿Cómo podemos minimizar el número de trabajadores que


empleamos en el restaurante satisfaciendo las necesidades de
cada día?

También podría gustarte