Está en la página 1de 70

Modelación de Tanques

Instructor
Daniel Villarreal

165

165
Introducción
Tanque
Definición -- Un recipiente para
contener material a granel, líquidos
o gases.

166

166
Uso de los Tanques

è Modelar el flujo de substancias continuas


dentro y fuera de los tanques o recipientes
similares.
è Facilitar el intercambio entre materiales
continuos y entidades discretas.
è Modelar flujo de partes discretas a alta
velocidad.
è Gráficas dinámicas de barras de
estadísticas en la pantalla.

www.promodel.com.mx 167

167
Enfoques al modelar tanques

Proveer de bombas, válvulas y sensores


para emular la operación detallada del
tanque.

Proveer los comandos para producir los


resultados deseados.

www.promodel.com.mx 168

168
Tanksub.mod
Se “mezcla” con cada modelo de tanques.
Contiene una biblioteca de subrutinas
predefinidas, etc. para modelar los tanques.
Se carga automáticamente al definir el
primer tanque.
Puede ser modificado si se hace
cuidadosamente.
Todas las subrutinas, arreglos, etc. inician
con “Tank_” para fácil identificación (v.gr.
Tank_Fill).
www.promodel.com.mx 169

169
Límite de Capacidad es
Definición Tanques 999,999
(libras, toneladas, galones,
10 galones, etc.).
Diferentes tanques pueden
4 tener diferentes unidades.

2
1

www.promodel.com.mx 170

170
Tanques como Locaciones

“Clock”
solamente

www.promodel.com.mx 171

171
Diálogo de Tanques/Calibrador

www.promodel.com.mx 172

172
Formas de Desplegar Tanques

Añadir un contador al
medidor de tanques
www.promodel.com.mx 173

173
Definición de Operación
de los Tanques

Los niveles de los tanques y sus flujos son


controlados usando SUBRUTINAS pre-
definidas.

Los tanques no procesan entidades. No


pueden rutearse entidades a un tanque.

Comandos incluidos en el Constructor de


Lógica cuando se define un tanque.
www.promodel.com.mx 174

174
Conceptos Básicos

l Niveles de Tanques.
l Incremento del Tiempo al Controlar el Flujo.
l Velocidad del Flujo.
l Estados del Tanque.
l Llenado y Vaciado de los Tanques.
l Limpieza y tiempos muertos de los tanques.

www.promodel.com.mx 175

175
Niveles de los Tanques.
Basados en un arreglo llamado Tank_Level.
La referencia es Tank_Level [<TankID>],
donde TankID es el nombre o número de
tabla de la locación tanque.
Sub-rutinas pre-definidas existen para
ajustar el nivel del tanque.
No ajustar el nivel del tanque directamente
(v.gr. Tank_Level [1] = 200) a menos que no
importen las estadísticas o el chequeo de
errores.
www.promodel.com.mx 176

176
Incremento del Tiempo para el Flujo

El incremento de tiempo para el flujo es el intervalo


(en minutos) entre las actualizaciones de los
niveles del tanque.
El “Tank_TimeStep” es una macro RTI.
Si el valor es más grande, se incrementa la
velocidad de la simulación.
El valor NO afecta la precisión de llenado o vaciado
(una iterpolación lineal determina en que rango de
tiempo se completa la transferencia).
El valor AFECTA el monitoreo del nivel de un
tanque al usar un comando WAIT UNTIL...
www.promodel.com.mx 177

177
Efecto del valor del incremento del
tiempo en un estatuto Wait Until

Si se está llenando el tanque A a una velocidad de 60


gpm y el incremento del tiempo es de 0.5 min,
¿cuándo será el siguiente estatuto verdadero?

WAIT UNTIL Tank_Level[TanqueA] >=31


60
nivel

30

0 .5 1.0
tiempo 178
www.promodel.com.mx

178
Velocidades de Flujos
Se asume que se basa en unidades de
capacidad de tanque por minuto
50 gpm
10 litros por minuto
Las tasas DESDE y HACIA pueden ser
diferentes en una transferencia de
tanques.
Una variable de TASA puede ser definida
utilizando la subrutina Tank_Rate.
www.promodel.com.mx 179

179
Estados de los Tanques.
u Tank_Idle è Ocio
u Tank_Operation è Operación
u Tank_Setup è Preparación
u Tank_Filling è Llenado
u Tank_Emptying è Vaciado
u Tank_Blocked è Bloqueo
u Tank_Down è Tiempo muerto

Utiliza el arreglo Tank_State


v.gr. Tank_State [TanqueA]

www.promodel.com.mx 180

180
Usando Estados de Tanques

Útiles para pruebas de WAIT UNTIL.


Los estados de los tanques se definen
automáticamentes cuando se utilizan las
subrutinas pre-definidas para operar tanques.
Se pueden modificar manualmente con la
subrutina Tank_SetState.
Se utilizan para compilar estadísticas
(Tank_Filling y Tank Emptying se reportan
como tiempo WAIT).
www.promodel.com.mx 181

181
Llenar y Vaciar Tanques
Se controla por un parámetro de Nivel en las
subrutinas Llenar/Vaciar/Transferir.
Opción 1: “0” envía un mensaje de error y
aborta.
Opción 2: “Tank_Stop” termina el
llenado/vaciado y regresa la cantidad
restante en una variable global llamada
Tank_QtyLeft.
Opción 3: “n” reanuda el llenado/vaciado
cuando el nivel alcanza el valor de n.
www.promodel.com.mx 182

182
Limpieza y Tiempos Muertos de Tanques

Para Tiempos Muertos utilizar la subrutina Tank_GoDown


en lugar de WAIT en lógica de Tiempos Muertos.
Para turnos, alimentar la siguiente Lógica Fuera-de-Turno:
Tank_GoDown (<TankID>, DTLeft() )
SKIP
Tank_GoDown puede ser invocada desde cualquier lógica.
El flujo del tanque se suspende mientras un tanque está
en tiempo muerto.
La subrutina Tank_Prep se utiliza para limpieza y se
reporta como tiempo de preparación (setup).

www.promodel.com.mx 183

183
Tank_Fill
Sintaxis: TANK_FILL (<Tank ID>, <Cantidad>,
<Tasa>, <Nivel>)

TANK_FILL (TanqueA, 2000, 75, 1500)

Utilizar cuando la fuente del material no es otro


tanque, sino una entidad u otra fuente externa.

Estado: Fijar a Tank_Filling, entonces a


Tank_Blocked si el tanque se llena.
www.promodel.com.mx 184

184
Tank_Empty
Sintaxis: TANK_EMPTY (<Tank ID>, <Cantidad>,
<Tasa>, <Nivel>)

TANK_EMPTY (TanqueB, 2000, 40, 0)

Utilizar cuando el destino no es otro tanque, sino


otra entidad u otro lugar externo al modelo.

Estado: Fijar a Tank_Emptying, entonces a


Tank_Idle si el tanque se vacía.
www.promodel.com.mx 185

185
Tankfill.mod

www.promodel.com.mx 186

186
Tank_Transfer

Sintaxis: TANK_TRANSFER (<DESDE>, <HACIA>,


<Cantidad>, <Tasa DESDE>, <Tasa HACIA>,
<Nivel>)

TANK_TRANSFER (A, B, 2000, 100, 50, Tank_Stop)

Utilizar para transferir una cantidad específica desde


el tanque A hacia el B.

Estado: El Tanque DESDE se fija a Tank_Emptying,


entonces a Tank_Idle si se vacía. El tanque HACIA se
fija a Tank_Filling, entonces a Tank_Blocked si se 187
www.promodel.com.mx

llena.

187
Tank_TransferUpTo

Sintaxis: TANK_TRANSFERUPTO (<DESDE>,


<HACIA>, <Nivel>, <Tasa DESDE>, <Tasa HACIA>)

TANK_TRANSFERUPTO (A, B, 8500, 0, 0)

Utilizar para transferir (aumentar) hasta cierto nivel


específico, pero no se conoce la cantidad específica a
transferir (v.gr. Un tanque que se está drenando
mientras está siendo llenando).

Estado: El mismo que para Tank_Transfer.


www.promodel.com.mx 188

188
Tank_TransferDownTo

Sintaxis: TANK_TRANSFERDOWNTO (<DESDE>,


<HACIA>, <Nivel>, <Tasa DESDE>, <Tasa HACIA>)

TANK_TRANSFERDOWNTO (A, B, 200, 100, 0)

Utilizar para transferir (disminuir) hasta cierto nivel


específico, pero no se conoce la cantidad específica
a transferir (v.gr. Un tanque que se está llenando
mientras está siendo drenado).

Estado: El mismo que para Tank_Transfer.


www.promodel.com.mx 189

189
Tankxfer.mod

www.promodel.com.mx 190

190
Tank_SetLevel
Sintaxis: TANK_SETLEVEL (<TankID>, <Nivel>)

TANK_SETLEVEL (TanqueA, 1500)

Utilizar para iniciar el nivel de un tanque a un valor


específico.

Estado: Fijar a Tank_Blocked si está


completamente lleno, Tank_Idle si está
completamente vacío, de otra manera sin cambio. 191
www.promodel.com.mx

191
Tank_Inc
Sintaxis: TANK_INC (<TankID>, <Nivel>)

TANK_INC (TanqueA, 500)

Utilizado usualmente después de un estatuto WAIT


para incrementar instantáneamente el nivel de un
tanque a una cantidad específica.

Estado: Fijar a Tank_Blocked si está completamente


lleno, de otra manera no cambia.
www.promodel.com.mx 192

192
Tank_Dec
Sintaxis: TANK_DEC (<TankID>, <Nivel>)

TANK_DEC (TanqueA, 10)

Utilizado usualmente después de un estatuto WAIT


para disminuir instantáneamente el nivel de un tanque
a una cantidad específica.

Estado: Fijar a Tank_Blocked si está completamente


lleno, de otra manera no cambia.
www.promodel.com.mx 193

193
Tank_RiseTrigger

Sintaxis: TANK_RISETRIGGER (<TankID>, <Nivel>)

TANK_RISETRIGGER (TanqueA, 2000)

Utilizar para iniciar alguna acción o lógica cuando el


nivel de un tanque alcanza un cierto valor.

www.promodel.com.mx 194

194
Tank_FallTrigger

Sintaxis: TANK_FALLTRIGGER (<TankID>, <Nivel>)

TANK_FALLTRIGGER (TanqueA, 100)

Utilizar para iniciar alguna acción o lógica cuando el


nivel de un tanque cae hasta cierto valor.

www.promodel.com.mx 195

195
Tanktrig.mod

www.promodel.com.mx 196

196
Tank_Cap, Tank_FreeCap

Sintaxis: TANK_CAP (<TankID>)


TANK_FREECAP (<TankID>)

TANK_CAP (TanqueA)
TANK_FREECAP (TanqueA)

Utilizar para encontrar la capacidad definida o


capacidad disponible de un tanque.

www.promodel.com.mx 197

197
Tank_DoOperation
Sintaxis: TANK_DOOPERATION (<TankID>,
<tiempo>)

TANK_DOOPERATION (TanqueA, N(15, 1.2))

Utilizar para realizar una operación basada en tiempo


de los contenidos de un tanque (el tiempo está en las
unidades de tiempo default).

Estado: Fijar a Tank_Operation y entonces a


Tank_Blocked cuando se completa.
www.promodel.com.mx 198

198
Tank_GoDown
Sintaxis: TANK_GODOWN (<TankID>, <tiempo>)

TANK_GODOWN (TanqueA, 5)

Utilizar para modelar tiempos muertos (v.gr. Fallas de


la bomba). Utilizar en lugar de un estatuto WAIT en la
lógica de Tiempos Muertos de Reloj (Clock), o utilizar
en cualquier otra lógica (el tiempo está en las
unidades de tiempo default).

Estado: Fijar a Tank_Down y entonces al estado


previo cuando se completa.
www.promodel.com.mx 199

199
Tank_DoPrep

Sintaxis: TANK_DOPREP (<TankID>, <tiempo>)

TANK_DOPREP (TanqueA, 15)

Utilizar para modelar limpieza u otro tiempo de


preparación. Utilizar en cualquier lógica (el tiempo
está en las unidades de tiempo default).

Estado: Fijar a Tank_Setup y entonces a Tank_Idle


cuando se completa.

www.promodel.com.mx 200

200
Tank_SetState

Sintaxis: TANK_SETSTATE (<TankID>, <Estado>)

TANK_SETSTATE (TanqueA, Tank_Down)

Utilizar para fijar explícitamente el estado de un


tanque. Utilizar sólo si el estado de cambio
automático no se ajusta a los propósitos.

Parámetros serán cambiados automáticamente si


ocurre cualquier cambio en el nivel del tanque.

www.promodel.com.mx 201

201
Tank_SelectOutput
Sintaxis: TANK_SELECTOUTPUT (<Primer Tanque>,
<No. de Tanques>, <Regla>, <Nivel Máx.>, <Tipo de
Producto>)

TANK_SELECTOUTPUT (TanqueA, 3, Tank_InOrder,


5000, Tank_Product [TanqueMezcla])

Utilizar para seleccionar entre varios tanques para


salida o llenado. Se asume que todos los tanques de
salida se enlistan juntos en el módulo de Locaciones
(límite es 10).
www.promodel.com.mx 202

202
Lógica para Tank_SelectOutput
No
¿Se especifica el
Nivel Máx . > 0?

¿Hay un tanque ¿Hay un tanque No No Esperar por el


con nivel > 0 pero No ¿Se especifica el primer tanque que
ocioso que
menor que el nivel satisfaga la regla nivel Máx . > 0? esté ocioso.
Máx. ? de selección?

Sí Sí
No
Esperar por el
¿Es este el tipo de Sí primer tanque que
producto correcto? caiga por debajo
del límite Máx .

Regresar
Tank ID

www.promodel.com.mx 203

203
Tank_SelectInput

Sintaxis: TANK_SELECTINPUT (<Primer Tanque>,


<No. de Tanques>, <Regla>, <Nivel Mín.>, <Tipo de
Producto>)

TANK_SELECTINPUT (A, 3, Tank_LongestBlocked,


100, 0)

Utilizar para seleccionar entre varios tanques para


entrada. Se asume que todos los tanques de entrada
se enlistan juntos en el módulo de Locaciones (límite
es 10).
www.promodel.com.mx 204

204
Modelo TankPick.mod

www.promodel.com.mx 205

205
Tank_Rate
Sintaxis: TANK_RATE (<DESDE>, <HACIA>)

TANK_RATE (TanqueA, TanqueB)

Se invoca automáticamente si la tasa es 0 en


cualquier subrutina de flujo. El usuario modifica
Tank_Rate para regresar la tasa apropiada
(parámetros de nota). Regresar a 0 para terminar
el flujo (la cantidad no llena/vacía se almacena
automáticamente en Tank_QtyLeft).
www.promodel.com.mx 206

206
Código Tank_Rate
// Remplazar el siguiente código con tu código.

if Tank_FromID = 0
then Stop “Pasar 0 como la tasa de llenado para "
$ loc(Tank_ToID) $ " requiere que regreses un
valor de tasa utilizando la subrutina llamada
Tank_Rate.”

else Stop “Pasar 0 como la tasa de vaciado para "


$ loc(Tank_FromID) $ " requiere que regreses un
valor de tasa utilizando la subrutina llamada
Tank_Rate."
www.promodel.com.mx 207

207
Ejemplo de Tank_Rate

La tasa de flujo del TanqueA al TanqueB se decrementa


desde 150 gpm hasta 100 gpm cuando TanqueB alcanza
más de 4000.

If (Tank_FromID = TanqueA) and (Tank_ToID = TanqueB)


then if Tank_Level[Tank_FromID] > 4000
then return 100
else return 150

www.promodel.com.mx 208

208
Arreglos Predefinidos

l Tank_Level è Nivel
l Tank_State è Estado
l Tank_Product è Producto
l Tank_Statistics è Estadísticas
l Tank_Fills è Llenar

www.promodel.com.mx 209

209
Arreglo Tank_Statistics
Reiniciar después del
Columna Descripción Período de
Estabilización

1 Último nivel NC

2 Tiempo de última oportunidad Tiempo actual en minutos

3 Nivel de ponderación de tiempo acumulado 0

4 Entradas Valor de columna 1


5 Contenidos máximos Valor de columna 1

6 Último cambio de estado Tiempo actual en minutos

7 Tiempo ocioso acumulado 0

8 Tiempo de operación acumulado 0

9 Tiempo de preparación 0

10 Tiempo de llenado acumulado 0

11 Tiempo de vacío acumulado 0

12 Tiempo de bloqueo acumulado 0

13 Tiempo muerto acumulado 0

14 Conteo de tiempo muerto actual NC


www.promodel.com.mx 210

210
Ejemplo de Reporte de Salida

---------------------------------------------------------------- -------------------------------
LOCATIONS
Average
Location Scheduled Total Minutes Average Maximum Current
Name Hours Capacity Entries Per Entry Contents Contents Contents % Util
-------- --------- -------- ------- --------- ------- ------- -------- ------
TanqueA 40 1000 1 - 0 0 0 0.00
TanqueB 40 1000 0 - 0 0 0 0.00

LOCATION STATES BY PERCENTAGE (Single Capacity/Tanks)


Location Scheduled % % % % % %
Name Hours Operation Setup Idle Waiting Blocked Down
-------- --------- --------- ----- ---- ------- ------- ----
TanqueA 40 0.00 0.00 16.67 66.67 16.67 0.00
TanqueB 40 0.00 0.00 19.58 60.42 20.00 0.00

www.promodel.com.mx 211

211
Arreglo Tank_Fills

Un útil arreglo para dar seguimiento a


múltiples llenados simultáneos al mismo
tanque.
Ej: Añadir dos ingredientes al TanqueMezcla
Tank Loop // Continúa el ciclo hasta que la simulación termina
BEGIN
Tank_Fills[TanqueMezcla]=0
ACTIVATE Tank_Transfer(Tanque1,TanqueMezcla,2000,50,0,0)
ACTIVATE Tank_Transfer(Tanque1,TanqueMezcla,300,20,4,0)
WAIT UNTIL Tank_Fills[TanqueMezcla]=2
Tank_DoOperation (TanqueMezcla),15) // Tiempo de Mezclado
WAIT UNTIL Tank_State[TanqueAlmacen] = Tank_Idle
Tank_Transfer(TanqueMezcla,TanqueAlmacen,Tank_Level[TanqueMezcla],40,0,0)
Tank_Prep(TanqueMezcla,50) // Limpizar TanqueMezcla pr 50 minutos
END

www.promodel.com.mx 212

212
Ejercicios

213

213
Recordatorios de Modelación

Los Modelos de tanques deben de


detenerse explícitamente (ya que no se
requieren entidades).
No definir variables locales dentro de
Tank_Loop (ciclos de tanques).
Asegurarse que los estatutos WAIT UNTIL
en el Tank_Level utilicen >= o <=; no =.

www.promodel.com.mx 214

214
Técnicas de Llenado
Una entidad, Tanq, llega a una locación, Entrega,
cargando una cantidad de galones almacenado en un
atributo de entidad llamado Tanker_Qty. El Tanque
descarga su contenido en un tanque, TanqueRecibo, a una
tasa de 200 galones por minuto. Una vez que el
TanqueRecibo se llena, el nivel debe de llegar a 1000
galones antes de continuar el llenado.

Definir lo siguiente en la lógica de proceso para la entidad Tanq:

Tank_Fill (TanqueRecibo, Tanker_Qty, 200, 1000)

www.promodel.com.mx 215

215
Técnicas de Inicio

Se desea comenzar la simulación con el tanque proveedor,


TanqueAgua, llenado con 800 galones de agua.

Definir lo siguiente en la lógica de inicialización del modelo:

Tank_SetLevel (TanqueAgua, 800)

www.promodel.com.mx 216

216
Técnicas para Volver a Llenar

Se desea volver a llenar un tanque proveedor con 20000


galones a 200 gpm cada vez que alcance 500 galones.

Activar una subrutina con el siguiente estatuto:

Tank_Fill (TanqueProv, 100000000, 200, 500)

www.promodel.com.mx 217

217
Técnicas para Tanque Mezcla
Dos tanques (Tanque1 y Tanque2) proveen ingredientes a un tanque llamado
TanqueMezcla. Primero, se bombean 2000 galones del Tanque1 a 50 gpm,
seguido de 300 libras de mezcla deshidratante del Tanque2 a 20 libras por
minuto (la mezcla deshidratante añade 0.2 galones por libra). Los
ingredientes se mezclan por 15 minutos y se tranfieren al Tanque3.

Activar una subrutina con los siguientes estatutos:

Tank_Loop {
Tank_Transfer (Tanque1, TanqueMezcla, 2000, 50, 0, 0)
Tank_Transfer (Tanque2, TanqueMezcla, 300, 20, 4, 0)
Tank_DoOperation (TanqueMezcla, 15)
Wait Until Tank_State [Tanque3] = Tank_Idle
Tank_Transfer (TanqueMezcla, Tanque3,
Tank_Level[TanqueMezcla], 40, 0, 0)
}
www.promodel.com.mx 218

218
Técnicas para Vaciar

Una operación de embotellado llena un contenedor de 2


galones en una estación de llenado. El tiempo de llenado
toma 6 segundos.

Definir lo siguiente como operación para el Contenedor en la


LocLlenado :

Wait 6 sec
Tank_Dec (Llenar, 2)

www.promodel.com.mx 219

219
Técnicas de Transferencia
El TanqueB requiere 1000 galones del TanqueA cada vez
que el TanqueB se vacía. El TanqueB tomará material del
TanqueA sólo cuando el TanqueA tenga un nivel mínimo
de 1000 galones.
Activar la siguiente subrutina en la lógica de inicialización:

Tank_Loop {
Wait Until Tank_Level[TanqueA] >= 1000
Tank_Transfer (TanqueA, TanqueB, 1000, 200,0,0)
[Indicar el proceso y la lógica de vaciado del
TanqueB aquí]
}
www.promodel.com.mx 220

220
Técnicas de Selección

El TanqueX selecciona de entre tres tanques proveedores


(Tanque1, Tanque2 y Tanque3) basandose en cuál de los
tanques proveedores ha estado esperando más tiempo para
descargar su contenido.

Definir lo siguiente en la subrutina para TanqueX:

Int SelectedTank
SelectedTank = Tank_SelectInput(TanqueX, Tanque1, 3,
Tank_LongestBlocked, 0)

www.promodel.com.mx 221

221
Técnicas para Transferir a
Varios Tanques

Cada vez que se llena el TanqueA, éste transfiere


simultáneamente hasta vaciarse al TanqueB a una tasa de 30
gpm y al TanqueC a 40 gpm.

Definir lo siguiente en la subrutina para TanqueA:

Tank_Fills [TanqueB] = 0
Tank_Fills [TanqueC] = 0
ACTIVATE TransferDownTo (TanqueA, TanqueB, 0, 30, 0)
ACTIVATE TransferDownTo (TanqueA, TanqueC, 0, 30, 0)
WAIT UNTIL (TankFills[TanqueB]=1) and (TankFills[TanqueC]=1)

www.promodel.com.mx 222

222
Técnicas de Nivel Disparador
Cada vez que el TanqueA alcanza los 2000 galones, una
entidad llamada Camion se envía a una locación llamada
LocRecoger.

Definir lo siguiente en una subrutina activada en la lógica de


inicialización:

Tank_Loop
Begin
Tank_RiseTrigger (TanqueA, 2000)
Send 1 Camion to LocRecoger
End
www.promodel.com.mx 223

223
Técnicas de Proceso
de Tasa Alta
Las botellas pasan por una estación de llenado a una tasa de 110 por minuto.
El buffer anterior al llenado (FillerInput) tiene una capacidad de 1200
botellas y el buffer después del llenado (FillerOutput) tiene una capacidad de
2000 botellas. FillerInput es llenado con 200 botellas cada U(60,20) minutos.
Cuando 50 botellas se llenan, se ponen en una caja y se embarcan.

Definir lo siguiente en dos subrutinas en la lógica de inicialización:

Tank_Loop {
Wait U(60,20)
Tank_Inc (FillerInput, 200)
}

Tank_Transfer(FillerInput, FillerOutput, INF, 110, 0, 0)


www.promodel.com.mx 224

224
Problema de Operación
del Enlatado
Camiones cargando 2000 galones de jugo de
naranja llegan cada E(44) min. a una fábrica de
conservas donde el jugo es bombeado a un
tanque que alimenta a la máquina de enlatado. El
tiempo que tarda el camión para entrar y salir al
andén es de U(1.5,.5). El jugo se bombea del
camión al tanque a 200 gpm y del tanque a la
operación de enlatado a 48 gpm. Cada 48
galones de jugo producen un lote para embarque.
¿Cuántos lotes pueden producirse en 40 horas y
cuáles ineficiencias hay en el sistema?
www.promodel.com.mx 225

225
Problema Multi-Producto
Un productor de bebidas procesa 5 tipos de bebidas
(naranja, cereza, limón, uva y raíz), cada uno en 2 tamaños
de contenedor (12 oz. y 32 oz.). La bebida se mezcla en un
tanque de mezclado y después es bombeado en un tanque
almacén de donde se alimenta a un tanque de llenado para
envasar. Éste tanque llena envases, los cuales se envían a
un almacén para embarcarlos más adelante. El propósito
de la simulación es ver qué tanto tiempo toma procesar una
lista de órdenes. Las órdenes se definen por tipo de
producto y tamaño de contenedor. Todas las órdenes del
mismo sabor se procesan juntas para minimizar el tiempo de
preparación por cambio de producto .
www.promodel.com.mx 226

226
Problema Multi-Producto
Tanque de Mezclado
Hay un tanque de mezclado con una capacidad de 500 galones. Cada sabor
es una mezcla de concentrado y agua con una proporción de 9:1 entre agua
y concentrado. Ambos ingredientes se bombean al mismo tiempo con el
agua alimentándose a una tasa de 30 galones por minuto (gpm) y el
concentrado a 10 gpm. Siempre hay concentrado y agua disponible, por lo
que no es necesario modelar esta fuente.
Después de que los ingredientes han sido añadidos, se requiere un tiempo
de mezclado de 10 minutos y entonces la bebida está lista para bombearse a
un tanque almacén.

l Parahacer el cambio a un nuevo sabor, se requiere un tiempo de


preparación y limpieza de 15 minutos. Si para completar una orden de un
sabor se necesita mezclar más de lo que cabe en el tanque, en seguida se
procesa el faltante sin requerir ninguna limpieza.
www.promodel.com.mx 227

227
Problema Multi-Producto
Seleccionar un Tanque Almacén
Un tanque almacén se selecciona basándose en cuál
tanque contiene el mismo tipo de producto y tiene
capacidad para más. Si todos los tanques almacén
están llenos o contienen diferentes tipos de producto,
el tanque de mezclado espera hasta que el primer
tanque esté disponible. La selección entre dos o más
tanques ociosos se basa en cuál tanque ha estado
ocioso más tiempo. El tanque de mezclado puede
enviar sólo a un tanque almacén a la vez. La tasa de
flujo hacia el tanque almacén es 30 gpm. 228
www.promodel.com.mx

228
Problema Multi-Producto

Cambio de Producto
Para cambiar a un nuevo sabor, se requiere un tiempo
de preparación y limpieza de 25 minutos. Si para
completar una orden de un sabor se necesita mezclar
más de lo que cabe en el tanque, en seguida se
procesa el faltante sin requerir ninguna limpieza.

www.promodel.com.mx 229

229
Problema Multi-Producto

Tanques Almacén
Hay tres tanques almacén, cada uno con capacidad
de 2000 galones. Cada tanque almacén recibe sus
insumos del tanque de mezclado. Tan pronto como
un tanque almacén recibe cualquier insumo, está
disponible para utilizarse en un llenador. Un llenador
puede tener sólo un tanque almacén alimentándolo,
pero un tanque almacén puede alimentar a más de
un llenador al mismo tiempo. Cuando se vacía un
tanque almacén, éste se enjuaga por 10 minutos.
www.promodel.com.mx 230

230
Problema Multi-Producto

Tanques de Llenado
Hay seis tanques de llenado, cada uno con
capacidad de 50 galones. Un tanque de llenado
requiere bebida de uno de los tanques almacén
basándose en la programación de producto para esa
estación de llenado. Los tanques de llenado se
limpian cuando se termina el producto. El tiempo de
limpieza es de 10 minutos.

www.promodel.com.mx 231

231
Problema Multi-Producto

Estación de Llenado
Cada tanque de llenado llena contenedores en la
estación de llenado. Las botellas se llenan a una
tasa de 200 botellas por minuto en las de 12 oz. y 80
por minuto en las botellas de 32 oz.

www.promodel.com.mx 232

232
Problema Multi-Producto

Lista de Órdenes
Tamaño de
Sabor la Botella Cantidad
8 oz. 3800
Naranja
32 oz. 2300
8 oz. 3300
Limón
32 oz. 2000
8 oz. 3700
Raíz
32 oz. 2200
8 oz. 3000
Cereza
32 oz.
Conversiones
1800
8 oz. 3400 1 galón = 64 oz.
Uva
32 oz. 2200

www.promodel.com.mx 233

233
¡Muchas Gracias!

Tanks Alot!
234

234

También podría gustarte