Anda di halaman 1dari 2

Modelos y Simulación – Año 2011 Lic.

Marcia Mac Gaul


________________________________________________________________________________________

Modelo del Ascensor

Parámetros del sistema:

N: número de pisos
tSubir: tiempo que tarda un pasajero en subir o bajar del ascensor
tPiso: tiempo que tarda el ascensor para pasar de un piso a otro (bajando o subiendo)
C: capacidad del ascensor

Clase ascensor
Datos:
pas (cantidad de pasajeros)
piso (piso más recientemente visitado)
dormido: lógico de lectura (durmió por falta de actividad hasta que alguien lo despierta)
colaInterna: arreglo[0..N] de cola (de objetos de la clase pasajero)

Ciclo de vida:
piso = 0 (inicialización)
repetir siempre
pas = 0
si colai es vacía para todo i
dormido = si
suspenderse
dormido = no
si cola0 no es vacía
cargar (manteniendo pas y controlando la capacidad C)
subir (piso a piso, desde PB, hasta que pas = 0)
bajar (busca la llamada más alta, recoge pasajeros piso por piso y los deja en PB. Si
no hay llamadas, lo mismo baja a PB)

Subrutinas de la clase ascensor:

Procedimiento cargar
mientras colapiso no es vacía y pas <= C
pasajero = sacar(colapiso)
si piso = 0
poner(colaInternadestino(pasajero) , pasajero)
sino
poner(colaInterna0 , pasajero)
reanudar(pasajero)
pas = pas +1

Procedimiento subir
repetir hasta pas = 0
esperar(tPiso)
piso = piso + 1
descargar Procedimiento descargar
mientras colaInternapiso no es vacía
reanudar sacar(colaInternapiso)
pas = pas –1
Procedure bajar
Repetir hasta que no hay p > piso tal que colap no es vacía
esperar(tPiso)
piso = piso + 1
repetir hasta piso = 0
cargar
esperar(tPiso)
piso = piso – 1
descargar
Modelos y Simulación – Año 2011 Lic. Marcia Mac Gaul
________________________________________________________________________________________

Clase Director
para i = 1 hasta N empezar sistemai
(cada piso posee un “sistema” que determina el trámite del pasajero en ese piso)
para i = 0 hasta N nuevo Observador(i)
nuevo pasajero
esperar(Tsim)
para i = 0 hasta N
imprimir tDemora(i) /clientes(i)

Clase pasajero
Datos:
destino de lectura (existe algún método que devuelve el destino)
hLlegada
tDemora

Ciclo de vida:
esperar(distrLlegada)
nuevo(pasajero)
elegir destino según la cuantía de pisos
poner(cola0, yo)
hLlegada = hora
clientes = clientes + 1
Observador(0).Acumular(clientes)
si dormido(ascensor)
reanudar(ascensor)
sino
suspenderse
tDemora = hora – hLlegada
Observador(0).Acumular(tDemora)
esperar(tSubir)
reanudar ascensor “subí”
esperar(tSubir)
reanudar ascensor “bajé”
señalar sistemadestino
suspenderse (cuando es reanudado, termina su trámite y baja)
poner(coladestino, yo)
hLlegada = hora
clientes = clientes + 1
Observador(destino).Acumular(clientes)
si dormido(ascensor)
reanudar(ascensor)
sino
suspenderse
Observador(destino).Acumular(hora – hLlegada)
esperar(tSubir) (llegó el ascensor)
reanudar(ascensor) “subí”
esperar(tSubir) (llegamos a PB, tiempo para bajar)
reanudar(ascensor)
borrarse

Estadística: interesa medir tiempo medio por cliente esperando el ascensor, discriminado
por piso.

Anda mungkin juga menyukai