Está en la página 1de 27

Tema: PLANEAMIENTO Y

CONTROL DE OPERACIONES
Docente: Mg. SUGEY QUEA

Escuela Profesional Período académico: 2020-2


Ingeniería Industrial Semestre: VII
Unidad: III
Unidad III
Planeación de producción, capacidad y materiales,
programación de operaciones, planeamiento y
control de la producción integrados
Sesión 10
Programación de
operaciones
Programación de Operaciones- Generalidades

Morton y Pentico (1993) afirman: "programar es el proceso de organizar, elegir y dar tiempos al uso de recursos
para llevar a cabo todas las actividades necesarias, para producir las salidas deseadas en los tiempos deseados,
satisfaciendo a la vez un gran número de restricciones de tiempo y relaciones entre las actividades y los
recursos". Esta definición implica que, si los recursos no están limitados, no existe el problema.
En una Operación típica de fundidora, los trabajos son las actividades y las máquinas son los recursos.

Entonces un programa especifica el tiempo en el que comienza y termina cada trabajo en cada máquina, al igual
que cualquier recurso adicional que se necesite. Una secuencia es un orden simple de trabajos; 3-1-2 indica que
el trabajo 3 se hace primero, el 1 es el segundo y el 2 es el último. Si cada trabajo comienza tan pronto como es
posible y se procesa sin interrupción para un tiempo dado de procesamiento, la secuencia determina los
tiempos de inicio y terminación y, por lo tanto, determina la programación.

Determinar la "mejor" secuencia parece sencillo; sólo se enumeran todas las secuencias y se elige la que
optimiza alguna medida de desempeño.
Programación de operaciones

Manufactura
Servicios
Trabajos

Los trabajos son actividades a realizar. En el ejemplo


introductorio, los trabajos eran las órdenes de los
clientes. En otras situaciones, los trabajos pueden ser
pacientes para rayos X, clientes para servir en un
restaurante, programas para correr en una computadora
o aviones que van a aterrizar en un aeropuerto. Se
supone que cada trabajo tiene un tiempo de procesado
conocido.

A menos que se establezca de otra manera, una vez que


comienza a realizarse un trabajo, debe procesarse
continuamente hasta terminarlo; es decir, no se permiten
interrupciones. Puede tenerse una fecha de entrega en la
que el trabajo debe estar terminado. Un trabajo también
puede tener una fecha de inicio (o fecha de distribución
de la orden), antes de la cual el procesamiento no puede
comenzar.
Trabajos

Dependencias

Un trabajo puede depender de otro. Un tipo de dependencia ocurre cuando un trabajo debe preceder a
otro; por ejemplo, un orificio no se puede roscar antes de perforarse. Otro tipo de dependencia ocurre
cuando el tiempo necesario para un trabajo depende de que el trabajo anterior sea procesado. Si el
trabajo 1 necesita un conjunto de herramientas en una máquina y el trabajo 2 necesita otro, entonces
después de procesar el trabajo 1 debe cambiarse el herramental antes de procesar el trabajo 2. Si el
trabajo 3 necesita las mismas herramientas que el trabajo 1, entonces la secuencia 1-2-3 requiere más
preparaciones que la secuencia 1-3-2. Esto se conoce como tiempo de preparación dependiente de la
secuencia. Si los tiempos de preparación no dependen de la secuencia, se pueden incluir en el tiempo de
procesado. Se supone que los trabajos son independientes a menos que se diga lo contrario. Se supone
además que, si debe procesarse un trabajo en más de una máquina, el trabajo sólo puede procesarse en
una máquina a la vez; es decir, no se puede hacer otro trabajo al mismo tiempo.
Máquinas

Las máquinas procesan trabajos. En la manufactura, una máquina puede ser


una máquina de moldeo automático. En situaciones fuera de la manufactura,
una máquina puede representar un aparato de rayos X, un mesero en un
restaurante, una computadora o una pista de aterrizaje.

Los entornos de las máquinas se dividen en varias clases: una sola máquina,
máquinas paralelas, talleres de producción continua, producción intermitente
y plantas abiertas.

Para los problemas en una sola máquina, se tiene sólo una máquina y deben
procesarse en ella todos los trabajos. La máquina puede procesar a lo más un
trabajo a la vez. Una vez que un trabajo se ha procesado en la máquina, se
termina.
Máquinas

Varias máquinas que pueden realizar el mismo tipo de procesamiento se llaman máquinas paralelas. Un trabajo se puede procesar en
cualquiera de las máquinas, y una vez procesado por cualquiera de ellas, queda terminado. A menos que se diga lo contrario, se
supone que todas las máquinas paralelas son idénticas. El tiempo para procesar un trabajo en una de varias máquinas idénticas es
independiente de qué máquina lo haga. Un buen ejemplo de máquinas paralelas es un grupo de máquinas de moldeo por inyección,
cada una de las cuales puede hacer varias partes de plástico diferentes.

Un taller de producción continua contiene máquinas diferentes. Cada trabajo debe procesarse en cada máquina exactamente una vez.
Más aún, todos los trabajos siguen la misma ruta; esto es, deben visitar las máquinas en el mismo orden. Sin pérdida de generalidad,
se pueden numerar las máquinas de manera que la 1 sea la primera, la 2 la segunda, y así sucesivamente.
Un trabajo no puede comenzar su procesado en la segunda máquina hasta no terminar el de la primera. Las líneas de ensamble y las
células son ejemplos típicos de producción continua.

Un taller de producción intermitente es más general que el de producción continua: cada trabajo tiene una ruta única. Los talleres de
metalmecánica son con frecuencia intermitentes. Un trabajo debe pasar por el torno, después por un taladro y luego a un molino;
mientras que otro irá al molino y luego al torno, pero nunca pasa por el taladro.
Los talleres abiertos son aquellos en los que los trabajos no tienen una ruta específica. Un ejemplo sería un taller mecánico (de
reparación de automóviles). Los vehículos necesitan reparaciones múltiples que requieren distintos equipos, pero el orden de las
reparaciones carece de importancia. Como los talleres abiertos son poco usuales en el mundo de la manufactura, no se analizarán.
Medición

El mejor programa implica una medida de desempeño. Maximizar la ganancia o minimizar el costo son medidas
obvias. Desafortunadamente, es difícil estimar los parámetros financieros que relacionen un programa con costo o
ganancia. Por otro lado, no se conocen algoritmos eficientes para optimizar la ganancia o el costo en modelos de
programación de la producción.
Se usan objetivos sustitutos para aproximar algunos costos relevantes. Las medidas sustituías, por lo general, son
funciones de tiempos de terminación para un programa dado. La mayoría de los sustitutos son medidas normales..
Una medida normal es una función del tiempo de terminación, en la que el objetivo es minimizar la función y donde
esa función sólo se incrementa si al menos un tiempo de terminación en el programa aumenta. Sean
n = número de trabajos que serán procesados
m = número de máquinas p.k = tiempo de procesado del trabajo i en
la máquina k (p¡sim= 1)
r¡ = tiempo de liberación de la orden (o fecha de distribución) del trabajo i d¡ =
fecha de entrega del trabajo i w¡ = ponderación (importancia o valor) del trabajo i
respecto a los otros trabajos
Dado un programa específico, se define para cada trabajo i
C¡ - tiempo de terminación del trabajo i
F¡ = C¡ - r¡, tiempo de flujo del trabajo i (F¡ > 0)
Medición

Los objetivos sustitutos comunes incluyen minimizar el tiempo de flujo total, la tardanza total, el tiempo máximo de terminación, la tardanza máxima o el
número de trabajos retrasados.
Todos (excepto Cmáx, Z,máx y TmiK) son simplemente sumas, sobre todos los trabajos, de las cantidades respectivas para cada trabajo. Si los trabajos no
tienen todos la misma importancia, se puede calcular una medida ponderada multiplicando la medida por el peso apropiado para el trabajo.
Como la suma de los tiempos de procesamiento es constante, minimizar el lapso (Cmáx) es equivalente a minimizar el tiempo ocioso o maximizar la
utilización de las máquinas. Si los costos de mantener inventario dominan, el tiempo de flujo ponderado es una medida equivalente.
Minimizar el tiempo de flujo es lo mismo que minimizar los tiempos de terminación, de retraso y los tiempos de espera de los trabajos. El tiempo de
espera de los trabajos es inventario en proceso, de manera que minimizar el tiempo de flujo equivale a minimizar el número de trabajos en proceso. El
tiempo de flujo ponderado corresponde al valor del inventario en proceso. El número de trabajos retrasados, la tardanza máxima y la tardanza total son
medidas de servicio al cliente. Se pueden encontrar más detalles sobre costos y medidas sustituías en Rinnooy Kan.
La mayoría de los problemas de programación suponen certidumbre en los datos; los tiempos de preparación son independientes del orden de
procesado; todos los trabajos están disponibles de inmediato (r¡ = 0); no existe precedencia entre los trabajos, y una vez que comienza el procesado de un
trabajo, no se puede interrumpir.
Algoritmos de programación

Un algoritmo es una "receta" para obtener una solución de un modelo.


Un caso es un conjunto de datos específico para el modelo. Los algoritmos exactos proporcionan una solución
óptima para todos los casos del problema. Los algoritmos heurísticos dan soluciones que se espera sean óptimas
o cercanas a la óptima en cualquier caso.

¿Por qué no siempre se usan algoritmos exactos? Para muchos modelos de programación, los únicos algoritmos
exactos que se conocen están basados en la enumeración, como el de ramificación y acotamiento o la
programación dinámica. En los casos prácticos, la naturaleza combinatoria del problema de programación los
hace computacionalmente prohibitivos.

Los algoritmos heurísticos se juzgan según su calidad y eficacia. La calidad es la diferencia entre una solución
heurística y la óptima, mientras que la eficacia se refiere al esfuerzo realizado para obtener la solución. Ambas se
pueden expresar teórica o empíricamente. Los heurísticos garantizan calidad y eficacia (es decir, cotas del peor
caso en su desempeño).
Gráficas de Gantt

A principios del siglo XX, Henry Gantt fue un pionero en el aumento de la productividad a través de
una mejor programación. Una de sus primeras herramientas fue una representación pictórica de un
programa, ahora llamada gráfica de Gantt en su honor. El propósito de la gráfica es desplegar el
estado de cada recurso (casi siempre una máquina) en todo momento. El eje x representa el tiempo
y el eje y consiste en una barra horizontal para cada máquina. Cuando tiene que procesarse un
trabajo en una máquina, se coloca un rectángulo en la barra horizontal, que comienza en el tiempo
de inicio del trabajo y concluye en su tiempo de terminación. Las gráficas de Gantt también se
pueden construir colocando trabajos en lugar de máquinas en el eje y. El siguiente ejemplo muestra
una gráfica de Gantt para un problema pequeño de programación.
Ejemplo

La tabla contiene los datos de un problema en un taller de producción intermitente con tres máquinas y cuatro
trabajos. La primera operación del trabajo 1 toma 4 minutos y se realiza en la máquina 1; esto se denota por 4/1
en el renglón del trabajo 1 y la columna de la operación 1 de la tabla. Todas las órdenes de trabajo se mandan en el
tiempo cero, y las fechas de entrega están dadas en la última columna.

Datos del ejemplo de gráfica de Gantt


Ejemplo

Solución. Considere la secuencia 2-1-4-3 en la máquina 1, la secuencia 2-4-3-1 en la máquina 2 y la 3-4-2-1 en la máquina 3. La figura
8-2 describe este programa en una gráfica de Gantt. Cada bloque representa una operación de un trabajo; el número del trabajo aparece
en el bloque. Los bloques en blanco representan tiempo ocioso, que ocurre debido a que no hay trabajo disponible para procesar.
La máquina 1 está ociosa del tiempo 0 al tiempo 1, porque el trabajo 2 se programó primero en la máquina 1, pero su primera operación
es en la máquina 2. Hasta que el trabajo 2 termina el procesamiento en la máquina 2, no se puede procesar en la máquina 1.
La última operación del trabajo 1 se hace en la máquina 3 y se termina en el tiempo 14, esto es

C1 = 14 (en la máquina 3)
Para los trabajos restantes
C2 = 11 (en la máquina 3)
C3 = 13 (en la máquina 1)
C4 = 10 (en la máquina 1)

El lapso transcurrido es
C^ = máx{C1,C2,C3,C4} = máx{14,ll,13,10} = 14
Recuerde que F¡ - C, - r;, en este ejemplo, r¡ = 0 para toda /, de manera que el tiempo de flujo y el tiempo de terminación son el
mismo. El tiempo de flujo total (o suma de tiempos de terminación) es
Ejemplo

El retraso de un trabajo es su tiempo de terminación menos su fecha de entrega; y su tardanza es el máximo entre cero y el retraso, Así.

Diagrama de Gantt
Ejemplo
PROGRAMACIÓN DE UNA SOLA MÁQUINA

Estos modelos también son útiles para programar varias máquinas. Los modelos de una sola máquina también son adecuados
para procesos en serie que contienen una máquina cuello de botella que restringe al sistema completo.
Es importante generar un buen programa para la máquina cuello de botella porque su programación determina el programa
para las máquinas que están antes y después del cuello de botella.
Primero, se analiza los algoritmos sencillos para varios modelos, cuyas medidas de desempeño son tiempo de flujo, retraso y
tiempo de flujo ponderado. Después se dan algoritmos sencillos para minimizar el retraso máximo, la tardanza máxima y el
número de trabajos tardíos. Desafortunadamente, minimizar el número ponderado de trabajos tardíos no tiene una solución
elegante, pero se presenta un algoritmo heurístico. Minimizar la tardanza en una sola máquina es un problema difícil. Se
proporcionan algoritmos sencillos para casos especiales y un algoritmo heurístico para el caso general
y los casos ponderados.
Segundo, se analiza las soluciones para un modelo con sanciones tanto por tardanza como por adelanto, y luego se establece
un marco de referencia para la implantación de estos algoritmos en un entorno dinámico. Se presentan un algoritmo heurístico
y el de ramificación y acotamiento para tiempos de preparación dependientes de la secuencia. Por último, se dan
procedimientos de búsqueda que pueden proporcionar buenas soluciones para la mayor parte de los modelos de programación
de una sola máquina y que también pueden adaptarse a modelos de varias máquinas.
Tiempo de flujo mínimo
Operación típica en
Suponga que está encargado de la programación en Newman Foundry Un examen de los costos que la fundidora
quedan afectados por el programa indica que los costos del inventario en proceso dominan a los
demás. Tomando la operación de la fundidora considere que está produciendo artículos de costo alto
que dejan la fábrica tan pronto como se terminan. Usted también descubre que el valor de todos los
productos es casi el mismo, por lo que minimizar el tiempo de flujo total tiende a minimizar los costos
de inventario totales. Ahora, su pregunta es, "¿cómo programo los trabajos de manera que se
minimice el tiempo de flujo total?"
Se supone que todos los trabajos que deben programarse están disponibles en este momento, por lo
que el tiempo de liberación de la orden es cero; esto significa que el tiempo de flujo es igual al tiempo
de terminación. Será útil comenzar con un ejemplo específico del problema de programación.
Considere los datos de la tabla

Suponga que el trabajo 1 se programa como el primero, el trabajo 2 como el segundo, etc. (es decir,
el orden "natural"). Este programa se muestra (secuencia natural para una máquina:
Tiempo de flujo mínimo
Observe que, en este caso, la secuencia de trabajos especifica un programa. Si el trabajo 2 sigue al 1, no
tiene sentido retrasarlo, puesto que hacerlo sólo aumentaría el tiempo de flujo. No hay tiempo ocioso en
el programa. Para calcular el tiempo de flujo total, se suman los tiempos de terminación de todos los
trabajos. Para el primer trabajo es 4. El tiempo de terminación del segundo trabajo es su tiempo de
procesado más el tiempo de procesado de todos los trabajos anteriores a él en el programa, esto es 4 + 2
= 6. Al continuar se encuentra que el tiempo de flujo total es 45. En general, si se tienen
n trabajos programados, 1-2....... (n - 1) -n, el tiempo de flujo total F es

De esto parece lógico que el trabajo en la primera posición tenga el menor tiempo de procesado, porque entra en la cuenta n
veces. De manera similar, se quiere que el trabajo en la segunda posición tenga el siguiente tiempo de procesado más corto, y se
continúa colocándolos en orden no decreciente de tiempos de procesado con el más largo al último. Si hay empates, se rompen
de manera arbitraria. La secuencia de trabajos ordenados del más corto al más largo es la secuencia con el tiempo de procesado
más corto (TPC). Parece que así se minimiza el tiempo de flujo, pero el que sólo parezca no es suficiente. Por fortuna, este
resultado se puede demostrar usando una técnica llamada intercambio adyacente por pares. Esta técnica es útil para probar
muchos resultados de programación.
Tiempo de flujo mínimo

Teorema. La secuencia de TPC minimiza el tiempo de flujo en una sola máquina con tiempo de liberación
de órdenes de cero.
Demostración. Para probar este resultado se supone que la secuencia óptima no es una secuencia TPC. Se construye una mejor que
contradiga la suposición de que la secuencia óptima no es una secuencia TPC. Suponga que el programa S minimiza el tiempo de
flujo y que no está en el orden TPC. Si S no está en el orden TPC, debe existir un par de trabajos en S, digamos /' y j tales que i está
programado inmediatamente antes de y,y p¡ > p¡. Ahora considere el programa S', que es el mismo que S excepto que los trabajos i y j se
intercambiaron, de manera que j está programado inmediatamente antes de i. La figura 8-4 contiene las gráficas de Gantt de S y S'. Los
trabajos en B y A están en la misma posición en los dos programas. Sean t el tiempo de terminación del último trabajo en B; TF(B) el
tiempo de flujo total de los trabajos programados antes de i y j, yTF(A) el tiempo de flujo total para los trabajos posteriores a o y j.
Programas que difieren en
un intercambio por pares.

El tiempo total S es:

Esto implica que el tiempo de flujo total de 5" es menor que el de S, lo que contradice la suposición de que S es óptimo. Por lo tanto, un
programa óptimo debe estar en el orden TPC, lo que completa la prueba.
Ejemplo tiempo de flujo en una sola máquina

Ejemplo:
Andre maneja SpeedCopy y tiene cinco trabajos en espera. Los tiempos de procesado están dados . Al terminar los trabajos se
notifica por teléfono a los clientes para que vengan a recogerlos. ¿En qué secuencia debe asignar Andre los trabajos para que el
tiempo de espera de los clientes sea el menor posible?

Solución. Minimizar la espera total es equivalente a minimizar el tiempo de flujo; así, Andre debe usar el TPC. Aplicando TPC a
los datos se obtiene la secuencia 2-4-3-1-5. Los tiempos de terminación para los trabajos son C2 = 2, C4 = (2 + 2) = 4, C3 = (2 + 2 +
3) = 7, C, = (2+2 + 3 + 4) = 11 yC5 = (2+ 2 + 3 + 4 +4) =15. Como todos los tiempos de liberación de órdenes son cero, el tiempo de
flujo total es la suma de los tiempos de terminación, o sea (2 + 4 + 7 + 11 + 15) = 39. Observe que los trabajos 2 y 4 tienen el
mismo tiempo de procesado y podrían intercambiarse sin afectar el objetivo. Esto también es cierto para los trabajos 1 y 5.
La secuencia TPC minimiza el tiempo total que tardan todos los trabajos en el sistema, ya que los tiempos en que se mandan
las órdenes son cero y, por lo tanto, minimiza el tiempo de espera total, puesto que todos los tiempos de procesado son
constantes. Esto hará felices a los clientes si están esperando su trabajo. El TPC también minimiza el número promedio de trabajos
esperando ser procesados o, de manera equivalente, el inventario promedio de trabajo en proceso, medido en número de
trabajos.
Retraso

Recuerde que el retraso de un trabajo i se define como L¡ = C¡ - d¡. El retraso total es

Como L d¡ es constante para cualquier programa, al minimizar el tiempo de terminación total también se
minimiza el retraso total. Entonces el TPC minimiza el retraso total. Con el retraso, la compensación por
adelanto anula la sanción por tardanza, lo cual es poco común. Por ejemplo, muchos profesores sancionan el
trabajo entregado tarde, pero pocos dan crédito adicional por entregarlo antes del tiempo límite.
Tardanza máxima y retraso máximo

Si la satisfacción del cliente es la medida de desempeño importante, se deben tomar en cuenta las fechas de entrega. La secuencia
TPC no considera estas fechas de entrega, por lo que los programas que son buenos respecto al tiempo de flujo, pueden ser malos
para una medida orientada a las fechas de entrega. Una medida orientada a las fechas de entrega es la tardanza máxima, Tmáx. Aquí
se quiere que el trabajo más tardío tenga la menor tardanza posible. Si el volumen de los gritos de un cliente es proporcional a la
tardanza de su trabajo, minimizar la tardanza máxima es hacer que el grito más sonoro sea tan bajo como sea posible

¿Cómo se ordenan los trabajos para minimizar la tardanza máxima? Sin duda, las fechas de entrega deben tomar parte, y del
análisis del tiempo de flujo parece razonable colocar primero el trabajo con la fecha de entrega más cercana, después la siguiente
más cercana, etc. Esta secuencia se llama de fecha de entrega más cercana (FEC). De nuevo, la intuición es correcta y la FEC minimiza
Tmix. La demostración es similar a la prueba de que TPC minimiza la suma de los tiempos de terminación —se supone un programa
en el que FEC no es óptimo, y se usa el intercambio de pares adyacentes para demostrar que el programa FEC es mejor—. El mismo
argumento demuestra que la secuencia FEC minimiza T.máx.

Ejemplo Tmax mínimo. Suponga que los clientes tienen fechas de entrega (16,10,7,7,5) para los cinco trabajos del ejemplo.

La secuencia FEC sería 5-3-4-2-1, y la tardanza de los trabajos es (0,0,2, 1,0), lo que da Tmin= 2.
Número de trabajos tardíos

Si es posible tener todos los trabajos a tiempo, la secuencia FEC no tiene trabajos tardíos. Sin embargo, si no todos los trabajos
pueden estar a tiempo, uno de los problemas con FEC es que, aunque ningún trabajo salga demasiado tarde, muchos (o incluso
todos) pueden salir algo tarde. Cuando domina la componente de costo fijo de los trabajos retrasados, se puede querer tener
tantos trabajos a tiempo como sea posible o, de manera equivalente, minimizar el número de trabajos tardíos. Para resolver este
modelo se usó el algoritmo de Hodgson. Se da un análisis
intuitivo y después se hace una presentación mucho más formal.
Primero se colocan los trabajos en el orden FEC y se calcula su tardanza. Si todos los trabajos van a tiempo, se termina; de
otra manera se encuentra el primer trabajo tardío en la secuencia, al menos uno debe estar tarde en cualquier secuencia. Es
necesario determinar cuál de los trabajos de este conjunto mover y en qué lugar de la secuencia debe colocarse. Como sólo se
trata de minimizar el número de trabajos tardíos, cualquiera de ellos puede ponerse al final del programa, sin importar qué tan
tarde esté. Esto permite que los otros trabajos tengan tiempos de terminación más cortos y, se espera, estén más a tiempo. Al
mover el trabajo con el tiempo de procesado más largo, se reducen los tiempos de terminación de los trabajos restantes lo más
posible. Por lo tanto, de los trabajos en este conjunto, se quita el trabajo con tiempo más largo y se coloca al final de la secuencia.
Los empates se pueden romper de manera arbitraria.
Número de trabajos tardíos

Ejemplo Algoritmo de Hodgson


Considere el ejemplo anterior. Recuerde que la secuencia FEC era 5-3-4-2-1, de manera que [1] = 5, [2] = 3, [3]
= 4, [4] = 2 y [5] = 1.

Paso 1. NT =0, los tiempos de terminación son (4,7,9,11,15) y las tardanzas son (0,0,2,1,0). Existe un trabajo
tardío. El trabajo 4, en la tercera posición, es el primero; así, k = 3.
Paso 2. Los tiempos de procesado de los trabajos 5,3 y 4 (los trabajos en las primeras tres posiciones) son 4, 3 y
2, respectivamente. El tiempo más largo de procesado es 4; así, j* = 5.
Paso 3. Se quita el trabajo 5 de la secuencia, se hace NT = 0 + 1 = 1 y se va al paso 1.
Paso 1. La nueva secuencia es 3-4-2-1, con tiempos de terminación (3,5,7,11) y la tardanza es (0,0, 0, 0). Como
todos los trabajos van a tiempo, se va al paso 4.
Paso 4. El programa que minimiza el número de trabajos tardíos es 3-4-2-1 -5, y como sólo tiene un trabajo
tardío NT = 1.
GRACIAS

También podría gustarte