heurística para la asignación de llamadas en ascensores...

168
+1 Trabajo Fin de Grado Grado en Ingeniería de Tecnologías Industriales Heurística para la asignación de llamadas en ascensores con arquitectura Double- Deck Autor: José María Adalid Fedriani Tutor: Pablo Fabio Cortés Achedad Departamento de Organización Industrial y Gestión de Empresas II Sevilla, 2014

Upload: vukiet

Post on 26-Jun-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

+1

Trabajo Fin de Grado

Grado en Ingeniería de Tecnologías Industriales

Heurística para la asignación

de llamadas en ascensores

con arquitectura Double-

Deck

Autor: José María Adalid Fedriani

Tutor: Pablo Fabio Cortés Achedad

Departamento de Organización Industrial y

Gestión de Empresas II

Sevilla, 2014

Trabajo fin de grado

Grado en Ingeniería de Tecnologías Industriales

Heurística para la asignación de llamadas en

ascensores con arquitectura Double-Deck

Autor:

José María Adalid Fedriani

Tutor:

Pablo Fabio Cortés Achedad

Catedrático de Universidad

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2014

Trabajo Fin de Grado: Heurística para la asignación de llamadas en ascensores con arquitectura

Double-Deck

Autor: José María Adalid Fedriani

Tutor: Pablo Fabio Cortés Achedad

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes

miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2014

El Secretario del Tribunal

7

Índice

Índice de tablas 10

Índice de figuras

11

1. Objeto del proyecto

13

2. Introducción

15

3. Sistemas de ascensores

20

3.1 Antecedentes de los ascensores 20

3.2 Ascensores en la actualidad 21

3.3 Otros tipos de ascensores 22

3.3.1 Lanzaderas 22

3.3.2 Ascensores panorámicos 23

3.3.3 Ascensores Double-Deck

23

4. Aspectos técnicos asociados a los sistemas de transporte

vertical mediante ascensores

25

4.1 Patrones de tráfico 26

8

4.2 Evaluación de la calidad de servicio

28

5. Sistemas para la asignación de las llamadas

30

5.1 Restricciones en el diseño 30

5.2 Sistemas de control 31

5.3 Algoritmo Nearest Call 35

5.3.1 Reasignación de llamadas 37

5.3.2 Medir distancias 38

5.3.3 Asignar llamadas 40

5.3.4 Desasignar llamadas por sobrepeso 42

5.4 Algoritmo Nearest Call con paradas simultáneas para

ascensores Double-Deck

44

6. Implementación del Software

48

6.1 Software de simulación Elevate 48

6.1.1 Proceso para la instalación del software de simulación

Elevate

48

6.1.2 Características del uso del software de simulación

Elevate

49

6.1.3 Informes y datos de salida del software de simulación

Elevate

54

6.2 Aplicación desarrollada en Microsoft Visual C++

56

7. Experimentación y resultados 58

9

7.1 Caracterización de los edificios empleados para la

simulación

58

7.2 Tratamiento de los resultados 59

7.3 Simulación 61

7.4 Edificio 1 62

7.4.1 Interfloor 62

7.4.2 Barney DownPeak 70

7.4.3 Barney UpPeak 74

7.5 Edificio 2 76

7.5.1 Interfloor 76

7.5.2 Barney DownPeak 84

7.5.3 Barney UpPeak

88

8. Conclusión

90

9. Bibliografía

92

10. Anexo A, Resultados intermedios 93

Edificio 1 93

Edificio 2

124

11. Anexo B, Código C++ 154

Objeto ascensor 154

Objeto dispatch 163

10

Índice de tablas

Tabla 1: Edificios más altos del mundo 17

Tabla 2: Grados de servicio según porcentaje de llamadas respondidas 28

Tabla 3: Grado de servicio en función del tiempo empleado en responder las llamadas 29

Tabla 4: Diferencias entre los dos edificios 58

Tabla 5: Características ascensores y pasajeros 59

Tabla 6: Tabla de distribución t-Student 61

Tabla 7: Intervalos de confianza con un tráfico Interfloor 15% POP, Edificio 1 62

Tabla 8: Intervalos de confianza con un tráfico Interfloor 11% POP, Edificio 1 63

Tabla 9: Intervalos de confianza con un tráfico Interfloor 8% POP, Edificio 1 64

Tabla 10: Intervalos de confianza con un tráfico Interfloor 5% POP, Edificio 1 65

Tabla 11: Intervalos de confianza con un tráfico Barney DownPeak 15% POP, Edificio 1 70

Tabla 12: Intervalos de confianza con un tráfico Barney DownPeak 12% POP, Edificio 1 71

Tabla 13: Intervalos de confianza con un tráfico Barney DownPeak 8% POP, Edificio 1 72

Tabla 14: Intervalos de confianza con un tráfico Barney UpPeak 7% POP, Edificio 1 74

Tabla 15: Intervalos de confianza con un tráfico Interfloor 15% POP, Edificio 2 76

Tabla 16: Intervalos de confianza con un tráfico Interfloor 11% POP, Edificio 2 77

Tabla 17: Intervalos de confianza con un tráfico Interfloor 8% POP, Edificio 2 78

Tabla 18: Intervalos de confianza con un tráfico Interfloor 5% POP, Edificio 2 79

Tabla 19: Intervalos de confianza con un tráfico Barney DownPeak 15% POP, Edificio 2 84

Tabla 20: Intervalos de confianza con un tráfico Barney DownPeak 12% POP, Edificio 2 85

Tabla 21: Intervalos de confianza con un tráfico Barney DownPeak 8% POP, Edificio 2 86

Tabla 22: Intervalos de confianza con un tráfico Barney UpPeak 7% POP, Edificio 2 88

11

Índice de figuras

Figura 1: Edificio Burj Khalifa 18

Figura 2: Edificio Taipei 101 19

Figura 3: Lanzaderas y sky-lobbies 22

Figura 4: Ascensores panorámicos 23

Figura 5: Ascensores Double-Deck 24

Figura 6: Patrones de tráfico 26

Figura 7: Controlador de grupo de ascensores 32

Figura 8: Botonera típica de selección de sentido 34

Figura 9: Botonera Destination Control 34

Figura 10: Diagrama de flujo del algoritmo Nearest Call 36

Figura 11: Diagrama de flujo del bloque Reasignación de llamadas 38

Figura 12: Diagrama de flujo del bloque Medir distancias 40

Figura 13: Diagrama de flujo del bloque Asignar llamadas Nearest Call 41

Figura 14: Diagrama de flujo del bloque desasignar llamadas por sobrepeso 43

Figura 15: Asignación de llamadas del algoritmo Nearest Call con paradas simultáneas

para ascensores Double-Deck

45

Figura 16: Asignación de llamadas de plantas consecutivas con el algoritmo Nearest Call 47

Figura 17: Asignación de llamadas de plantas consecutivas con el algoritmo Nearest Call

con paradas simultáneas para ascensores Double-Deck

47

Figura 18: Pantalla de inicio de Elevate 49

Figura 19: Ventana de selección de datos de análisis 50

Figura 20: Ventana de datos del edificio 50

Figura 21: Selección de datos del ascensor estándar 51

Figura 22: Selección de datos del ascensor avanzada 51

Figura 23: Selección de datos de los pasajeros estándar 52

12

Figura 24: Selección de datos de los pasajeros avanzada, periodo Interfllor 52

Figura 25: Ventana de selección de las opciones del informe 53

Figura 26: Ventana de simulación de Elevate 54

Figura 27: Gráfica con los tiempos de trayecto de los pasajeros 55

Figura 28: Hoja Excel con los datos de simulación 55

Figura 29: Aspecto Microsoft Visual C++ 56

Figura 30: Gráfica de tiempos de espera ante tráfico Interfloor 15% POP, edificio 1 66

Figura 31: Gráfica de tiempos de espera ante tráfico Interfloor 11% POP, edificio 1 66

Figura 32: Gráfica de tiempos de espera ante tráfico Interfloor 8% POP, edificio 1 66

Figura 33: Gráfica de tiempos de espera ante tráfico Interfloor 5% POP, edificio 1 67

Figura 34: Gráfica de tiempos de trayecto ante tráfico Interfloor 15% POP, edificio 1 67

Figura 35: Gráfica de tiempos de trayecto ante tráfico Interfloor 11% POP, edificio 1 68

Figura 36: Gráfica de tiempos de trayecto ante tráfico Interfloor 8% POP, edificio 1 68

Figura 37: Gráfica de tiempos de trayecto ante tráfico Interfloor 5% POP, edificio 1 68

Figura 38: Gráfica de tiempos de espera ante tráfico Interfloor 15% POP, edificio 2 80

Figura 39: Gráfica de tiempos de espera ante tráfico Interfloor 11% POP, edificio 2 80

Figura 40: Gráfica de tiempos de espera ante tráfico Interfloor 8% POP, edificio 2 80

Figura 41: Gráfica de tiempos de espera ante tráfico Interfloor 5% POP, edificio 2 81

Figura 42: Gráfica de tiempos de trayecto ante tráfico Interfloor 15% POP, edificio 2 81

Figura 43: Gráfica de tiempos de trayecto ante tráfico Interfloor 11% POP, edificio 2 82

Figura 44: Gráfica de tiempos de trayecto ante tráfico Interfloor 8% POP, edificio 2 82

Figura 45: Gráfica de tiempos de trayecto ante tráfico Interfloor 5% POP, edificio 2 82

13

1. Objeto del proyecto

Este trabajo de fin de grado tiene el objetivo de profundizar en el tema del despacho de llamadas en

sistemas de transporte vertical gestionados por grupos de ascensores. Tiene por objeto conseguir

proporcionar un servicio aceptable a los usuarios del edificio y que estos no tengan que soportar

tiempos de espera muy elevados para llegar a su destino. Para ello, el trabajo se centra en el empleo

de una arquitectura particular dentro de los sistemas de ascensores los ascensores con tipología

Double-Deck.

El enfoque que se sigue es intentar proponer una solución que se pueda implementar y mejore la

calidad del servicio. Para ello en el proyecto se ha desarrollado un código C++, que implementa un

algoritmo que aproveche las propiedades de estos ascensores ante un tipo concreto de tráfico, el

Interfloor.

Aparte de la elaboración del software correspondiente a este algoritmo, se ha comprobado su

correcto funcionamiento con distintas simulaciones, para así poder extraer conclusiones fiables.

El documento que aquí se presenta está dividido en ocho secciones, que están acompañadas de dos

anexos y la bibliografía usada.

La primera sección detalla la disposición del distinto contenido y fija el objeto del trabajo.

La segunda sección introduce el tema del trabajo, explica los motivos de la elaboración del trabajo y

da una idea de partida para los temas tratados en este.

La tercera sección detalla la evolución de los sistemas de ascensores en el tiempo y explica algunos

de los sistemas que se pueden encontrar actualmente, para fijar unas bases del trabajo.

La cuarta sección trata de los aspectos técnicos que van ligados a los distintos sistemas de transporte

14

vertical llevados a cabo por ascensores, que serán muy importantes para el desarrollo del proyecto.

La quinta sección versa sobre los sistemas para la asignación de las llamadas. Describiendo los

distintos sistemas de control del grupo de ascensores y explicando algunos de los algoritmos para el

despacho de ascensores. En este apartado viene descrito el funcionamiento del algoritmo Nearest

Call con paradas simultáneas para ascensores Double-Deck, que es el que se ha diseñado en este

trabajo.

En la sexta sección se presenta el software utilizado y se explica su uso.

La séptima sección trata sobre las simulaciones llevadas a cabo, fijando los distintos escenarios y

explicando el uso de los datos extraídos. En ella se incluyen los resultados obtenidos en estos

experimentos.

La octava sección concluye con las conclusiones que se han podido extraer durante la realización del

trabajo.

Finalmente se muestra la bibliografía utilizada, seguida de dos anexos. El primero de ellos muestra

todos los resultados obtenidos de cada una de las simulaciones realizadas. A su vez el segundo

incluye los principales objetos que se han utilizado durante la elaboración del programa.

De los resultados obtenidos se debe destacar como el algoritmo Nearest Call con paradas

simultáneas para ascensores Double-Deck, consigue mejorar en gran medida los tiempos de los otros

algoritmos con los que se lo ha comparado, en situaciones de tráfico Interfloor. Sin embargo este no

se ha mostrado eficiente ante otros tráficos, especialmente frente al DownPeak. Aunque se puede

concluir que el algoritmo cumple sus especificaciones, ya que este estaba diseñado para periodos de

tráfico Interfloor.

15

2. Introducción

Este trabajo viene motivado por el creciente número de grandes edificios y rascacielos. En estos

edificios, debido a sus dimensiones el servicio de ascensores es una variable crítica y fundamental.

Ya que estos edificios suelen tener un elevado número de usuarios a parte del gran número de plantas

a las que se les debe prestar servicio.

Los costes asociados a un sistema de ascensores son demasiado altos para tolerar una instalación

poco eficiente. Ya que no solo hay que tener en cuenta los costes directos, tanto los

correspondientes a su instalación como los relativos a su mantenimiento. También estos

producen unos costes que se pueden considerar que son indirectos, como son el espacio que estos

ocupan en el edificio. Esto unido a la complejidad del tráfico a lo largo del día, provocan que este

sea un tema sobre el que se ha estudiado mucho. Debido a que una instalación ineficiente de los

ascensores puede provocar grandes pérdidas de tiempo productivo a los usuarios.

Dado que la problemática y el estudio se centra en edificios con fines laborales o del ámbito de los

servicios, tales como edificios comerciales, de oficinas, hospitales, hoteles o complejos industriales.

Ya que es en estos en los que el tiempo es una variable más crítica y en los que es más importante la

calidad del servicio prestado. Se puede generalizar y dividir la jornada en función del uso de las

instalaciones, dividiéndola en cuatro patrones distintos de tráfico. Centrándose este trabajo en un tipo

concreto de tráfico que es el denominado Interfloor.

Se conoce como Interfloor a aquel patrón de tráfico en el que partiendo de una población

previamente situada dentro del edificio, la planta baja nunca es origen ni destino de llamadas a las

cabinas. Este tráfico es el que se da tanto a media mañana como a media tarde, cuando todos los

empleados están en sus puestos de trabajo. El motivo de que este trabajo se haya centrado en este

tipo de tráfico se debe a que este es menos estudiado, a pesar de ser el que se mantiene más tiempo a

lo largo de la jornada. Esto se debe a que en este tráfico los ascensores están en grado de satisfacer la

demanda mejor que en el resto y a que la diversidad de la demanda es mayor . Por ello será muy

importante la evaluación de la calidad de la llamada.

La calidad del servicio hace referencia a los tiempos que el sistema de ascensores requiere para

prestar el servicio solicitado a los usuarios. Esto se evalúa midiendo tanto los tiempos de espera

como los tiempos de trayecto. Los tiempos de espera son el tiempo que cada usuario tiene que

esperar desde que realiza la llamada al ascensor hasta que este llega a su planta. De igual forma los

tiempos de trayecto son el tiempo que transcurre desde que cada usuario realiza la llamada al

ascensor hasta que el usuario llega a su destino.

16

Por otro lado una de las características más distintivas del algoritmo diseñado y de este trabajo en

general es que este no se ha realizado para ascensores convencionales. Centrándose en un tipo

concreto de ascensor, como son los llamados Double-Deck o ascensores de doble cabina.

Los ascensores de doble cabina en los que como ya se ha comentado se centra este trabajo, suelen

estar situados en grandes rascacielos. Estos ascensores consisten básicamente en dos cabinas de

ascensor enganchadas una encima de la otra.

Este tipo de ascensor tiene la gran ventaja de que aumenta en gran medida la capacidad de servicio

del sistema de ascensores. Sin necesitar además para ello aumentar el área dedicada a los ascensores

en el edificio. Siendo además esto un factor importante en los grandes rascacielos. Ya que hay que

tener en cuenta que estos edificios cuentan con una superficie limitada y sin embargo requieren un

nivel de servicio muy alto de los ascensores. Esto se debe a que estos normalmente tienen una

cantidad muy elevada de personas en ellos y sin embargo pocos metros de base.

Otra gran ventaja que ofrecen estos ascensores es la capacidad de dar servicio a dos llamadas de

plantas adyacentes en la misma parada. Esta ventaja hace que se reduzcan en gran medida el número

de paradas necesarias, reduciendo de esta forma los tiempos de espera y de trayecto. El algoritmo

que se ha diseñado en este proyecto ha sido diseñado intentando aprovechar esta ventaja todo lo

posible.

Para proporcionar una idea de las dimensiones de este problema, es muy ilustrativo observar la lista

de mayores edificios del mundo y sus datos en la Tabla 1. En esta tabla se pueden observar los

edificios más grandes del mundo, además de sus distintas alturas y número de plantas. Estas

dimensiones han motivado este trabajo. Ya que al tener un número de plantas tan elevado los

ascensores del tipo Double-Deck es cuando pueden ser más eficaces y se notan más las ventajas que

aportan.

17

Rascacielos más altos del mundo

Foto Puesto Edificio Ciudad País Alt.

Arquitectónica

Alt.

Máxima

Alt.

Azotea Pisos Año

1 Burj

Khalifa 1

Dubái

Emiratos

Árabes

Unidos

828 m 828 m 739 m 163 2010

2 Shanghai

Tower 2

Shanghái China 632 m 632 m 632 m 121 2014

3 Torres Abraj

Al Bait 3

La Meca

Arabia

Saudita 601 m 601 m 559 m 120 2012

4

One World

Trade

Center 4

Nueva

York

Estados

Unidos

541 m 541 m 417 m 104 2014

5

Chow Tai

Fook

Centre 5

Guangzhou China 530 m 530 m 530 m 111 2014

6 Taipei 101 6 Taipéi República

de China

509 m 509 m 448 m 101 2004

Tabla 1: Edificios más altos del mundo

18

Desde el año 2010 el rascacielos más alto del mundo es el Burj Khalifa, este edificio situado en

Dubai tiene una altura de 828 metros y 163 plantas. Estas dimensiones provocan que el servicio de

ascensores conste de 58 ascensores, con algunos de ellos del tipo Double-Deck. La inversión

necesaria para su realización fue de 1500 millones de dólares, lo que equivale aproximadamente a

1140 millones de euros. En la figura 3 se puede observar una imagen del edificio.

Figura 1: Edificio Burj Khalifa

Este edificio desbancó al edificio Taipei 101, construido en Taipéi (Taiwán) en el año 2004, de

509.2 metros y 101 plantas por encima del suelo más otras 5 subterráneas. Este edificio tiene 61

ascensores entre los que también hay ascensores del tipo Double-Deck. Los que como se puede

observar sobre todo en grandes edificios se usan ya que aportan una buena solución al problema del

tráfico sin requerir mayor espacio que otros convencionales. La inversión para la construcción de

este edificio fue de 1700 millones de dólares. La figura 2 muestra una imagen de este edificio.

19

Figura 2: Edificio Taipei 101

Como se puede ver en estos edificios, recientemente ha aumentado el uso de los ascensores con

arquitectura del tipo Double-Deck. Ya que como se ha mencionado anteriormente ofrecen grandes

mejoras tanto arquitectónicas como en la capacidad y calidad de servicio.

20

3. Sistemas de ascensores

Los ascensores son un invento cuyo comienzo se puede remontar hasta la época de los romanos y

que ha ido evolucionando hasta los distintos mecanismos que existen hoy día.

En este capítulo se expondrá como han ido evolucionando los ascensores hasta los ascensores

modernos. También se explicará el funcionamiento de estos y algunas de sus propiedades.

Finalmente se verán algunos tipos de ascensores de pasajeros distintos a los convencionales.

3.1 Antecedentes de los ascensores

El primer ascensor del que se tiene constancia es un invento de Arquímedes, que había construido

un primer elevador en torno al año 236 a.C. con un mecanismo que usaba cuerdas y poleas. Y ya más

adelante en el siglo XVII, hay constancia del uso de ascensores en edificios palaciegos de Inglaterra

y Francia.

Pero no fue hasta el siglo XIX cuando se abrió un nuevo mundo en cuanto al transporte vertical se

refiere, con la revolución industrial. En el año 1835 se empiezan a utilizar máquinas de vapor para

mover ascensores y levantar cargas en una fábrica. Once años después, William Armstrong crea el

primer ascensor hidráulico empleando la presión del agua corriente, basándose en una idea de

William Thompson. En 1851, Waterman inventó el primer prototipo de montacargas. Este prototipo

consistía en una plataforma que unida a un cable permitía subir y bajar tanto mercancías como

personas.

Inspirado en el montacargas Elisha G. Otis, diseñó y construyó el primer sistema elevador que

incluía un mecanismo automático de seguridad. Este mecanismo estaba basado en un sistema

dentado que permitía amortiguar la caída del mismo en el supuesto de que se cercenara el cable de

sustento. La aparición de un mecanismo elevador seguro junto a las nuevas técnicas de construcción

posibilitaron la construcción de rascacielos. En 1857 Otis instaló el primer ascensor para pasajeros

del mundo en una tienda de cinco pisos en la esquina de la calle Broome de Broadway, en Nueva

York. Este ascensor era movido por una máquina a vapor a una velocidad de 0.2 m/seg.

21

El ascensor moderno es en gran parte un producto de este siglo. En el año 1889 se instaló el primer

ascensor eléctrico. Este ascensor era una modificación del de vapor con arrollamiento, sustituyendo

el motor de vapor por uno eléctrico. En 1894 se instala el primer ascensor eléctrico con pulsadores

automáticos. Las ventajas del ascensor eléctrico (rendimiento, costos de instalación relativamente

bajos y velocidad casi constante sin reparar en la carga) animaron a los ingenieros a buscar una

manera de usar la fuerza motriz eléctrica en estos edificios: los contrapesos que creaban tracción

sobre las poleas dirigidas eléctricamente solucionaron el problema.

3.2 Ascensores en la Actualidad

Los ascensores modernos consisten en una cabina, el elemento portante del sistema de ascensores,

que se alza mediante cables de acero por dos rieles guía y ostentan un mecanismo de seguridad que

impide el desplome. Una polea accionada por un motor es la encargada del desplazamiento del

ascensor, mediante unos cables unidos a la cabina y un contrapeso. En los extremos inferior o

superior de la cabina se encuentra el sistema de paracaídas. Este puede ser instantáneo o progresivo,

y funciona liberando unas cuñas contra las guías que frenan la cabina en caso de que descienda a una

velocidad mayor que la permitida por el limitador de velocidad. Impidiendo de esta forma que la

cabina pueda caer libremente, incluso si se diera el caso de que se rompieran todos los cables que la

sujetan.

Los costes asociados a un ascensor, incluidos los costes directos de su instalación y mantenimiento y

los indirectos por el espacio que ocupan, son demasiado altos como para tolerar una instalación poco

eficiente. Los ascensores deben ser dispuestos y diseñados para prestar el servicio necesario con una

mínima inversión. Debido a que ascensores ineficientes pueden causar ingentes pérdidas del tiempo

productivo de sus usuarios. En este sentido el área de la cabina en la que los usuarios viajan ha de ser

lo suficientemente amplia como para acomodar a los pasajeros sin causar molestias por aglomeración

y permitir a cada usuario un acceso fácil desde y hacia las puertas. A menudo se habla de espacio

medio por pasajero, lo que implica que la capacidad del ascensor se disponga con dimensiones

óptimas para el acomodo de los usuarios. Una disposición adecuada permite que los pasajeros

formen filas y columnas de forma que se optimicen las dimensiones de las cabinas.

En 1979 es la Otis Elevator Company la que diseña el primer controlador con microprocesadores

electrónicos. Actualmente estos ejecutan avanzados algoritmos de inteligencia artificial que

determinan la forma de administrar la respuesta a los pedidos de llamadas, coordinando los distintos

dispositivos de transporte para aumentar la capacidad y la calidad del servicio.

La investigación en este tema se encuentra en auge. Debido sobre todo a que la continua

revalorización del suelo urbano unida a la necesidad de maximizar su aprovechamiento, tienen como

consecuencia la construcción de edificios cada vez más altos. Junto a esto también se aprecia una

22

tendencia a mejorar la calidad del servicio ofrecido para conseguir una mayor competitividad de cara

al mercado.

3.3 Otros Tipos de Ascensores

A parte de los ascensores convencionales hay muchos más tipos, con distintas características en

función de sus usos, aunque aquí solo se mencionan los que son de pasajeros:

3.3.1 Lanzaderas

Estos ascensores se usan en los grandes rascacielos para conectar la planta baja, rápidamente y sin

paradas, con los sky-lobbies. Estos son unas plantas intermedias de intercambio de ascensores, en las

que los pasajeros pueden cambiar de las lanzaderas a otros ascensores en función del segmento del

edificio al que se quiera ir. Esta idea da mucha fluidez al tráfico en el edificio y disminuye en gran

medida los tiempos de espera y de tránsito, aunque obliga a hacer una parada intermedia. Un ejemplo

de esto son las torres gemelas, que tenían dos sky-lobbies con sus correspondientes lanzaderas en las

plantas 44 y 78 como se puede ver en la figura 3.

Figura 3: Lanzaderas y sky-lobbies

23

3.3.2 Ascensores panorámicos

Estos ascensores exteriores con cristalera suelen estar pensados para turistas, ya que así pueden

disfrutar de las vistas mientras suben o en edificios comerciales y residenciales combinando

funcionalidad y estética. Se puede apreciar en la figura 4.

Figura 4: Ascensores panorámicos

3.3.3 Ascensores Double-Deck

Estos son los ascensores en los que se centra este trabajo, que consisten en dos cabinas unidas una

encima de la otra. Aunque no son muy populares, arquitectónicamente aportan muchas ventajas al

ocupar el mismo espacio que un ascensor convencional y soportar un mayor nivel de tráfico. Estos

ascensores se pueden ver en el Burj Khalifa (el edificio más alto del mundo, Dubai) o en la torre

Eiffel, en España se pueden encontrar en la Torre Picasso en Madrid. Se pueden apreciar en la figura

5.

24

Figura 5: Ascensores Double-Deck

25

4. Aspectos técnicos asociados a los sistemas

de transporte vertical mediante ascensores

En un edificio un factor muy importante para su buen funcionamiento es la capacidad de transporte

de su grupo de ascensores. Estos deben ser de fácil acceso y proporcionar un servicio fiable y de

calidad. Lo que es claramente visible en edificios comerciales y de oficinas, donde todo el tiempo

que los trabajadores están esperando llegar a su destino es tiempo productivo que se pierde. En los

edificios residenciales esto no es un problema como tal, por lo que normalmente basta con ofrecer un

servicio razonable considerando algunas reglas para garantizar un servicio mínimo.

La gestión del tráfico vertical se puede evaluar de dos formas:

Comprobando si es capaz de satisfacer la capacidad de transporte necesaria, en función a la

cantidad y a la solvencia del sistema.

O en función de la calidad del servicio, atendiendo a los tiempos de espera de los pasajeros

(AWT, average waiting time) y al tiempo de llegada al destino (ATD, average time to destine).

En este trabajo se ha evaluado la calidad del servicio y el algoritmo que se ha diseñado se ha

centrado en mejorarla, intentando disminuir tanto los tiempos de espera como los de llegada al

destino. Estos tiempos están muy ligados de forma que es difícil mejorarlos todos, como ya se verá

en los resultados que se han obtenido.

El problema de la gestión del tráfico vertical se ha ido convirtiendo en una mayor dificultad

conforme ha ido creciendo la altura de los edificios. Ya que la creación de grandes rascacielos con su

elevada altura complican mucho la gestión y el correcto servicio del grupo de ascensores. Todo esto

unido a la elevada inversión que requiere la creación de uno de estos edificios, provoca que no se

pueda permitir un servicio de los ascensores ineficiente, tanto del punto de vista energético como

desde el punto de vista del servicio ofrecido a los usuarios.

26

4.1 Patrones de Tráfico

Dado que la problemática y el estudio se centra en edificios con fines laborales o del ámbito de los

servicios, tales como edificios comerciales, de oficinas, hospitales, hoteles o complejos industriales.

Se puede generalizar y dividir la jornada en función del uso de las instalaciones dividiéndola en

cuatro patrones distintos de tráfico.

En la figura 6 se puede apreciar como varía el tráfico a lo largo del día.

Figura 6: Patrones de tráfico

Por orden de aparición a lo largo del día son:

UpPeak: máximo tráfico ascendente, este tráfico se da al inicio de la jornada laboral en los

edificios de oficinas cuando todos los empleados llegan a la oficina y acuden a sus puestos de

trabajo. Se caracteriza por una gran demanda desde la planta principal o planta de entrada en

sentido ascendente.

Interfloor: Suele agrupar el tráfico entre plantas de media mañana y media tarde que se

caracteriza en que la planta de entrada no suele ser ni destino ni planta de llamada de los

ascensores. Es para el que se ha diseñado el algoritmo de este trabajo, por lo que más

adelante se verá con mayor detalle. En este tráfico se puede distinguir dos distintos aunque

normalmente se agrupan en el Interfloor que son:

Balanced Interfloor Traffic: tráfico equilibrado entre plantas, es el tráfico normal de

media mañana o media tarde cuando los empleados ya están en sus puestos.

27

Unbalanced Interfloor Traffic: tráfico no habitual de media mañana o media tarde que

está provocado por una demanda en alguna de las plantas del edificio que no es

habitual, puede ser debido a una reunión de personal.

LunchPeak Traffic: tráfico de mediodía, este patrón se da durante el descanso entre los

turnos de mañana y tarde, cuando los empleados abandonan sus puestos para almorzar y

después regresan a la oficina. Este tráfico se caracteriza por ser muy intenso con muchas

llamadas descendentes hacia la planta principal, a la salida de los empleados, y muchas

llamadas ascendentes desde esta, a su vuelta.

DownPeak: máximo tráfico descendente, este tráfico se da al final de la jornada laboral

cuando los empleados abandonan sus puestos de trabajo acabando el día. Se caracteriza por

una elevada demanda desde todos los pisos descendente hacia la planta principal.

En la teoría clásica se considera el periodo UpPeak como el patrón de tráfico más severo y afirma

que pudiendo satisfacer el periodo UpPeak cualquier escenario de trabajo es capaz de satisfacer el

servicio durante el resto de periodos. Aunque esta afirmación es discutible respecto a la calidad del

servicio. Ya que aunque funcione bien en términos de satisfacción de demanda, no lo hace de igual

manera respecto a los tiempos medios de espera. Se puede comprobar que en periodos como el

DownPeak y el LunchPeak los tiempos de espera pueden llegar a ser incluso el doble de los tiempos

de espera medios del periodo UpPeak.

Actualmente las líneas de investigación se van encaminando a considerar todos los periodos de

tráfico como Interfloor y al resto de patrones como casos particulares de este. Esto es debido a lo

anteriormente referido junto a la flexibilización de los horarios de trabajo y a la prohibición de fumar

dentro de los edificios hacen que la división del tiempo no se pueda basar en grupos de demanda

exclusivos.

Este tráfico aún siendo el patrón de tráfico con una duración mayor es el menos estudiado, esto es

debido a que una instalación con capacidad suficiente para satisfacer la demanda máxima durante el

patrón UpPeak presentará una solvencia aún mejor durante periodos Interfloor, aun a pesar de

utilizar un controlador específicamente diseñado para periodos UpPeak. Por lo que durante los

periodos Interfloor la calidad de servicio es mucho más importante que la cantidad de servicio, y la

mejor manera de medirla es con los tiempos de espera y de trayecto de los pasajeros. Esto también se

debe a que aunque la capacidad requerida es menor, la diversidad de esta demanda es mucho mayor.

28

Strakosch define tres posibles tipos de tráfico entre plantas equilibrado:

Ligero: cuando el número de pasajeros que requieren servicio no es mayor que dos a tres

veces el número de ascensores en servicio.

Mediano: si la carga media de los ascensores es menor del 50% de la carga

máxima de una cabina.

Pesado: cuando la carga media de los ascensores es mayor del 50% de la carga máxima de

una cabina (aunque esto es muy raro que se produzca de manera equilibrada).

4.2 Evaluación de la Calidad de Servicio

Aunque los estudios actuales lo cuestionen, como se ha explicado anteriormente. Se suele admitir

que una instalación que ofrezca un grado de servicio determinado durante el periodo UpPeak,

proporcionará uno de un nivel mejor en DownPeak y de dos niveles mejor en Balanced Interfloor

Traffic. Tomando las tablas 2 y 3 como regla general.

Grado de servicio Porcentaje de llamadas respondidas en

30 seg. 60 seg.

Excelente >75% >98%

Bueno >70% >95%

Regular >65% >92%

Pobre/inaceptable <65% <92%

Tabla 2: Grados de servicio según porcentaje de llamadas respondidas

29

Grado de servicio Porcentaje de llamadas respondidas en

50% 90%

Excelente 20 seg. 45 seg.

Bueno 22.5 seg. 50 seg.

Regular 25 seg. 55seg.

Pobre/inaceptable >25 seg. >55seg.

Tabla 3: Grado de servicio en función del tiempo empleado en responder las llamadas

En este trabajo para evaluar la calidad del servicio se tendrán en cuenta tres tiempos de espera que

son:

Average Waiting Time (AWT): Representa el tiempo de espera medio por pasajero, es decir

el tiempo medio que pasa desde que el pasajero llama al ascensor hasta que llega el ascensor

y comienzan a abrirse sus puertas. En situaciones reales existen dos formas de calcular su

valor para comprobar la calidad del sistema, aunque cada una tiene algunos problemas. Una

es mediante observadores humanos, que tiene el problema de que es tedioso y a veces

imposible. La otra es, relacionándolo con el tiempo medio de respuesta del sistema, es el

tiempo que tarda un grupo de ascensores en atender la primera llamada desde una planta

cualquiera. El problema de este método es que comienza a contar a partir del instante en que

el primer pasajero realiza la llamada por lo que el tiempo de espera de posibles futuros

pasajeros en esa planta no se tiene en cuenta. En las simulaciones de este trabajo esto no será

un problema, ya que las simulaciones son por ordenador y este es uno de los datos que

proporciona el software ELEVATE, con el que se han realizado las simulaciones en este

trabajo.

Average Trip Time (ATT): Representa el tiempo medio que emplea un ascensor desde que

recoge a un pasajero hasta que este llega a su destino. Debido a la naturaleza humana se

puede admitir que para un individuo que viaja solo no debe ser superior a 100 segundos,

mientras que para alguien acompañado un tiempo aceptable puede ser de hasta 150 segundos.

Average Journey Time (AJT): Representa el tiempo medio que dura el viaje por pasajero, es

decir el tiempo que pasa desde que el viajero llama al ascensor hasta que este llega a su

destino. Esto es igual a la suma de los dos tiempos anteriormente calculados.

AJT=AWT+ATT

30

5. Sistemas para la asignación de las

llamadas

Con lo que se ha visto hasta ahora ya se puede saber cómo funciona a grandes rasgos el sistema. Pero

para gestionar el movimiento de los ascensores tanto de forma individual como de conjunto hace

falta un sistema de control. Este sistema de control se encargará de asignar las llamadas realizadas al

ascensor más conveniente.

5.1 Restricciones en el diseño

El diseño del controlador y de la instalación de los ascensores debe tener en cuenta tres aspectos

fundamentales, que son:

Las restricciones impuestas por el edificio. Como son sus dimensiones, el núcleo donde se

aloja el grupo de cabinas y donde están situadas las entradas principales al edificio. Todas

estas características suelen haber sido definidas de forma previa por el arquitecto. Esto limita

en gran medida la libertad del diseñador de la instalación del conjunto de ascensores a la hora

de trabajar.

Las restricciones impuestas por la fisiología humana. Ya que los ascensores deben garantizar

el máximo confort a sus ocupantes, de tal forma que deben tener en cuenta el efecto de

incomodidad. Especialmente el producido por el movimiento de la cabina en los pasajeros si

este es tal que provoca un movimiento brusco de los órganos dentro del cuerpo. Gracias a la

inercia, una velocidad constante, sin importar su magnitud, nunca producirá una sensación de

incomodidad. Sin embargo la aceleración y el impulso pueden producir sensación de

malestar si superan ciertos valores críticos, que aunque estos sean dependientes de la

constitución de cada cuerpo, suelen ser parecidos. Así se toma como convenio un límite

máximo para la aceleración/deceleración de 1/8 de la gravedad terrestre o 1.225 m/s2 y para

el impulso 2.0 m/s2.

Las restricciones impuestas por aspectos psicológicos humanos. La principal forma de

evaluar el funcionamiento del sistema para los usuarios son los tiempo de espera y llegada al

31

destino. Constituyen la principal forma de evaluar el funcionamiento del sistema para los

usuarios, aunque el grado de servicio esperado varía en función el pasajero y sobre todo

según el lugar en el que se encuentre y el momento del día . Por ejemplo, al inicio de la

jornada no le importará a un trabajador que el ascensor que lo transporta a su planta se retrase

pero esto si le molestará al final de la jornada cuando pretende abandonar el edificio.

Normalmente se toman como límites máximos del tiempo de espera unos 30 segundos para

edificios de oficinas y 60 segundos para edificios residenciales. El tiempo de tránsito o de

duración del viaje del pasajero dentro de la cabina (Trip Time) también constituye un factor

importante a tener en cuenta aunque en menor medida que el tiempo de espera. En este caso

al igual que en el anterior la apreciación del paso del tiempo dentro de la cabina viene

condicionada por factores externos, como por ejemplo que el individuo vaya acompañado de

amigos o no.

5.2 Sistemas de control

En sus inicios los sistemas de control se dividían en dos tipos claramente diferenciados:

El control del tráfico programado, con este modelo los ascensores se van desplazando a lo

largo del edificio de una forma ya preestablecida según unas pautas que intentan prever los

movimientos de los pasajeros. Estos se van distribuyendo de manera uniforme a lo largo del

edificio y sus movimientos responden a unos patrones de tráfico predichos anteriormente, de

tal manera que las cabinas se pueden desplazar aun en el caso de que no hubiera ninguna

llamada registrada.

El control de tráfico basado en la demanda o llamada, en este modelo los ascensores van

atendiendo a las llamadas registradas de los usuarios siguiendo un modelo de control y

supervisión en lugar de una programación predefinida.

En la actualidad se utiliza el sistema de control de tráfico basado en la demanda real de transporte.

Debido a que el control del tráfico programado tenía algunos defectos como el gasto de tener

ascensores moviéndose sin necesidad y una menor capacidad de solvencia.

La labor del sistema de control consiste en almacenar las llamadas de planta, y atenderlas de la forma

más eficaz posible, ya sea con el objetivo de disminuir el consumo energético o los tiempos de

espera y trayecto. Es habitual que los sistemas clásicos de control puedan implementar diferentes

algoritmos de despacho en función de los tipos de patrones de tráfico y las demandas o tengan uno

sólo que se adapte a cada uno de ellos.

32

En el sistema de control se pueden distinguir distintos controladores, como se ve en la figura 7, en la

que se aprecia como cada ascensor tiene un controlador que a su vez es controlado por el controlador

de grupo.

.

Figura 7: Controlador de grupo de ascensores

El controlador de grupo es el encargado de decidir a cual cabina asignar las llamadas realizadas

desde las distintas plantas. Controlando hacia dónde deben dirigirse y en qué planta se detienen las

distintas cabinas, haciendo la función de cerebro del sistema de control. En un mismo sistema puede

haber más de un controlador de grupo, aunque en caso de haber más de uno, habrá uno que será el

controlador principal y el resto serán como copias de seguridad.

El controlador de ascensor se encarga de las funciones relativas al control de la cabina, tales como el

control de las puertas o medir las cargas.

En sistemas modernos, el control de ascensor puede traer incorporados dispositivos de

monitorización de ascensores o sistemas de monitorización remota de edificios para seguir el tráfico

en los ascensores.

33

Los sistemas de control han ido evolucionando y se desarrolló una generación de controladores que

intentan optimizar el servicio no solo durante el periodo UpPeak sino durante todos los periodos. Ya

que por ejemplo, está empíricamente comprobado que el periodo LunchPeak es más complicado de

gestionar que el UpPeak. Siendo sin embargo este el que se toma como base en el diseño de la

instalación, estos nuevos sistemas siguen un conjunto de reglas que garantizan su correcto

funcionamiento que son:

Regla 1: las llamadas de cabina siempre tienen preferencia sobre las llamadas

de planta.

Regla 2: un ascensor nunca debe cambiar la dirección de viaje con pasajeros a

bordo.

Regla 3: una cabina debe parar siempre en la planta destino de un pasajero que

lleva, es decir, no puede atravesar la planta sin detenerse.

Regla 4: los pasajeros que deseen viajar en una dirección determinada nunca

deben entrar en la cabina si esta lleva un dirección obligada contraria a la suya.

Regla 5: un ascensor nunca debe detenerse en una planta si no existe ningún

pasajero de la cabina que quiera bajarse en ella o algún pasajero en la planta

que quiera montarse en el ascensor.

Todos los sistemas control de los que se ha hablado en este apartado se basan en la existencia de

llamadores exteriores (situados en las plantas) de dos botones, en los que se indica el sentido del

desplazamiento deseado. En la figura 8 se puede observar una de estas botoneras.

34

Figura 8: Botonera típica de selección de sentido

Aunque no se vean en profundidad en este trabajo ya que está ha centrado en los sistemas

convencionales, es importante citar a los sistemas Destination Control. Ya que recientemente casi

todas las empresas del sector han trabajado y desarrollado modelos de control por destino, un método

que requiere una botonera especial como la que se muestra en la figura 9. En ella cada usuario

selecciona la planta a la que desea ir y esta le asigna una cabina en función de su destino, de forma

que agrupa las llamadas si tienen destinos similares. Esta forma de despacho evita las

aglomeraciones de gente intentando subirse al mismo ascensor y disminuye los tiempos de trayecto,

al no tener el ascensor que ir parando en cada planta, aunque empeora los tiempos de espera de los

pasajeros.

Figura 9: Botonera Destination Control

35

5.3 Algoritmo Nearest Call

Uno de los algoritmos de despacho más habituales es el conocido como Nearest Call, es el algoritmo

de tipo industrial más implementado por las compañías del sector del transporte vertical. Sus

principales características son su sencillez, fiabilidad y un tiempo de proceso pequeño.

Este sistema de despacho el procedimiento que sigue es asignar las llamadas de planta al ascensor

que esté más cerca de la planta en la que se produce la llamada y viaje en el sentido de esta. Ya que

como se vio en la regla 2, un ascensor no debe cambiar su marcha con algún pasajero a bordo.

Para su correcto funcionamiento este método va actualizando en todo momento el estado de sus

ascensores. De esta forma si uno de ellos sobrepasa al que tenía asignada una cierta llamada, por lo

que pasa a estar este ascensor más cerca se le asignaría la a él, en lugar de al que la tenía asignada

con anterioridad.

En la figura 10 se puede observar el diagrama de flujo correspondiente a este método de despacho de

llamadas. Destacando los bloques de funciones auxiliares en verde.

Primeramente en el bloque reasignación de llamadas, se devuelven al controlador las llamadas

asignadas que no son planta de destino. De esta forma se pueden reasignar las llamadas en caso de

que otro ascensor pase a estar más cercano.

Tras esto con un bucle se recorre todo el edificio buscando llamadas por asignar. En caso de que

haya una llamada desde esta planta se evalúa la distancia desde cada ascensor a esta planta, teniendo

en cuenta la dirección del movimiento, como ya se explico anteriormente. Finalmente se asigna cada

llamada al ascensor que resulte estar más cercano a esa planta.

Una vez que ya se han asignado todas las llamadas se desasignarán las que produzcan un exceso de

peso en cada cabina. De forma que vuelvan a estar activas para signarlas a otro en la próxima

iteración.

36

Figura 10: Diagrama de flujo del algoritmo Nearest Call

37

5.3.1 Reasignación de llamadas

El bloque Reasignación de llamadas es el primer bloque del algoritmo. Este bloque se ejecuta ante

cada actualización del sistema, con el objeto de evaluar de nuevo las distancias de los ascensores a

las llamadas. En la figura 11 se observa el diagrama de flujo de este bloque.

Una vez que se produzca una actualización comienza a ejecutarse. Una vez que se ejecuta devuelve

al controlador todas las llamadas asignadas previamente excepto las que son planta de destino actual

del ascensor. Para ello con un bucle recorre todas las plantas del edificio. Dentro de este con otro

bucle recorre los distintos ascensores. Una vez dentro de los dos bucles el algoritmo comprueba si

hay alguna llamada de esa planta que haya sido asignada a una de las cabinas del ascensor que se esté

evaluando y si es esa planta el destino del ascensor. En caso de que haya alguna llamada sin ser esta

la planta de destino esta se devolverá al controlador y se quitará del ascensor. En la figura 11 este

proceso de devolver las llamadas al controlador se ha marcado en amarillo .

38

Figura 11: Diagrama de flujo del bloque Reasignación de llamadas

5.3.2 Medir distancias

El siguiente bloque auxiliar que aparece en el diagrama de flujo del algoritmo Nearest Call es el

encargado de medir la distancia de cada cabina a la planta que se esté evaluando.

En este bloque se mide la distancia a la que está la planta a la que se quiere atender del ascensor que

se esté evaluando teniendo en cuenta el sentido de la llamada. Este bloque se puede apreciar en la

figura 12.

39

En caso de que el ascensor esté parado la distancia es igual a la distancia entre el piso en el que se

encuentre la cabina y la planta de la llamada. En el diagrama de flujo correspondiente a este bloque

esto se calcula con el valor absoluto, ya que una distancia no puede ser negativa.

Si el ascensor se mueve en el mismo sentido de la llamada lo primero es evaluar si puede parar antes

de llegar a esa planta. Si puede detenerse a tiempo la distancia se calcula igual que en el caso

anterior. Hay otro caso cuando el ascensor se mueve en este sentido que es si este no pudiera

detenerse a tiempo o ha pasado la planta de la llamada. En este caso deberá atender las llamadas de

cabina que tenga, una vez termine debe ir en sentido contrario atendiendo las llamadas que tenga

asignadas y ya cuando acabe podrá ir a la planta que se está evaluando. Por lo que en este caso se

supone que la distancia que recorrerá el ascensor el ascensor antes de poder atender la llamada es el

doble de la altura del edificio menos la diferencia entre su posición y la de la planta. Ya que se

supone que en los dos sentidos llega hasta el final del edificio.

El último caso que resta por explicarse es este viaja en sentido contrario. En este caso el ascensor

debe terminar su con las llamadas que tenga asignadas en ese sentido antes de poder dar la vuelta y

atender la llamada de la que se está evaluando. Al igual que antes se supone que el ascensor llegará

hasta el final del edificio antes de poder cambiar de sentido. Por lo tanto la distancia si el ascensor

está bajando es la altura de la planta más la posición del ascensor y si está subiendo dos veces la

altura del edificio menos la altura de la planta y la posición del ascensor.

De igual forma a como se calcula la distancia para la cabina inferior se calcula para la superior. Lo

único que cambia es que la posición de la cabina superior es igual a la posición del ascensor más

uno. Ya que en Elevate la inferior es la que se toma como referencia.

40

Figura 12: Diagrama de flujo del bloque Medir distancias

5.3.3 Asignar llamadas

Una vez ha evaluado la distancia de todos los ascensores el algoritmo Nearest Call, asigna la llamada

a la cabina más cercana. Esto lo hace con la ayuda de la función auxiliar Asignar llamadas. Con el

diagrama de flujo que se muestra en la figura 13.

Esta función primeramente establece un mínimo inicial como el doble de la altura del edificio. De

esta forma se asegura que uno de los ascensores este a menor distancia para poder asignarle la

llamada. Tras esto comienza a recorrer con un bucle todos los ascensores del sistema. En cada

ascensor comprueba si la distancia a la llamada de la cabina inferior primero y la superior después es

menor que el mínimo. En caso de que lo fuera establece el nuevo valor del mínimo como la distancia

de esta cabina a la llamada y guarda el número del ascensor en la variable ”ascensor”. Al mismo

tiempo en una variable auxiliar llamada “banderaUC” se guarda si la cabina más cercana es la

superior o la inferior, siendo 1 su valor cuando es la superior y 0 cuando la inferior.

41

Una vez finalizado el bucle el programa ya sabe cuál es la cabina más cercana a la llamada. Siendo

esta cabina a la que se le asignará esa llamada. En la figura 13 se han marcado en amarillo las

asignaciones de cabina, ya que son procesos con implicaciones mecánicas.

Figura 13: Diagrama de flujo del bloque Asignar llamadas Nearest Call

42

5.3.4 Desasignar llamadas por sobrepeso

Finalmente una vez ya estén todas las llamadas asignadas se ejecuta la última función auxiliar, el

bloque Desasignar llamadas por sobrepeso. Este bloque se encarga de devolver al controlador las

llamadas que hayan sido asignadas a una cabina y vayan a causar un sobrepeso en esta. De forma que

se vuelvan a asignar a otra cabina en la siguiente iteración. Su diagrama de flujo se puede observar

en la figura 14. Destacándose en amarillo los procesos de devolución de las llamadas al controlador

desde la cabina a las que estaban asignadas.

Lo primero que hace esta función es por medio de un bucle recorrer todos los distintos ascensores.

En este bucle evalúa la carga actual de cada cabina y comprueba si superaría su capacidad si entrara

dentro otra persona. En caso de que esto fuera cierto esa cabina no está en grado de atender ninguna

llamada. Por lo que todas las llamadas asignadas previamente a ella deben ser devueltas al

controlador.

Debido a esto en caso de ser cierto se ejecuta otro bucle que recorra todas las plantas del edificio

desasignando en el caso de que las hubiera las llamadas asignadas a esta cabina y devolviéndolas al

controlador. Esto se realizará para las dos cabinas por separado, ya que son independientes.

43

Figura 14: Diagrama de flujo del bloque desasignar llamadas por sobrepeso

44

5.4 Algoritmo Nearest Call con paradas simultáneas para

ascensores Double-Deck

En el trabajo como ya se había dicho previamente se ha trabajado para mejorar la calidad de servicio

en grupos de ascensores del tipo Double-Deck. Para ello se ha diseñado un algoritmo a partir del

Nearest Call. Este algoritmo se ha comparado con otro convencional para ascensores del tipo

Double-Deck, que ofrecía el software ELEVATE. Este seguía el procedimiento de asignar las

llamadas desde los pisos pares a la cabina superior y las de los impares a la cabina inferior. El

problema de este sistema es que no responde bien cuando los usuarios quieren ir de plantas pares a

impares o viceversa. También se ha comparado con el algoritmo Nearest Call convencional.

Primero se diseñó un algoritmo Nearest Call que se actualizara constantemente y asignara las

llamadas además de en función de la posición de los ascensores teniendo en cuenta la capacidad de

estos. Esto ha comprobado que es de gran utilidad sobre todo ante tráficos pesados cuando se

saturaba alguna cabina. Este algoritmo es el que se muestra en el apartado anterior.

Una de las mayores ventajas que aportan los ascensores del tipo Double-Deck es que ofrecen la

oportunidad de servir a dos plantas en la misma parada. Ya que si en dos plantas contiguas se

realizan llamadas de planta con el mismo sentido estos ascensores permiten la posibilidad de asignar

ambas llamadas al mismo ascensor y servirlas en una sola parada. Esto permite un ahorro en el

tiempo de espera al pasajero. Ya que el ascensor tiene que realizar menos paradas antes de recogerlo

y también disminuye los tiempos de trayecto por el mismo motivo. Debido a que tardará menos en

llegar a su destino si no tiene que parar tantas veces.

Por este motivo aprovechando esta gran ventaja, a la hora de diseñar un nuevo algoritmo de

despacho para este tipo de ascensores se ha premiado que se atiendan las llamadas de pisos

inmediatos en una misma parada.

El diagrama de flujo de este método es idéntico al que sigue el método Nearest Call, que se aprecia

en la figura 10. Siendo además iguales todas sus funciones auxiliares excepto el bloque

correspondiente a la asignación de las llamadas. En el que se encuentra la única diferencia entre estos

dos métodos, ya que en el algoritmo Nearest Call esta se asigna directamente a la cabina más

cercana. Sin embargo en el algoritmo Nearest Call con paradas simultáneas para ascensores Double-

Deck aquí desarrollado, se debe evaluar la posibilidad de atender dos llamadas de forma simultánea.

De forma que en el caso de que haya dos llamadas sin atenderse en plantas consecutivas y de

idéntico sentido estas se asignen al mismo ascensor. Asignándose la de la planta superior a la cabina

superior y la otra llamada a la cabina inferior. En la figura 15 se puede apreciar cómo funciona la

asignación de las llamadas en el algoritmo Nearest Call con paradas simultáneas para ascensores

Double-Deck.

45

Figura 15: Asignación de llamadas Algoritmo Nearest Call con paradas simultáneas para ascensores Double-Deck

46

Lo primero que se evalúa es la cabina que se encuentra más cercana al piso desde el que se realiza la

llamada. Con un bucle se van recorriendo los ascensores, comparando en cada uno de ellos la

distancia de cada una de sus cabinas con el mínimo. Este mínimo se establece al principio en el doble

de la altura del edificio, garantizando de esta manera que la distancia de los ascensores sea menor.

Cuando el ascensor que se está evaluando está a una distancia menor que el mínimo, se guarda su

número para asignarle a él la llamada. Al mismo tiempo en una variable auxiliar llamada

“banderaUC” se guarda si la cabina más cercana es la superior o la inferior, siendo 1 su valor cuando

es la superior y 0 cuando la inferior.

Una vez que se ha evaluado cual es el ascensor más cercano se comprueba si existe alguna llamada

realizada desde el piso superior con el mismo sentido. En caso de que sea cierto se le asigna al

ascensor más cercano la llamada del piso superior a su cabina superior y a la inferior la llamada del

piso que se estaba evaluando.

En el caso de que no la hubiera se asignaría la llamada a la cabina más cercana del ascensor que

estaba más cercano, al igual que en el algoritmo Nearest Call. En la figura 15 se han marcado en

amarillo las asignaciones de cabina, ya que son procesos con implicaciones mecánicas.

El resto de bloques del diagrama de flujo de este método se pueden apreciar en las figuras 11, 12 y

14. Ya que los del algoritmo Nearest Call con paradas simultáneas para ascensores Double-Deck

son totalmente idénticos a los del algoritmo Nearest Call descrito en el apartado anterior.

En las figuras 16 y 17 se puede apreciar cómo actuaría cada algoritmo ante dos llamadas de plantas

consecutivas. Apreciándose las diferencias entre ellos y la ventaja que ofrece el algoritmo aquí

diseñado. Ya que este reducirá a una las dos paradas que realiza el ascensor cuando sigue el método

de despacho Nearest Call.

La figura 16 muestra como las asignaría el método Nearest Call. En este método se asigna cada

llamada a la cabina que esté más cercana, por esto en este caso le asigna las dos llamadas a la cabina

superior. Esto provoca que esta cabina deba pararse en ambas plantas para que los usuarios se suban

en la cabina correspondiente, en este caso todos en la superior.

La figura 17 muestra como las asignaría el algoritmo Nearest Call con paradas simultáneas para

ascensores Double-Deck. En este método como se puede ver en la figura 15, en caso de que haya dos

llamadas de pisos consecutivos en el mismo sentido, estas se asignarán una a cada cabina. De esta

forma la llamada de la planta superior será atendida por la cabina superior, mientras la otra será

atendida por la cabina inferior.

47

Figura 16: Asignación de llamadas de plantas consecutivas con el algoritmo Nearest Call

Figura 17: Asignación de llamadas de plantas consecutivas con el algoritmo Nearest Call con paradas simultáneas para

ascensores Double-Deck

48

6. Implementación del software

El software necesario tanto para la elaboración del código como para su posterior simulación son

básicamente dos programas. Elevate, en el que se ha llevado a cabo toda la fase de experimentación,

que permite comprobar el correcto funcionamiento de los sistemas de control desarrollados.

Introduciendo un código escrito en C++, implementándolo en el otro programa básico para este

trabajo Microsoft Visual C++. Este programa es un entorno de desarrollo integrado (IDE) para

lenguajes de programación C, C++ y C++/CLI que engloba el desarrollo de aplicaciones hechas en

C, C++ y C++/CLI en el entorno Windows.

6.1 Software de simulación Elevate

ELEVATE es un software desarrollado por Peters Research Ltd. para el análisis y simulación de

tráfico de ascensores. Este programa permite simular el comportamiento de los ascensores en

distintos escenarios que pueden ser creados con el programa. Estos se crean definiendo todas sus

características, desde el número de plantas y su altura, al número de personas en cada una o el

número de ascensores y sus propiedades. Además permite seleccionar distintos patrones de tráfico.

Con lo que se podrá poner a prueba a los distintos algoritmos diseñados con varias condiciones de

trabajo y evaluar su funcionamiento.

6.1.1 Proceso para la instalación del software de simulación Elevate

Para la instalación de este programa es necesario estar en posesión de una licencia, una vez con ella

se puede encontrar en la página web https://www.peters-research.com/index.php/8-elevate/58-

elevate-8 los enlaces desde los que se puede descargar unos instaladores, tanto del programa como

del interfaz necesario para diseñar sus códigos en C++. En este trabajo se ha usado la versión 8.15

de Elevate, ya que era la recomendada para el sistema operativo Windows 7, con el que se ha

trabajado.

Ya con estos instaladores es posible instalar en el ordenador los programas, hay que tener en cuenta

que para poder diseñar los códigos hay que tener también instalado el programa Microsoft Visual

C++ 8.0, que es el recomendado por el fabricante para esta versión de Elevate. Es también

recomendable instalarlos directamente en el disco local C del ordenador para evitar problemas de

49

funcionamiento luego al enlazar con los distintos ficheros del programa.

Una vez estén todos los programas instalados hay que enlazar el programa con los códigos que se

quieran diseñar. Esto se hace abriendo el proyecto de Microsoft Visual “Dispatch W” disponible en

la carpeta que se habrá creado con el nombre “Dispatch Test”. En esta carpeta se encuentran algunas

explicaciones sobre cosas que se deben editar antes de empezar a funcionar, una vez seguidas las

indicaciones ya se podrá ejecutar a través del botón Debug.

6.1.2 Características de uso del software de simulación Elevate

Una vez ejecutado el programa Elevate se abrirá la ventana que se observa en la figura 18, de forma

que pueda comenzarse con el diseño del caso que se va a simular.

Figura 18: Pantalla de inicio de Elevate

Una vez que se empieza con el diseño del caso se irán estableciendo todas las características del

sistema que irán apareciendo en sucesivas ventanas, que por orden serán:

50

Datos de análisis: Aquí se selecciona el tipo de análisis, el número de simulaciones, la

semilla aleatoria con la que realizar la simulación y el sistema de control elegido. Los

algoritmos diseñados con C++ aparecerán eligiendo la opción Dispatcher Algorithm custom.

En la figura 19 se puede observar un ejemplo de esta ventana.

Figura 19: Ventana de selección de datos de análisis

Datos del edificio: En esta ventana se seleccionan los datos del edificio en el que se va llevar

a cabo la simulación. Eligiendo el número de plantas, seleccionando entre ellas la principal o

de entrada, la altura de cada una de ellas, los trabajadores que están en ellas y su porcentaje

de absentismo. La figura 20 muestra esta ventana.

Figura 20: Ventana de datos del edificio

51

Datos de los ascensores: En esta ventana se seleccionan los datos de los ascensores del

sistema, desde su número, a todas sus características como: el tipo de ascensor, velocidad,

aceleración, tiempo de apertura de puertas, etcétera. La selección de estos datos se puede de

la forma estándar con una ventana como la de la figura 21 o de forma avanzada como se ha

realizado en la figura 22.

Figura 21: Selección de datos del ascensor estándar

Figura 22: Selección de datos del ascensor avanzada

52

Datos de los pasajeros: Aquí se pueden seleccionar los distintos patrones de tráfico, además

de los distintos datos de los pasajeros como su masa, el porcentaje de ellos que usa las

escaleras o el tiempo que tardan en subirse y bajarse del ascensor. La selección de estos datos

se puede de la forma estándar con una ventana como la de la figura 23 o de forma avanzada

como se realiza en la figura 24, esta forma permite editar los datos para simular patrones más

complejos.

Figura 23: Selección de datos de los pasajeros estándar

Figura 24: Selección de datos de los pasajeros avanzada, periodo Interfllor

53

Opciones del informe: Esta última ventana de opciones permite elegir los datos de salida de

la simulación, los datos que extraerá el programa después de ejecutarlo y las gráficas que se

obtendrán. Se puede ver esta ventana en la figura 25.

Figura 25: Ventana de selección de las opciones del informe

Una vez que se hayan seleccionado todos los datos se puede empezar con la simulación a través del

botón de play que se encuentra en la parte superior de la ventana principal del programa.

Cuando se haya hecho esto de forma automática Elevate ejecutará el algoritmo de despacho

seleccionado y comenzará la simulación del experimento. Se puede controlar la velocidad de

simulación y su ejecución con los distintos botones, aumentando la velocidad de experimentación

mediante el botón de rebobinar, pausándola con el de pausa o terminarla con el stop. En la figura 26

se puede apreciar como es la ventana del programa una vez está funcionando. Las flechas

representan las llamadas de planta ascendentes (color verde) y descendentes (color rojo) y los puntos

azules indican una llamada de cabina (un pasajero selecciona un destino dentro del ascensor). En esta

figura además se puede observar como el ascensor 1 está atendiendo a dos plantas distintas de forma

simultánea. Apreciándose la ventaja de atender a dos llamadas en una misma parada de la que ya se

había hablado con anterioridad.

54

Figura 26: Ventana de simulación de Elevate

6.1.3 Informes y datos de salida del software de simulación Elevate

Una vez se han acabado las simulaciones Elevate ofrece todos los datos que se hayan seleccionado

en la ventana de opciones, desde los tiempos de espera y tiempos de trayecto, hasta los datos sobre

los ascensores y la simulación.

Los datos los muestra de forma gráfica con tablas, como en la figura 27. Aunque ofrece un amplio

abanico de posibilidades para verlos y evaluarlos. Por comodidad para la recopilación de datos de

tiempos de espera es aconsejable coger la opción de la hoja Excel, como en la figura 28.

55

Figura 27: Gráfica con los tiempos de trayecto de los pasajeros

Figura 28: Hoja Excel con los datos de simulación

56

6.2 Aplicación desarrollada en Microsoft Visual C++

Para la elaboración del código del algoritmo en C++ como se ha comentado anteriormente se hace

uso del programa Microsoft Visual C++ 8.0, es la versión de este programa recomendada para

trabajar con Elevate 8.15 que es el usado en este proyecto.

Este programa consta de un editor de texto para la escritura del código, la posibilidad de trabajar con

las librerías de Elevate y herramientas que permiten la depuración y compilación del código. Pero sin

duda su mayor ventaja y lo más importante en este trabajo es su sincronización con Elevate. De

forma que el programa desarrollado con Visual C++ quede incluido automáticamente en la carpeta

correspondiente. Con el objetivo de que Elevate a la hora de hacer simulaciones contemple el código

ofreciendo la posibilidad de elegirlo como algoritmo de despacho de ascensores. En la figura 29 se

aprecia una muestra del aspecto que presenta Microsoft Visual C++ y parte del código del algoritmo

diseñado.

Figura 29: Aspecto Microsoft Visual C++

Cabe destacar de este programa el archivo “Dispatch.cpp”, ya que en este archivo ha sido donde se

ha elaborado el código del algoritmo diseñado en C++. Este código ha hecho uso de las distintas

variables objetos ya definidas por Elevate, siendo los más importantes “lift.h” y “dispatch.h”.

57

El objeto “lift.h” introduce los ascensores como objetos. Este objeto permite la posibilidad de usar

como variables las distintas propiedades del ascensor, su estado y distintas funciones asociadas a él.

Por ejemplo, para asignarle una llamada ascendente al ascensor ”j” de la planta “i”, se cambia el

valor de la variable l[j].m_UpLandingCalls[i] a uno.

Por otro lado el objeto “dispatch.h” es el encargado del despacho de ascensores. Este objeto detecta

las actualizaciones del sistema respecto al tema de las llamadas. Siendo el encargado de detectar las

nuevas llamadas a los ascensores.

58

7. Experimentación y resultados

Con el objetivo de comprobar la validez del algoritmo diseñado y si este consigue mejorar la calidad

del servicio y cumple los resultados esperados, se han propuesto dos edificios. De forma que sirvan

de distintos escenarios, para simular el despacho de ascensores con los distintos algoritmos.

Sometiéndolos a distintos patrones de tráfico y a un número suficiente de simulaciones para poder

sacar conclusiones fiables sobre el algoritmo.

7.1 Caracterización de los edificios empleados para la

simulación

Para la realización de las pruebas se han diseñado dos edificios, de distinto tamaño y con distinto

número de ascensores de forma que pueda observarse como varían los resultados en función de la

congestión y el tamaño del edificio. Las principales características distintivas de ambos edificios se

pueden observar en la tabla 4 que vienen a continuación.

EDIFICIO 1 EDIFICIO 2

Número de plantas 20 30

Altura del edificio 72.2 m 104.4 m

Separación entre plantas 3.8 m 3.6 m

Población del edificio 950 1450

Personas por planta 50 50

Número de ascensores 4 8

Tabla 4: Diferencias entre los dos edificios

A ambos edificios se les ha añadido dos plantas auxiliares que se pueden considerar de servicio

técnico, que no influirán en el tráfico por lo que no se han incluido en la tabla 4. Estas plantas tienen

el objetivo de facilitar y mejorar el servicio de los ascensores Double-Deck. Estando una por encima

59

de la planta superior y otra por debajo de la planta inferior provocando de esta forma que ambas

cabinas puedan servir todas las plantas.

Los parámetros de los ascensores, todas las cabinas se han considerado iguales, y las características

de los pasajeros de ambos edificios han sido seleccionadosiguales pudiendo verse en la tabla 5.

Capacidad de los ascensores 1000 kg

Velocidad de los ascensores 2.5 m/s

Aceleración de los ascensores 0.8 m/s

Retraso de inicio de marcha 0.5 s

Tiempo de apertura de puertas 1.8 s

Tiempo de cierre de puertas 2.9 s

Tiempo de carga y descarga 1.2 s

Factor de capacidad 80%

Factor de uso de escaleras 0%

Tabla 5: Características ascensores y pasajeros

Estos dos escenarios se someterán a distintas simulaciones de distintos patrones de tráfico, siendo

todos ellos tráficos constantes.

Realizando distintas simulaciones de estos escenarios se alcanzan unos resultados que se almacenan

y procesan de forma que se puedan extraer resultados generales de la combinación de todos los

resultados individuales.

7.2 Tratamiento de los resultados

Para que los datos de la simulación sean lo más fiable posible se ha supuesto un número de

experimentos a realizar de 10 simulaciones con distintas semillas aleatorias, por cada patrón de

60

tráfico con el que se ha experimentado. De esta forma se establecerán unos intervalos de confianza

para cada tráfico y método de despacho.

Para hallar los intervalos de confianza entre los que se moverán los tiempos, se usará una

distribución t-Student, que da unos valores para el cálculo de los intervalos en función de la

confianza deseada para el intervalo y del número de experimentos realizados. Para esto se

necesitarán los estimadores de la media y la varianza que se calculan de la siguiente forma:

i ≈ μ

S2 =

I - )2 ≈ σ

Una vez que ya se han calculados estos estimadores, se puede recurrir a la distribución t-Student

fijando previamente el intervalo de confianza. En este caso se ha seleccionado del 95%, de forma que

el 95% de las veces estos tiempos se deben encontrar dentro del intervalo calculado. Ya con estos

datos se calculan los límites del intervalo con la siguiente fórmula:

- tα/2,n-1

+ tα/2,n-1

Dado que el intervalo de confianza seleccionado es del 95% el valor de α=0.05, y el número de

experimentos realizados para calcular cada intervalo es de 10, en la tabla 6 se puede comprobar que

el valor del coeficiente tα/2,n-1 es igual a 2.262. Conocidos ya todos los datos se pueden construir los

intervalos de confianza.

61

Tabla 6: Tabla de distribución t-Student

7.3 Simulación

En este apartado se mostrarán todos los distintos tipos de tráfico con los que se ha experimentado que

son:

Constant Traffic Interfloor: 5%, 8%, 11% y 15% POP (Porcentaje de población del

edificio)(Percentage of building population)

Barney DownPeak: 8%, 12% y 15% POP

Barney UpPeak: 7% POP

Y las diez semillas aleatorias seleccionadas: 1, 11, 87, 165, 258, 333, 369, 456, 741 y 987. Estas

semillas se han elegido aleatoriamente entre 1000 semillas.

Cada uno de los tres algoritmos de los que se ha hablado en el proyecto: convencional para Double-

Deck (Conv. en las tablas), Nearest Call con ajuste de peso (NC 1 en las tablas) y Algoritmo Nearest

Call con paradas simultáneas para ascensores Double-Deck (NC 2) en las tablas. Ha sido testado con

los ocho tráficos distintos y estos a su vez con las diez semillas aleatorias. De forma que cada

algoritmo ha sido sometido a 80 simulaciones en cada edificio, por lo que el total de simulaciones

realizadas ha sido de 240 por edificio, siendo el número final de simulaciones realizadas de 480.

Como esta gran cantidad de pruebas ha dado un número muy elevado de datos a evaluar se ha creado

una hoja en Excel, de forma que introduciendo los distintos resultados obtenidos tras cada simulación

calcule los parámetros necesarios y los límites del intervalo de confianza.

62

7.4 Edificio 1

En este apartado se muestran los resultados obtenidos de las simulaciones en el edificio 1.

7.4.1 INTERFLOOR

En las tablas 7, 8, 9 y 10 se muestran los intervalos de confianza que se obtienen al someter los tres

algoritmos a las distintas simulaciones, con los tráficos Interfloor, usando las fórmulas anteriormente

descritas.

Interfloor 15% POP

AWT

Límite inferior Media Límite Superior

Conv. 126.4 135 143.6

NC 1 128.6 143.95 159.3

NC 2 92.6 106.7 120.8

ATT

Límite inferior Media Límite Superior

Conv. 82.8 84.5 86.2

NC 1 94.3 96.15 98

NC 2 85.1 86.8 88.5

AJT

Límite inferior Media Límite Superior

Conv. 211.9 219.5 227.1

NC 1 224.1 240.1 256.1

NC 2 178.5 193.5 208.5

Tabla 7: Intervalos de confianza con un tráfico Interfloor 15% POP, Edificio 1

63

La tabla 7 muestra los intervalos de confianza obtenidos para un tráfico Interfloor del 15% POP. En

los resultados obtenidos, se ve como el algoritmo Nearest Call editado para los ascensores Double-

Deck consigue los menores tiempos de tanto de espera como de trayecto. Esto además lo consigue

con una diferencia bastante amplia respecto a los otros dos, confirmando los resultados esperados.

Ya que este método aprovecha la posibilidad de servir dos plantas consecutivas disminuyendo en

gran medida el número de paradas. Sin embargo el otro algoritmo Nearest Call usado no funciona

con la misma eficacia que este y empeora en todos los tiempos, debido a que produce un número de

paradas demasiado elevado ante una situación de tráfico más intenso.

Interfloor 11% POP

AWT

Límite inferior Media Límite Superior

Conv. 101.5 105.4 109.2

NC 1 79 86.4 93.8

NC 2 71 78.2 85.4

ATT

Límite inferior Media Límite Superior

Conv. 70 72.4 74.8

NC 1 84.2 86.7 89.2

NC 2 71 72.8 74.6

AJT

Límite inferior Media Límite Superior

Conv. 172.8 177.8 182.7

NC 1 164.3 173.1 181.8

NC 2 142.6 151 159.3

Tabla 8: Intervalos de confianza con un tráfico Interfloor 11% POP, Edificio 1

En la tabla 8 se puede observar ya como ante un tráfico menos intenso que el anterior el algoritmo

Nearest Call más simple ya consigue responder mejor que el algoritmo convencional, tanto en los

tiempos de espera como en los tiempos de trayecto. Aunque sigue teniendo unos tiempos de tránsito

64

muy elevados debido al alto número de paradas que realiza. El algoritmo editado para Double-Deck

sin embargo sigue demostrando de forma holgada ser el más efectivo para el tráfico Interfloor, con

los menores tiempos de trayecto y de espera por un gran margen.

Interfloor 8% POP

AWT

Límite inferior Media Límite Superior

Conv. 83.6 89 94.5

NC 1 59 66 73.1

NC 2 54.2 57.8 61.5

ATT

Límite inferior Media Límite Superior

Conv. 57.8 60.9 63.9

NC 1 69.7 71.5 73.3

NC 2 56.3 58.4 60.5

AJT

Límite inferior Media Límite Superior

Conv. 143.9 149.9 155.9

NC 1 130.2 137.5 144.8

NC 2 112.2 116.3 120.3

Tabla 9: Intervalos de confianza con un tráfico Interfloor 8% POP, Edificio 1

En la tabla 9 se aprecia como ante un tráfico Interfloor bastante más ligero ya el algoritmo

convencional es el que pero responde por una diferencia ya considerable. Debido a que aunque su

tiempo de tránsito sea mucho menor que para el Nearest Call básico empeora sus tiempos de espera

y de trayecto, siendo además estos más importantes a la hora de evaluar un algoritmo. Por el otro

lado el Nearest Call editado para Double-Deck se reivindica en su puesto, consiguiendo los menores

tiempos en todas las categorías, demostrando ser muy fiable con este tipo de tráfico.

65

Interfloor 5% POP

AWT

Límite inferior Media Límite Superior

Conv. 62.7 66 69.3

NC 1 39 41.8 44.6

NC 2 36 41.2 46.4

ATT

Límite inferior Media Límite Superior

Conv. 42.6 44.5 46.3

NC 1 45.2 47.3 49.3

NC 2 38.5 40.2 41.9

AJT

Límite inferior Media Límite Superior

Conv. 106.4 110.4 114.4

NC 1 85.2 89.1 93

NC 2 76 81.4 86.8

Tabla 10: Intervalos de confianza con un tráfico Interfloor 5% POP

La tabla 10 ya muestra unos resultados mucho más parejos entre los dos algoritmos Nearest Call.

Porque aunque sigue demostrando ser mejor el algoritmo para Double-Deck, al reducir tanto el

tráfico se da menos el caso de llamadas de pisos consecutivos. Siendo esta la principal ventaja que

tiene el editado sobre el más simple. Se sigue demostrando que al intentar parar en plantas

consecutivas se reduce el número de paradas. Esto disminuye especialmente los tiempos de tránsito,

aunque también se mejoran en menor medida los tiempos de espera, produciendo que

consecuentemente los tiempos de trayecto disminuyan en mayor medida. Por otro lado ante este

tráfico el algoritmo convencional se ve muy limitado con tiempos bastante peores.

En las figuras 30, 31,32 y 33 se muestran los tiempos de espera conseguidos por cada algoritmo para

que se pueda valorar de forma gráfica como varían estos. Se ha marcado de azul los tiempos

inferiores al intervalo de confianza y de rojo el intervalo.

66

AWT INTERFLOOR 15% POP

Figura 30: Gráfica de tiempos de espera ante tráfico Interfloor 15% POP, edificio 1

AWT INTERFLOOR 11% POP

Figura 31: Gráfica de tiempos de espera ante tráfico Interfloor 11% POP, edificio 1

AWT INTERFLOOR 8% POP

Figura 32: Gráfica de tiempos de espera ante tráfico Interfloor 8% POP, edificio 1

0

20

40

60

80

100

120

140

160

180

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

10

20

30

40

50

60

70

80

90

100

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

67

AWT INTERFLOOR 5% POP

Figura 33: Gráfica de tiempos de espera ante tráfico Interfloor 5% POP, edificio 1

En estas gráficas se observa claramente como el algoritmo diseñado en este trabajo reduce de forma

considerable los tiempos de espera respecto al algoritmo convencional y al Nearest Call básico.

Aunque frente a tráficos más ligeros el algoritmo Nearest Call se aproxima mucho y ofrece una

menor cota superior del intervalo de confianza.

De igual forma en las figuras 34, 35, 36 y 37 se muestran los tiempos de trayecto conseguidos por

cada algoritmo para que se pueda valorar de forma gráfica como varían estos. Se ha marcado de azul

los tiempos inferiores al intervalo de confianza y de verde el intervalo de confianza.

AJT INTERFLOOR 15% POP

Figura 34: Gráfica de tiempos de trayecto ante tráfico Interfloor 15% POP, edificio 1

0

10

20

30

40

50

60

70

80

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

50

100

150

200

250

300

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

68

AJT INTERFLOOR 11% POP

Figura 35: Gráfica de tiempos de trayecto ante tráfico Interfloor 11% POP, edificio 1

AJT INTERFLOOR 8% POP

Figura 36: Gráfica de tiempos de trayecto ante tráfico Interfloor 8% POP, edificio 1

AJT INTERFLOOR 5% POP

Figura 37: Gráfica de tiempos de trayecto ante tráfico Interfloor 5% POP, edificio 1

En las gráficas anteriores se puede observar como los tiempos de trayecto son reducidos en gran

medida con la implementación del algoritmo del trabajo. Aunque el algoritmo Nearest Call básico

0

50

100

150

200

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

140

160

180

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

140

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

69

consigue aproximar sus tiempos de trayecto a los del trabajo ante tráficos ligeros, aunque sin

conseguir superarlo.

Con estos datos se puede llegar a la conclusión de que el algoritmo que se ha diseñado en este trabajo

para mejorar la calidad del servicio con ascensores Double-Deck consigue cumplir sus

especificaciones. Mejorando de manera considerable los tiempos, siendo más significativo esto

respecto al convencional ante tráficos más ligeros. Ya que las diferencias entre estos dos se

mantienen parecidas pero disminuyen los tiempos aumentando por tanto la diferencia relativa. Sin

embargo esto es lo contario a lo que ocurre al compararlo con el otro algoritmo. Este mejora su

calidad de forma significativa conforme va disminuyendo la intensidad de tráfico, aunque de todas

formas este no consigue llegar a la calidad de servicio que ofrece el algoritmo Nearest Call editado

ante este tipo de tráfico.

70

7.4.2 BARNEY DOWNPEAK

En las tablas 11, 12 y 13 se pueden observar los intervalos de confianza que se obtienen al someter

los tres algoritmos a las distintas simulaciones, con los tráficos Barney DownPeak y sus distintas

intensidades, usando las fórmulas anteriormente descritas.

Barney DownPeak 15% POP

AWT

Límite inferior Media Límite Superior

Conv. 176 187.2 198.4

NC 1 290.8 324.1 357.4

NC 2 282.9 315.4 347.9

ATT

Límite inferior Media Límite Superior

Conv. 76.8 78.6 80.4

NC 1 117.3 120.3 123.3

NC 2 51 52.3 53.6

AJT

Límite inferior Media Límite Superior

Conv. 253.9 265.8 277.7

NC 1 408.8 444.4 480.1

NC 2 335.9 367.6 399.4

Tabla 11: Intervalos de confianza con un tráfico Barney DownPeak 15% POP, Edificio 1

En la tabla 11, se observa como el algoritmo convencional es el que mejor responde a este tipo de

tráfico. Ya que los otros dos algoritmos producen unos tiempos de espera muchísimo más altos al no

seguir el método de recogida recomendable para periodos DownPeak.

71

Barney DownPeak 12% POP

AWT

Límite inferior Media Límite Superior

Conv. 111.1 124 136.8

NC 1 163.6 191.4 219.11

NC 2 208.4 233.6 258.9

ATT

Límite inferior Media Límite Superior

Conv. 72.7 75 77.2

NC 1 105.5 109.7 113.8

NC 2 50.5 51.8 53.1

AJT

Límite inferior Media Límite Superior

Conv. 184.1 198.9 213.7

NC 1 271.5 301.1 330.6

NC 2 260.9 285.4 309.8

Tabla 12: Intervalos de confianza con un tráfico Barney DownPeak 12% POP, Edificio 1

En esta tabla se observa como aunque han disminuido los tiempos de cada algoritmo, ya que también

se ha visto reducida la intensidad del tráfico, la relación entre ellos sigue siendo igual. Excepto para

el Nearest Call básico que ha mejorado al editado para Double-Deck en los tiempos de espera. Pero

al igual que ante el resto de tráficos ante los que han sido probados su elevado tiempo de tránsito

provoca que siga siendo el que presenta los mayores tiempos de trayecto.

72

Barney DownPeak 8% POP

AWT

Límite inferior Media Límite Superior

Conv. 61.7 73.2 84.6

NC 1 59.1 68.7 78.3

NC 2 153.9 173.9 193.9

ATT

Límite inferior Media Límite Superior

Conv. 62.2 64.7 67.2

NC 1 79.2 85.2 91.1

NC 2 45.6 47.5 49.3

AJT

Límite inferior Media Límite Superior

Conv. 124.4 137.9 151.4

NC 1 139.2 153.9 168.6

NC 2 202.4 221.4 240.4

Tabla 13: Intervalos de confianza con un tráfico Barney DownPeak 8% POP, Edificio 1

En la tabla número 13 ya se puede observar un cambio considerable respecto a la tabla 12, en lo que

respecta a la calidad del servicio de los distintos algoritmos. Por un lado el algoritmo convencional

continúa demostrando ser el más recomendable para este tipo de tráfico con el menor tiempo de

trayecto y el segundo mejor tiempo de espera siguiendo de cerca al algoritmo Nearest Call. Este

algoritmo demuestra funcionar de forma más eficaz ante tráficos más ligeros, consiguiendo ante este

tráfico los menores tiempos de espera y unos tiempos de trayecto más similares a los del

convencional. Aunque sigue estando lastrado por los elevados tiempos de tránsito que produce. Por

otro lado el algoritmo editado para Double-Deck no consigue acercarse a los tiempos de los otros

dos.

73

En estas tablas se observa como ninguno de los algoritmos consigue buenos tiempos de espera ante

un tráfico DownPeak. Siendo especialmente mala la respuesta del algoritmo Nearest Call básico,

comparada con la del convencional ante tráficos más pesados. Y la del algoritmo editado para

Double-Deck ante tráficos más ligeros, viendo como ante estos ya ha mejorado de forma

considerable el otro algoritmo.

Usando estos datos como base se puede llegar a la conclusión de que el algoritmo convencional es el

que mejor responde ante tráficos del tipo DownPeak. Sin embargo esto se podría mejorar con

sistemas de despacho que infieran o prevean a través de la experiencia cuando se va a producir un

periodo con este tráfico. Esto puede ser sabiendo a la hora a la que se van los empleados, en ese caso

hay un procedimiento sencillo pero que mejora los tiempos de forma considerable, que consiste en

enviar los ascensores lo más arriba posible, teniendo en cuenta las llamadas ya asignadas a otros

ascensores. De forma que conforme vayan descendiendo vayan recogiendo pasajeros y llevándolos a

la planta baja. Una vez hecho esto y considerando que se trabaja con ascensores del tipo Double-

Deck, se podría premiar como en el algoritmo diseñado en este trabajo, el servir a plantas

consecutivas lo que ha probado reducir los tiempos tanto de tránsito como de espera.

74

7.4.3 BARNEY UPPEAK

En la tabla 14, se muestran los intervalos de confianza que se obtienen al someter los tres algoritmos

a las distintas simulaciones, ante un tráfico del tipo Barney UpPeak y una intensidad del 7% POP,

usando las fórmulas anteriormente descritas.

Barney UpPeak 7% POP

AWT

Límite inferior Media Límite Superior

Conv. 434.6 524 613.4

NC 1 19.5 29 38.5

NC 2 25 38.1 51.2

ATT

Límite inferior Media Límite Superior

Conv. 78.9 80 81.1

NC 1 87.7 91.1 94.5

NC 2 91.9 95.2 98.4

AJT

Límite inferior Media Límite Superior

Conv. 514 604 694

NC 1 111.6 120.1 128.6

NC 2 120.2 133.2 146.2

Tabla 14: Intervalos de confianza con un tráfico Barney UpPeak 7% POP, Edificio 1

En la tabla 14 se observa como los algoritmos diseñados en este trabajo responden de forma parecida

a un tipo de tráfico UpPeak. Siendo un poco mejores los tiempos del primero de ellos respecto a los

del segundo en todas las categorías y como estos a su vez son mucho mejores respecto a los del

algoritmo convencional. Ya que no responde bien a este tipo de tráfico y provoca unos tiempos de

espera altísimos y en consecuencia unos tiempos de trayecto también muy elevados.

75

Pudiéndose concluir en base a estos datos que el algoritmo convencional es el que peor responde ante

tráficos del tipo UpPeak. Sin embargo esto se podría mejorar con sistemas de despacho que infieran

o prevean a través de la experiencia cuando se va a producir un periodo de este tipo. Como puede ser

sabiendo a la hora a la que entran los empleados. Los sistemas de control cuando detectan tasas de

tráfico nítidamente UpPeak ponen en marcha un procedimiento sencillo que mejora profundamente

los resultados ofrecidos en este apartado. Dicho procedimiento consiste en que cuando un ascensor

atiende todas sus llamadas de cabina vuelva automáticamente a la planta baja para seguir cargando

pasajeros que se encuentran a la espera. Esta forma de actuar mejora enormemente los resultados

ofrecidos. Esto se debe a que los métodos de despacho en su modo de funcionamiento normal bajo

condiciones UpPeak solo registran una llamada de planta en la planta baja cada vez. Aunque haya

decenas de personas esperando ascensores, esto provoca que esta única llamada sea asociada a una

única cabina. No siendo hasta que esta cabina atiende la llamada y carga pasajeros hasta completar su

capacidad cuando de nuevo se registra una nueva llamada. Esta llamada ya hará que otro ascensor

baje para transportar nuevos pasajeros. El alto tiempo de procesado entre que se asigna la llamada de

la planta baja a un ascensor, este llega y carga y se vuelve a procesar una nueva llamada de planta

baja provoca que haya ascensores que se encuentren ociosos. Ya que cuando les llega el turno hay

otro que acaba de quedar libre o está a punto de hacerlo.

Los algoritmos diseñados en este trabajo aunque no trabajen de esta forma producen unos resultados

buenos. Debido a que permiten cargar las dos cabinas antes de empezar el ascenso, de forma que se

llena la cabina superior y luego la cabina inferior también realiza una parada en la planta principal

permitiendo que se suban más pasajeros. Esta forma de trabajo reduce en gran medida los tiempos de

espera ya que aunque haya muchas personas esperando los cuatro ascensores actuarán casi como si

fueran ocho en cuestión de capacidad. Mejorando mucho los resultados generales aún a costa de

aumentar los tiempos de tránsito.

76

7.5 Edificio 2

En este apartado se muestran los resultados obtenidos de las simulaciones en el edificio 2.

7.5.1 INTERFLOOR

En las tablas 15, 16, 17 y 18 se muestran los intervalos de confianza que se obtienen al someter los

tres algoritmos a las distintas simulaciones, con los tráficos Interfloor, usando las fórmulas

anteriormente descritas.

Interfloor 15% POP

AWT

Límite inferior Media Límite Superior

Conv. 122.8 129.7 136.7

NC 1 115 124.1 133.3

NC 2 73.5 81.8 90.1

ATT

Límite inferior Media Límite Superior

Conv. 92.6 94.9 97.1

NC 1 115.6 118 120.5

NC 2 100.2 103.9 107.7

AJT

Límite inferior Media Límite Superior

Conv. 216.7 224.6 232.5

NC 1 231.8 242.2 252.5

NC 2 176 185.7 195.5

Tabla 15: Intervalos de confianza con un tráfico Interfloor 15% POP, Edificio 2

77

La tabla 15 muestra los intervalos de confianza obtenidos para un tráfico Interfloor del 15% POP. En

los resultados obtenidos se ve como el algoritmo Nearest Call editado para los ascensores Double-

Deck consigue los menores tiempos de tanto de espera como de trayecto. Consiguiéndolo además

con una diferencia bastante amplia respecto a los otros dos. Esto confirma los resultados esperados y

ya observados en el otro edificio, ya que este método aprovecha la posibilidad de servir dos plantas

consecutivas disminuyendo en gran medida el número de paradas. Sin embargo el otro algoritmo

Nearest Call usado no funciona con la misma eficacia que este y empeora en todos los tiempos

debido a que produce un número de paradas demasiado elevado ante una situación de tráfico más

intenso.

Interfloor 11% POP

AWT

Límite inferior Media Límite Superior

Conv. 88.5 94.4 100.4

NC 1 68.3 74.7 81

NC 2 53.4 59 64.6

ATT

Límite inferior Media Límite Superior

Conv. 77.9 80 82

NC 1 96.2 100 103.8

NC 2 85 86.8 88.5

AJT

Límite inferior Media Límite Superior

Conv. 167.4 174.4 181.4

NC 1 168.1 174.7 181.2

NC 2 140.2 145.7 151.2

Tabla 16: Intervalos de confianza con un tráfico Interfloor 11% POP, Edificio 2

78

En la tabla 16 se puede observar ya como ante un tráfico menos intenso el algoritmo Nearest Call

más simple mejora los tiempos de espera del algoritmo convencional y con tiempos de trayecto muy

similares. Aunque sigue teniendo unos tiempos de tránsito muy elevados debido al alto número de

paradas que realiza, número de paradas que se ha incrementado al incrementar la altura del edificio.

El algoritmo editado para Double-Deck sin embargo sigue demostrando de forma holgada ser el más

efectivo para el tráfico Interfloor, con los menores tiempos de trayecto y de espera por un gran

margen.

Interfloor 8% POP

AWT

Límite inferior Media Límite Superior

Conv. 76.6 82.5 88.5

NC 1 47.3 50.4 53.5

NC 2 39.3 41.9 44.5

ATT

Límite inferior Media Límite Superior

Conv. 62.3 64.7 67.2

NC 1 76.9 79.7 82.6

NC 2 63.7 65.5 67.3

AJT

Límite inferior Media Límite Superior

Conv. 140 147.2 154.5

NC 1 125 130.1 135.3

NC 2 103.5 107.4 111.3

Tabla 17: Intervalos de confianza con un tráfico Interfloor 8% POP, Edificio 2

En la tabla 17 se aprecia al igual que se apreciaba en la tabla 9, correspondiente al edificio anterior.

Como ante un tráfico Interfloor bastante más ligero ya el algoritmo convencional es el que peor

responde por una diferencia considerable. Ya que aunque su tiempo de tránsito sea mucho menor que

para el Nearest Call básico empeora sus tiempos de espera y de trayecto, siendo además estos más

importantes a la hora de evaluar un algoritmo. Por el otro lado el Nearest Call editado para Double-

79

Deck se reivindica en su puesto consiguiendo los menores tiempos tanto de espera como de trayecto.

Demostrando ser muy fiable con este tipo de tráfico, tal y como se había supuesto.

Interfloor 5% POP

AWT

Límite inferior Media Límite Superior

Conv. 60.8 63.3 65.7

NC 1 28.8 31.5 34.3

NC 2 27 31.1 35.1

ATT

Límite inferior Media Límite Superior

Conv. 43.2 45 46.8

NC 1 47.1 51.5 55.9

NC 2 42.7 44.8 46.9

AJT

Límite inferior Media Límite Superior

Conv. 104.5 108.2 112

NC 1 77.3 83 88.8

NC 2 70.7 75.8 81

Tabla 18: Intervalos de confianza con un tráfico Interfloor 5% POP, Edificio 2

La tabla 18 ya muestra unos resultados mucho más parejos entre los dos algoritmos Nearest Call.

Porque aunque sigue demostrando ser mejor el algoritmo diseñado para Double-Deck, al reducir

tanto el tráfico se da menos el caso de llamadas de pisos consecutivos que es la principal ventaja que

tiene el editado sobre el más simple. Aunque esto sigue siendo un factor sobre todo a la hora de

reducir los tiempos de tránsito, también se mejoran en menor medida los tiempos de espera,

produciendo que consecuentemente los tiempos de trayecto disminuyan. Por otro lado ante este

tráfico el algoritmo convencional se ve muy limitado con tiempos bastante peores.

80

En las figuras 38, 39, 40 y 41 se muestran los tiempos de espera conseguidos por cada algoritmo en

el segundo edificio para que se pueda valorar de forma gráfica como varían estos. Se ha marcado de

azul los tiempos inferiores al intervalo de confianza y de rojo el intervalo.

AWT INTERFLOOR 15% POP

Figura 38: Gráfica de tiempos de espera ante tráfico Interfloor 15% POP, edificio 2

AWT INTERFLOOR 11% POP

Figura 39: Gráfica de tiempos de espera ante tráfico Interfloor 11% POP, edificio 2

AWT INTERFLOOR 8% POP

0

20

40

60

80

100

120

140

160

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

10

20

30

40

50

60

70

80

90

100

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

81

Figura 40: Gráfica de tiempos de espera ante tráfico Interfloor 8% POP, edificio 2

AWT INTERFLOOR 5% POP

Figura 41: Gráfica de tiempos de espera ante tráfico Interfloor 5% POP, edificio 2

En estas gráficas se observa claramente como también en este nuevo edificio el algoritmo diseñado

reduce de forma considerable los tiempos de espera respecto al algoritmo convencional y al Nearest

Call básico. Aunque al igual que ya le ocurrió en el primer edificio frente a tráficos más ligeros el

algoritmo Nearest Call se aproxima mucho y ofrece una menor cota superior del intervalo de

confianza.

De igual forma en las figuras 42, 43, 44 y 45 se muestran los tiempos de trayecto conseguidos por

cada algoritmo para que se pueda valorar de forma gráfica como varían estos. Se ha marcado de azul

los tiempos inferiores al intervalo de confianza y de verde el intervalo de confianza.

AJT INTERFLOOR 15% POP

Figura 42: Gráfica de tiempos de trayecto ante tráfico Interfloor 15% POP, edificio 2

0

10

20

30

40

50

60

70

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

50

100

150

200

250

300

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

82

AJT INTERFLOOR 11% POP

Figura 43: Gráfica de tiempos de trayecto ante tráfico Interfloor 11% POP, edificio 2

AJT INTERFLOOR 8% POP

Figura 44: Gráfica de tiempos de trayecto ante tráfico Interfloor 8% POP, edificio 2

AJT INTERFLOOR 5% POP

Figura 45: Gráfica de tiempos de trayecto ante tráfico Interfloor 5% POP, edificio 2

0

50

100

150

200

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

140

160

180

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

0

20

40

60

80

100

120

Conv. NC 1 NC 2

Límite Superior

Límite Inferior

83

En las gráficas anteriores se puede observar como los tiempos de trayecto son reducidos en gran

medida con la implementación del algoritmo del trabajo. Aunque el algoritmo Nearest Call básico

consigue aproximar sus tiempos de trayecto a los del trabajo ante tráficos ligeros, pero

manteniéndose por encima.

Con estos datos se puede llegar a la conclusión de que el algoritmo que se ha diseñado en este trabajo

para mejorar la calidad del servicio con ascensores Double-Deck consigue cumplir sus

especificaciones. Mejorando de manera considerable los tiempos tanto de espera como de trayecto

ante los tráficos del tipo Interfloor que eran en los que se centraba este. Estas diferencias se han

podido apreciar comparándolo con otros algoritmos de despacho y sometiéndolo a distintos tipos de

tráfico.

84

7.5.2 BARNEY DOWNPEAK

En las tablas 19, 20 y 21 se pueden observar los intervalos de confianza que se obtienen al someter

los tres algoritmos a las distintas simulaciones, con los tráficos Barney DownPeak y sus distintas

intensidades, usando las fórmulas anteriormente descritas.

Barney DownPeak 15% POP

AWT

Límite inferior Media Límite Superior

Conv. 123.2 131.8 140.3

NC 1 289.1 317 344.8

NC 2 166.6 183 199.4

ATT

Límite inferior Media Límite Superior

Conv. 78.1 79.7 81.3

NC 1 126.5 130.1 133.7

NC 2 63.3 64.6 65.8

AJT

Límite inferior Media Límite Superior

Conv. 202.2 211.5 220.7

NC 1 419.6 447 474.5

NC 2 231.5 247.6 263.6

Tabla 19: Intervalos de confianza con un tráfico Barney DownPeak 15% POP, Edificio 2

En la tabla 19, se observa como el algoritmo convencional es el que mejor responde a este tipo de

tráfico. Ya que los otros dos algoritmos producen unos tiempos de espera muchísimo más altos al no

seguir el método de recogida recomendable para periodos DownPeak, siendo especialmente

llamativas las diferencias del algoritmo Nearest Call básico.

85

Barney DownPeak 12% POP

AWT

Límite inferior Media Límite Superior

Conv. 88.7 96.8 104.9

NC 1 205.8 233.2 260.5

NC 2 141.7 157.3 173

ATT

Límite inferior Media Límite Superior

Conv. 75.2 76.4 77.6

NC 1 123 128.7 134.3

NC 2 58.9 60.5 62.1

AJT

Límite inferior Media Límite Superior

Conv. 164.6 173.1 181.7

NC 1 331.3 361.8 392.3

NC 2 202.5 217.8 233.1

Tabla 20: Intervalos de confianza con un tráfico Barney DownPeak 12% POP, Edificio 2

En esta tabla se observa como aunque han disminuido los tiempos de cada algoritmo. Ya que

también se ha visto reducida la intensidad del tráfico, la relación entre ellos sigue siendo igual.

Demostrando la poca eficacia de los dos algoritmos diseñados ante tráficos del tipo DownPeak,

aunque esto se podría solucionar cambiando el método de despacho cuando se detecten patrones de

tráfico de este tipo.

86

Barney DownPeak 8% POP

AWT

Límite inferior Media Límite Superior

Conv. 65.4 68.7 72.1

NC 1 107.2 126.3 145.3

NC 2 100.4 111.5 122.6

ATT

Límite inferior Media Límite Superior

Conv. 65.8 68 70.1

NC 1 114.7 121.1 127.4

NC 2 53.6 55.2 56.8

AJT

Límite inferior Media Límite Superior

Conv. 131.5 136.7 141.9

NC 1 223.4 247.3 271.3

NC 2 155.4 166.6 177.9

Tabla 21: Intervalos de confianza con un tráfico Barney DownPeak 8% POP, Edificio 2

En la tabla número 21 se observa como el algoritmo convencional continúa demostrando ser el más

recomendable para este tipo de tráfico con el menor tiempo de trayecto y el menor tiempo de espera.

Por otro lado el algoritmo Nearest Call sigue presentando unos tiempos de tránsito muy elevados

que provocan que tenga una calidad de respuesta muy baja. Pero como se ha comentado

anteriormente estos algoritmos no están preparados para este tipo de tráfico.

87

En estas tablas se observa como ninguno de los algoritmos consigue buenos tiempos de espera ante

un tráfico DownPeak, siendo especialmente mala la respuesta del algoritmo Nearest Call y aunque

en menor medida también la del Nearest Call diseñado para el trabajo.

Concluyéndose en base a los datos anteriores que el algoritmo convencional es el que mejor

responde ante tráficos del tipo DownPeak. Sin embargo esto se podría mejorar con sistemas de

despacho que infieran o prevean a través de la experiencia cuando se va a producir un periodo de este

tipo. Esto puede ser sabiendo a la hora a la que se van los empleados, en ese caso hay un

procedimiento sencillo pero que mejora los tiempos de forma considerable. Este consiste en enviar

los ascensores lo más arriba posible, teniendo en cuenta las llamadas ya asignadas a otros ascensores,

de forma que conforme vayan descendiendo vayan recogiendo pasajeros y llevándolos a la planta

baja. Una vez hecho esto y considerando que se trabaja con ascensores del tipo Double-Deck se

podría premiar como en el algoritmo diseñado en este trabajo, el servir a plantas consecutivas. Lo

que ha probado reducir los tiempos tanto de tránsito como de espera.

88

7.5.3 BARNEY UPPEAK

En la tabla 22, se muestran los intervalos de confianza que se obtienen al someter los tres algoritmos

a las distintas simulaciones, ante un tráfico del tipo Barney UpPeak y una intensidad del 7% POP,

usando las fórmulas anteriormente descritas.

Barney UpPeak 7% POP

AWT

Límite inferior Media Límite Superior

Conv. 628.7 758 887.2

NC 1 130.4 159.2 188

NC 2 149.9 177.3 204.8

ATT

Límite inferior Media Límite Superior

Conv. 90.4 91.3 92.2

NC 1 94.9 97.6 100.3

NC 2 107.2 109.6 111.9

AJT

Límite inferior Media Límite Superior

Conv. 719.7 849.3 978.8

NC 1 227.1 256.8 286.6

NC 2 259.7 286.9 314.1

Tabla 22: Intervalos de confianza con un tráfico Barney UpPeak 7% POP, Edificio 2

En la tabla 22 se observa como los algoritmos Nearest Call de este trabajo responden de forma

parecida a un tipo de tráfico UpPeak. Siendo un poco mejores los tiempos del primero de ellos

respecto a los del segundo en todas las categorías. Siendo los de ambos mucho mejores respecto a los

del algoritmo convencional. Este no responde bien a este tipo de tráfico, lo que provoca unos tiempos

de espera altísimos y en consecuencia unos tiempos de trayecto también muy elevados.

89

Usando estos datos se puede extraer la conclusión de que el algoritmo convencional es el que peor

responde ante tráficos del tipo UpPeak. Sin embargo esto se podría mejorar con sistemas de

despacho que infieran o prevean a través de la experiencia cuando se va a producir un periodo

UpPeak. Esto puede ser sabiendo a la hora a la que entran los empleados, los sistemas de control

cuando detectan tasas de tráfico nítidamente UpPeak ponen en marcha un procedimiento sencillo

que mejora profundamente los resultados ofrecidos en este apartado. Dicho procedimiento consiste

en que cuando un ascensor atiende todas sus llamadas de cabina vuelva automáticamente a la planta

baja para seguir cargando pasajeros que se encuentran a la espera. Esta forma de actuar mejora

enormemente los resultados ofrecidos. Esto se debe a que los métodos de despacho en su modo de

funcionamiento normal, bajo condiciones UpPeak solo registran una llamada de planta en la planta

baja aunque haya decenas de personas esperando ascensores. Esto provoca que esta única llamada

sea asociada a una única cabina, y cuando esta cabina atiende la llamada y carga pasajeros hasta

completar su capacidad es cuando de nuevo se registra una nueva llamada. Esta será la que hará que

otro ascensor venga para transportar nuevos pasajeros. El alto tiempo de procesado entre que se

asigna la llamada de la planta baja a un ascensor, este llega y carga y se vuelve a procesar una nueva

llamada de planta baja provoca que haya ascensores que se encuentren ociosos. Ya que cuando les

llega el turno hay otro que acaba de quedar libre o está a punto de hacerlo.

Los algoritmos Nearest Call empleados en este trabajo, en este edificio han visto como empeoraban

mucho sus tiempos aún siendo mejores que los del algoritmo convencional, respecto al otro edificio.

Ya que en este al aumentar su altura aumenta la distancia que tienen que recorrer y no se aprovechan

todos los ascensores. Debido esto al problema típico de este periodo descrito anteriormente. Ya que

el número elevado de ascensores no garantiza un mejor servicio en este caso, porque provoca

simplemente que haya más ascensores ociosos. Por lo que es aconsejable utilizar algoritmos de

despachos pensados para este tipo de tráfico.

90

8. Conclusión

Este trabajo se llevo a cabo con el objeto de profundizar en el despacho de llamadas, una de las

funcionalidades clásicas de los sistemas de control de transporte vertical. Este consta de cuatro fases

principales que son: introducción del tema, información y documentación, propuesta de una solución

al problema y las conclusiones a las que se llega

Este trabajo comienza introduciendo el tema sobre el que trata el proyecto. Formando una idea

general desde la que se parte para su posterior desarrollo

Tras esta introducción comienza la fase de información y documentación. Esta fase comienza con un

periodo de información del funcionamiento de los sistemas de ascensores. Seguido de otro periodo

de información de los aspectos asociados a los sistemas de transporte vertical mediante ascensores.

Una vez se concluye este periodo el trabajo comienza a enfocar su objetivo, siendo este los sistemas

para la asignación de llamadas. Para esto se estudian los distintos sistemas de control y las soluciones

que han surgido al problema de la asignación de llamadas durante los últimos años.

En esta primera fase se concluyó que los controladores modernos actúan mejor que los clásicos.

Apreciándose una tendencia a la innovación en el desarrollo de los nuevos modelos en busca de una

solución que optimice la calidad de la respuesta. Observándose cómo estos no solo mejoran la

calidad del servicio prestado a los usuarios, sino que además también buscan mejorar el servicio al

propietario reduciendo el consume energético. Aunque todavía desde un punto de vista económico,

en ocasiones la relación entre las ventajas de su aplicación y su coste de implementación es menor

que la de los controladores clásicos. Por lo que a pesar de lo desfasado de su diseño no han perdido

toda la vigencia. Ya que en la práctica la simplicidad en el diseño de los controladores clásicos

provoca que tengan estos unos costes menores tanto de fabricación como luego de instalación.

Por otro lado es esta fase se observo las ventajas que ofrecen los ascensores del tipo Double-Deck a

la hora de diseñar la instalación del sistema de ascensores. Ya que aunque sea un tipo de ascensores

que no están siendo muy utilizados ofrecen grandes ventajas a la hora de servir en grandes edificios y

rascacielos. Especialmente debido a la oportunidad de aumentar la capacidad de servicio sin requerir

para ello un espacio adicional. Algo que a la hora de diseñar y construir grandes edificios es muy

importante, siendo como es actualmente, el espacio utilizado una variable clave para ello. De esta

forma el uso de ascensores de este tipo permite disminuir el espacio utilizado por los ascensores en el

edificio. Pudiendo este ser aprovechado para otros fines sin empeorar la calidad del servicio

proporcionado a los pasajeros. Aparte de la posibilidad de servir simultáneamente a plantas

91

adyacentes disminuyendo con ello los tiempos de servicio.

Tras esta fase se decidió desarrollar un algoritmo diseñado especialmente para este tipo de

ascensores, con el objetivo de mejorar la calidad de servicio respecto a otros algoritmos clásicos.

Pero teniendo siempre en cuenta que este fuera a su vez de fácil implementación y no muy complejo,

intentando combinar eficiencia y simplicidad, para facilitar su uso y reducir sus costes. De forma que

no tenga el problema de ser muy costoso, como les ocurre a muchos controladores modernos, para

poder prestar un servicio de calidad y que se pueda implementar fácilmente.

El algoritmo que se ha diseñado en este trabajo se ha pensado para situaciones de tráfico del tipo

Interfloor. Ya que para los tráficos DownPeak y UpPeak ya existen algoritmos que demuestran ser

bastante eficaces y simples. Sin embargo se ha observado que es el tipo de tráfico que más tiempo

dura y sin embargo el menos estudiado, a pesar de ser un tráfico de complejidad elevada.

Para comprobar la eficacia de este algoritmo diseñado se ha elaborado el código en C++ necesario

para su implementación y se han llevado a cabo distintas simulaciones con el software Elevate

desarrollado por Peters Research Ltd. para probar su validez.

Para poder afirmar que los datos obtenidos son válidos y que se puedan extraer conclusiones

generales de las simulaciones han debido efectuarse un número de ellas elevado. En estas

simulaciones llevadas a cabo el algoritmo diseñado ha demostrado ser muy eficaz ante tipos de

tráfico Interfloor. Alcanzando de esta forma las expectativas generadas y pudiendo afirmarse que

cumple sus especificaciones. Ya que aunque no funcione de forma eficaz ante tráficos del tipo

UpPeak y DownPeak para estos ya hay algoritmos que responden de forma eficaz siendo simples.

92

9. Bibliografía

Iglesias G. (2013), Diseño y simulación de un algoritmo basado en lógica difusa para el

despacho de ascensores en un edificio, proyecto fin de carrera.

Lauener J. (2007), Traffic Performance of Elevators with Destination Control,

www.elevator-world.com, septiembre 2007, pp. 86-94.

Jairo J. y Rosso A.(2008): Sistema de control inteligente para un grupo de elevadores,

Ciencia e Ingeniería Neogranadina, Vol. 18-2, pp. 117-130.

Barney, G (2003), Elevator Traffic Handbook: Theory and Practice, Spon Press, pp.388-390

Aparicio P., Cortés P. y Fernández J. (2011), Optimización del despacho de llamadas

mediante la inclusión de la consideración del tiempo de espera relativo, XV Congreso de

Ingeniería de Organización, Cartagena, 7-9 Septiembre 2011 pp. 899-906

Cortés P., Guadix J., Larrañeta J., Muñuzuri J. y Onieva L. (2003), Algoritmos para la

Asignación de Llamadas en Sistemas de Tráfico Vertical Selectivo en Bajada, V Congreso de

Ingeniería de Organización, Valladolid, 4-5 Septiembre 2003.

http://www.schindler.com/za/internet/en/mobility-solutions/products/destination-

technology/destination-control-technology.html

http://www.emporis.com/statistics/worlds-tallest-buildings

93

10. Anexo A, resultados intermedios

En esta sección de mostrarán todos los resultados obtenidos de las simulaciones con

los que se han obtenido los intervalos de confianza. Cada resultado muestra los

tiempos que se obtienen para cada algoritmo en cada simulación, distinguiéndose

estas por edificio, número de semilla y tipo de tráfico.

Edificio 1

Semilla 1

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

115.3 86.6 201.9

Nearest Call

ajuste en peso

125.3 97 222.3

Nearest Call

Editado Double-Deck

116,9 86,4 203,3

94

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

110,5 70,8 181,3

Nearest Call

ajuste en peso

87,5 91,2 178,7

Nearest Call

Editado Double-Deck

69,6 76,4 146

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

99,1 61,8 160,8

Nearest Call

ajuste en peso

60,9 69,5 130,4

Nearest Call

Editado Double-Deck

54,5 56,3 110,8

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

64,3 43,1 107,4

Nearest Call

ajuste en peso

45,2 46,7 91,9

Nearest Call

Editado Double-Deck

34,9 40,1 75

95

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

190,1 81,3 271,4

Nearest Call

ajuste en peso

264,5 113,6 378,1

Nearest Call

Editado Double-Deck

292,4 53,4 345,8

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

104,3 71,5 175,9

Nearest Call

ajuste en peso

225,9 112,6 338,6

Nearest Call

Editado Double-Deck

282,4 51,2 333,6

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

73,5 66,9 140,4

Nearest Call

ajuste en peso

76,5 98,2 174,7

Nearest Call

Editado Double-Deck

187,5 48,1 235,6

96

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

348,4 79,8 428,2

Nearest Call

ajuste en peso

26,2 87,3 113,5

Nearest Call

Editado Double-Deck

54,9 86,9 141,7

Semilla 11

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

138.9 83.7 222.6

Nearest Call

ajuste en peso

125.5

94.3 219.9

Nearest Call

Editado Double-Deck

91,8 85,3 177,1

97

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

105,6 76,1 181,6

Nearest Call

ajuste en peso

67,4 86,6 154

Nearest Call

Editado Double-Deck

77,6 71,7 149,3

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

76,9 63,2 140

Nearest Call

ajuste en peso

65,5 72,4 137,9

Nearest Call

Editado Double-Deck

51,7 56,2 107,9

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

66,2 41,3 107,5

Nearest Call

ajuste en peso

38,2 45,3 83,5

Nearest Call

Editado Double-Deck

41,2 38,4 79,6

98

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

190,7 74,6 265,3

Nearest Call

ajuste en peso

284,5 117,8 402,3

Nearest Call

Editado Double-Deck

301,8 50,1 351,9

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

134,6 78,2 212,8

Nearest Call

ajuste en peso

216,4 113 329,4

Nearest Call

Editado Double-Deck

249 50,7 299,6

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

58,6 63,5 122,1

Nearest Call

ajuste en peso

57,2 80,5 137,7

Nearest Call

Editado Double-Deck

164 44.9 208.9

99

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

445,3 78,3 523,6

Nearest Call

ajuste en peso

16,8 92,9 109,7

Nearest Call

Editado Double-Deck

29 92,7 121,6

Semilla 87

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

148.9 83.7 232.6

Nearest Call

ajuste en peso

129.2 96 225.2

Nearest Call

Editado Double-Deck

112,9 87,8 200,7

100

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

96,5 69 165,5

Nearest Call

ajuste en peso

83,7 82,1 165,8

Nearest Call

Editado Double-Deck

91,6 74,4 166

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

90,6 54,4 145,1

Nearest Call

ajuste en peso

64 72,9 136,9

Nearest Call

Editado Double-Deck

52,7 63,6 116,3

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

61,8 42,9 104,7

Nearest Call

ajuste en peso

38,7 44 82,8

Nearest Call

Editado Double-Deck

40,9 39 80

101

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

186,6 77,9 264,5

Nearest Call

ajuste en peso

314,9 119,1 434

Nearest Call

Editado Double-Deck

306,6 51,1 357,7

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

145,3 75,3 220,7

Nearest Call

ajuste en peso

179,1 119,9 299

Nearest Call

Editado Double-Deck

246,2 49,3 295,5

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

63,2 65,3 128,5

Nearest Call

ajuste en peso

80,9 90,1 171

Nearest Call

Editado Double-Deck

242,6 44,4 286,9

102

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

688,1 82,9 771

Nearest Call

ajuste en peso

42,7 89,2 131,9

Nearest Call

Editado Double-Deck

37 91,6 128,6

Semilla 165

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

131.7 82.3 213.9

Nearest Call

ajuste en peso

156.1 101 257.1

Nearest Call

Editado Double-Deck

147,6 89,1 236,7

103

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

112,1 74,4 186,5

Nearest Call

ajuste en peso

105,6 88,3 193,9

Nearest Call

Editado Double-Deck

85,6 73,4 159

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

81,3 59,2 140,5

Nearest Call

ajuste en peso

58,7 74,4 133,1

Nearest Call

Editado Double-Deck

61,3 60,5 121,8

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

64 45,7 109,7

Nearest Call

ajuste en peso

42,3 47,5 89,8

Nearest Call

Editado Double-Deck

47,2 39,9 87,1

104

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

156,7 80,1 236,9

Nearest Call

ajuste en peso

341,6 122,1 463,7

Nearest Call

Editado Double-Deck

262,9 54,1 317

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

145,3 79,3 224,6

Nearest Call

ajuste en peso

232,6 115,6 348,1

Nearest Call

Editado Double-Deck

268,7 50 318,7

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

69 62,3 131,3

Nearest Call

ajuste en peso

63,3 85,5 148,9

Nearest Call

Editado Double-Deck

158,4 45,2 203,7

105

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

409,4 78,4 487,8

Nearest Call

ajuste en peso

22 97,6 119,6

Nearest Call

Editado Double-Deck

17,2 100 117,2

Semilla 258

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

133.3 86.2 219.5

Nearest Call

ajuste en peso

180.6 96.4 277

Nearest Call

Editado Double-Deck

110,5 91 201,6

106

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

99,2 69,1 168,3

Nearest Call

ajuste en peso

74,8 84,4 159,2

Nearest Call

Editado Double-Deck

65,8 69 134,7

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

85 69,7 154,7

Nearest Call

ajuste en peso

71,6 67,5 139,1

Nearest Call

Editado Double-Deck

67,5 60,7 128,3

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

72,2 50,3 122,5

Nearest Call

ajuste en peso

46,6 51,1 97,7

Nearest Call

Editado Double-Deck

45,5 45 90,4

107

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

217,2 82,2 299,4

Nearest Call

ajuste en peso

370,2 127,1 497,3

Nearest Call

Editado Double-Deck

302,7 52,9 355,5

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

89 70,4 159,4

Nearest Call

ajuste en peso

157,4 100,9 258,3

Nearest Call

Editado Double-Deck

267,4 51,4 318,8

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

88,3 69,2 157,6

Nearest Call

ajuste en peso

65 77,4 142,4

Nearest Call

Editado Double-Deck

171,6 50,2 221,8

108

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

739,5 79,9 819,5

Nearest Call

ajuste en peso

24,9 84,2 109,1

Nearest Call

Editado Double-Deck

63,3 96,9 160,2

Semilla 333

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

129.1 82.9 212

Nearest Call

ajuste en peso

143.5 90.8 234.4

Nearest Call

Editado Double-Deck

102,4 82,6 185

109

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

112,2 68,1 180,4

Nearest Call

ajuste en peso

90,2 87,2 177,4

Nearest Call

Editado Double-Deck

71,4 70,7 142,1

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

90,2 57,4 147,6

Nearest Call

ajuste en peso

61,3 71,2 132,4

Nearest Call

Editado Double-Deck

59,7 55,3 115

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

71 44,4 115,4

Nearest Call

ajuste en peso

42,6 43,7 86,3

Nearest Call

Editado Double-Deck

55,5 37,5 93

110

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

170,2 75,4 245,6

Nearest Call

ajuste en peso

298,7 122,5 421,3

Nearest Call

Editado Double-Deck

398,3 52,3 450,7

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

122,2 73,5 195,7

Nearest Call

ajuste en peso

200 106,1 306,1

Nearest Call

Editado Double-Deck

170,5 53,9 224,4

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

111,9 70,1 181,9

Nearest Call

ajuste en peso

43 71,4 114,4

Nearest Call

Editado Double-Deck

188,4 45,9 234,3

111

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

430,9 78,9 509,8

Nearest Call

ajuste en peso

14,8 94,7 109,5

Nearest Call

Editado Double-Deck

27,2 95 122,2

Semilla 369

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

156.5 81.5 238.1

Nearest Call

ajuste en peso

140.4 95.7 236.1

Nearest Call

Editado Double-Deck

76 84,3 160,3

112

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

105,8 72,8 178,6

Nearest Call

ajuste en peso

93,5 93,5 187

Nearest Call

Editado Double-Deck

86,3 75 161,3

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

89,5 63,1 152,6

Nearest Call

ajuste en peso

59,2 67,7 127

Nearest Call

Editado Double-Deck

52,4 60,6 113

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

62,6 44,8 107,4

Nearest Call

ajuste en peso

47,5 46,4 94

Nearest Call

Editado Double-Deck

32,7 39,6 72,3

113

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

185 77,5 262,5

Nearest Call

ajuste en peso

399,7 121,5 521,2

Nearest Call

Editado Double-Deck

360,5 51,6 412

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

128 76,9 204,9

Nearest Call

ajuste en peso

147,4 104,7 252,1

Nearest Call

Editado Double-Deck

213,3 51,7 265

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

72,6 66 138,6

Nearest Call

ajuste en peso

82 94,6 176,6

Nearest Call

Editado Double-Deck

158,1 48,7 206,8

114

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

539,6 82,4 622,1

Nearest Call

ajuste en peso

45,2 90,9 136,1

Nearest Call

Editado Double-Deck

16,7 96,8 113,4

Semilla 456

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

125.2 89 214.3

Nearest Call

ajuste en peso

179.2 97.4 276.6

Nearest Call

Editado Double-Deck

104,9 88 192,9

115

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

106,9 78,7 185,6

Nearest Call

ajuste en peso

87,3 84,4 171,7

Nearest Call

Editado Double-Deck

66,1 71,8 137,9

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

89,8 58,4 148,2

Nearest Call

ajuste en peso

55,8 73,3 129

Nearest Call

Editado Double-Deck

56,5 59,6 116,1

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

71,8 41,5 113,3

Nearest Call

ajuste en peso

36,3 48,6 84,9

Nearest Call

Editado Double-Deck

31,5 40,4 71,9

116

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

191,3 78,2 269,5

Nearest Call

ajuste en peso

381,5 125,3 506,8

Nearest Call

Editado Double-Deck

291,8 52 343,8

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

120,9 74,4 195,3

Nearest Call

ajuste en peso

246 109,1 355,1

Nearest Call

Editado Double-Deck

212,7 51,5 264,2

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

69,3 63,3 132,6

Nearest Call

ajuste en peso

61 78,8 139,8

Nearest Call

Editado Double-Deck

152,5 49,6 202,2

117

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

597,7 79,2 676,8

Nearest Call

ajuste en peso

50,9 89,8 140,8

Nearest Call

Editado Double-Deck

60,4 102,5 162,9

Semilla 741

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

128.3 86.5 214.7

Nearest Call

ajuste en peso

136.6 97.8 234.4

Nearest Call

Editado Double-Deck

87,4 87,3 174,7

118

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

100,5 73,8 174,3

Nearest Call

ajuste en peso

90,4 85,5 176

Nearest Call

Editado Double-Deck

91,7 75,5 167,2

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

102,5 62,7 165,2

Nearest Call

ajuste en peso

74,3 74,5 148,7

Nearest Call

Editado Double-Deck

60,4 56,3 116,7

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

58,5 45,8 104,3

Nearest Call

ajuste en peso

43 52,5 95,5

Nearest Call

Editado Double-Deck

43,7 43,7 87,4

119

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

193,2 78 271,2

Nearest Call

ajuste en peso

281,4 118,8 400,2

Nearest Call

Editado Double-Deck

266,4 55,7 322,1

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

135,8 78 213,8

Nearest Call

ajuste en peso

132,2 110,7 242,9

Nearest Call

Editado Double-Deck

199,4 53,5 252,9

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

60,4 60,3 120,8

Nearest Call

ajuste en peso

87,2 85,2 172,5

Nearest Call

Editado Double-Deck

144,8 51,8 196,6

120

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

557,6 80,1 637,7

Nearest Call

ajuste en peso

32,6 85,9 118,5

Nearest Call

Editado Double-Deck

53,5 92 145,5

Semilla 987

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

142.8 82.9 225.7

Nearest Call

ajuste en peso

123.2 94.9 218.1

Nearest Call

Editado Double-Deck

116,7 86,3 203

121

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

104,3 71,3 175,6

Nearest Call

ajuste en peso

83,2 83,7 166,9

Nearest Call

Editado Double-Deck

76,2 70,1 146,2

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

85,6 58,6 144,2

Nearest Call

ajuste en peso

88,8 71,7 160,5

Nearest Call

Editado Double-Deck

61,7 54,9 116,6

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

67,3 44,7 112

Nearest Call

ajuste en peso

37,6 46,7 84,3

Nearest Call

Editado Double-Deck

38,7 38,6 77,3

122

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

190,7 80,8 271,4

Nearest Call

ajuste en peso

303,8 115,4 419,2

Nearest Call

Editado Double-Deck

370,2 49,7 419,9

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

114,2 72 186,2

Nearest Call

ajuste en peso

176,8 104,1 280,9

Nearest Call

Editado Double-Deck

226,4 54,9 281,2

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

64,8 60,1 124,9

Nearest Call

ajuste en peso

70,9 90,1 160,9

Nearest Call

Editado Double-Deck

171,3 45,7 217

123

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

483,7 80,1 563,8

Nearest Call

ajuste en peso

14,2 98,2 112,4

Nearest Call

Editado Double-Deck

21,5 97,2 118,8

124

Edificio 2

Semilla 1

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

130,4 96,9 227,3

Nearest Call

ajuste en peso

146,5 118,5 265

Nearest Call

Editado Double-Deck

74,1 102,8 176,9

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

99,9 81,4 181,3

Nearest Call

ajuste en peso

68,4 107 175,4

Nearest Call

Editado Double-Deck

72,8 83,3 156

125

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

73,2 64,6 137,8

Nearest Call

ajuste en peso

50,6 77,4 128

Nearest Call

Editado Double-Deck

41,9 66,1 108

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

64 46,5 110,4

Nearest Call

ajuste en peso

31 48 79

Nearest Call

Editado Double-Deck

31 41,7 72,7

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

136,6 84,3 221

Nearest Call

ajuste en peso

326,8 140,2 467

Nearest Call

Editado Double-Deck

161,7 64,8 226,5

126

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

84,5 74,9 159,4

Nearest Call

ajuste en peso

223,5 112,7 336,2

Nearest Call

Editado Double-Deck

179,5 57,8 237,2

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

66,4 66,7 133,1

Nearest Call

ajuste en peso

112,1 112,6 224,7

Nearest Call

Editado Double-Deck

100,6 51,4 152

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

1088 91,7 1179,5

Nearest Call

ajuste en peso

211,2 98,1 309,4

Nearest Call

Editado Double-Deck

183 112,2 295,2

127

Semilla 11

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

131,4 97,2 228,6

Nearest Call

ajuste en peso

114,2 122 236,3

Nearest Call

Editado Double-Deck

83 107,4 190,4

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

110,1 81,7 191,8

Nearest Call

ajuste en peso

60,9 97,4 158,2

Nearest Call

Editado Double-Deck

55,6 84,8 140,4

128

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

73,3 62,2 135,5

Nearest Call

ajuste en peso

45,8 75,5 121,3

Nearest Call

Editado Double-Deck

38,6 62,9 101,5

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

61,6 44,6 106,1

Nearest Call

ajuste en peso

28,5 61,1 89,6

Nearest Call

Editado Double-Deck

38,9 43,8 82,6

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

120,6 78,9 199,5

Nearest Call

ajuste en peso

260,4 131,1 391,5

Nearest Call

Editado Double-Deck

174,6 65,6 240,2

129

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

113,5 79,4 192,9

Nearest Call

ajuste en peso

223,2 134,7 357,9

Nearest Call

Editado Double-Deck

143,2 57,8 201

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

68 66,3 134,3

Nearest Call

ajuste en peso

96,4 108,8 205,3

Nearest Call

Editado Double-Deck

93,2 59,5 152,6

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

819,4 91,7 911,1

Nearest Call

ajuste en peso

126,2 101,9 228,1

Nearest Call

Editado Double-Deck

168,7 110 278,8

130

Semilla 87

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

138,3 91,9 230,2

Nearest Call

ajuste en peso

128,4 122,5 250,9

Nearest Call

Editado Double-Deck

72,1 105,5 177,6

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

89,3 75,5 164,8

Nearest Call

ajuste en peso

71,3 94 165,3

Nearest Call

Editado Double-Deck

58,9 83,3 142,2

131

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

88,3 73,1 161,4

Nearest Call

ajuste en peso

46,7 78,3 125

Nearest Call

Editado Double-Deck

42,7 70,7 113,4

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

57 42,3 99,3

Nearest Call

ajuste en peso

24,4 42,7 67,1

Nearest Call

Editado Double-Deck

23 43,4 66,5

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

131,1 79,7 210,9

Nearest Call

ajuste en peso

336,4 122,7 459,1

Nearest Call

Editado Double-Deck

193,6 65 258,6

132

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

85,8 74,9 160,7

Nearest Call

ajuste en peso

267,8 134,5 402,3

Nearest Call

Editado Double-Deck

167,4 60 227,4

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

73,7 66,7 140,3

Nearest Call

ajuste en peso

116,3 131,9 248,2

Nearest Call

Editado Double-Deck

146,7 57,2 203,9

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

664,9 92,9 757,9

Nearest Call

ajuste en peso

171 93,2 264,2

Nearest Call

Editado Double-Deck

139,3 114,8 254,1

133

Semilla 165

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

148,8 99,1 247,9

Nearest Call

ajuste en peso

133,3 119 252,4

Nearest Call

Editado Double-Deck

86,7 105 191,6

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

85,3 81,7 167

Nearest Call

ajuste en peso

77,8 98,4 176,2

Nearest Call

Editado Double-Deck

57,5 90,8 148,3

134

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

88,3 64,2 152,5

Nearest Call

ajuste en peso

56 75,9 131,9

Nearest Call

Editado Double-Deck

39,2 64,7 103,9

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

63,4 44,8 108,2

Nearest Call

ajuste en peso

29,8 46,5 76,4

Nearest Call

Editado Double-Deck

30,2 40,8 71

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

136,1 79,4 215,5

Nearest Call

ajuste en peso

278 134,8 412,7

Nearest Call

Editado Double-Deck

171,5 68,2 239,8

135

arney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

116,3 75,2 191,5

Nearest Call

ajuste en peso

261,6 134,2 395,8

Nearest Call

Editado Double-Deck

152,6 59,5 212,1

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

67,5 69,2 136,7

Nearest Call

ajuste en peso

128,4 122,1 250,5

Nearest Call

Editado Double-Deck

115,2 54 169,2

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

558,1 90,9 649

Nearest Call

ajuste en peso

121,8 93,9 215,7

Nearest Call

Editado Double-Deck

229,2 107,3 336,5

136

Semilla 258

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

132,8 94,8 227,6

Nearest Call

ajuste en peso

123,5 121,6 245,1

Nearest Call

Editado Double-Deck

68 107,3 175,3

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

97,6 83,4 181

Nearest Call

ajuste en peso

72 101,4 173,4

Nearest Call

Editado Double-Deck

44,3 86,7 130,9

137

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

93 61,5 154,5

Nearest Call

ajuste en peso

47,2 80,2 127,4

Nearest Call

Editado Double-Deck

45,1 64,6 109,7

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

68,3 45,3 113,6

Nearest Call

ajuste en peso

37,5 54,7 92,2

Nearest Call

Editado Double-Deck

39,8 49,7 89,5

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

108,2 80 188,2

Nearest Call

ajuste en peso

340,7 128,5 469,2

Nearest Call

Editado Double-Deck

221,5 63,9 285,3

138

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

88 76,5 164,4

Nearest Call

ajuste en peso

286,2 141,2 427,4

Nearest Call

Editado Double-Deck

151,3 63,6 214,9

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

72,5 73 145,5

Nearest Call

ajuste en peso

90,2 117,7 207,8

Nearest Call

Editado Double-Deck

99,1 56,9 156

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

490,7 90,4 581,1

Nearest Call

ajuste en peso

208,1 101,5 309,6

Nearest Call

Editado Double-Deck

220,9 112 332,9

139

Semilla 333

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

115,3 90,6 205,8

Nearest Call

ajuste en peso

117,2 115,6 232,8

Nearest Call

Editado Double-Deck

75,9 94,2 170,1

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

100,3 78,9 179,2

Nearest Call

ajuste en peso

75,8 100,4 176,2

Nearest Call

Editado Double-Deck

58,5 87,5 146

140

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

72,8 61,7 134,5

Nearest Call

ajuste en peso

45,5 77,6 123,1

Nearest Call

Editado Double-Deck

44,8 64,4 109,2

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

63,6 42,8 106,4

Nearest Call

ajuste en peso

37,2 49,4 86,6

Nearest Call

Editado Double-Deck

36,7 46,3 82,9

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

121,2 75,5 196,7

Nearest Call

ajuste en peso

340,5 131,8 472,2

Nearest Call

Editado Double-Deck

201,3 63,4 264,7

141

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

88,1 75,9 164

Nearest Call

ajuste en peso

272,3 123,1 395,4

Nearest Call

Editado Double-Deck

122 62,3 184,3

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

59,5 63,2 122,7

Nearest Call

ajuste en peso

133,9 116,9 250,8

Nearest Call

Editado Double-Deck

115,5 55,3 170,8

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

741,7 88,8 830,5

Nearest Call

ajuste en peso

120,4 101,2 221,7

Nearest Call

Editado Double-Deck

148,5 111,4 259,9

142

Semilla 369

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

133,7 89,5 223,3

Nearest Call

ajuste en peso

106,2 113,1 219,3

Nearest Call

Editado Double-Deck

97,1 97 194,1

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

91,6 79,9 171,6

Nearest Call

ajuste en peso

86 102,7 188,7

Nearest Call

Editado Double-Deck

56 89 145

143

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

87,2 66,3 153,4

Nearest Call

ajuste en peso

55,3 84,3 139,7

Nearest Call

Editado Double-Deck

42 66,8 108,9

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

67,7 45,7 113,3

Nearest Call

ajuste en peso

30,8 54,3 85,1

Nearest Call

Editado Double-Deck

26 45,5 71,5

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

143,7 80,8 224,4

Nearest Call

ajuste en peso

384,7 126,6 511,3

Nearest Call

Editado Double-Deck

202,3 61,8 264,1

144

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

104,9 74,6 179,5

Nearest Call

ajuste en peso

165,5 124,3 289,8

Nearest Call

Editado Double-Deck

143,8 58,7 202,5

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

76 72 148

Nearest Call

ajuste en peso

121 119,4 240,4

Nearest Call

Editado Double-Deck

109,6 55 164,6

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

758,3 90,9 849,1

Nearest Call

ajuste en peso

203,6 99,9 303,5

Nearest Call

Editado Double-Deck

188,2 105,8 294

145

Semilla 456

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

123,9 96,7 220,6

Nearest Call

ajuste en peso

129,1 114,8 243,8

Nearest Call

Editado Double-Deck

88 108,2 196,2

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

99 80 179

Nearest Call

ajuste en peso

64,9 107,9 172,8

Nearest Call

Editado Double-Deck

59 86,7 145,6

146

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

81,4 65,1 146,5

Nearest Call

ajuste en peso

54,6 81,3 135,8

Nearest Call

Editado Double-Deck

48,7 68,3 117,1

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

62,5 47,5 110

Nearest Call

ajuste en peso

32,8 56,4 89,2

Nearest Call

Editado Double-Deck

27,4 43,4 70,8

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

148,1 80,8 228,9

Nearest Call

ajuste en peso

326,4 128,8 455,2

Nearest Call

Editado Double-Deck

154,3 65,3 219,6

147

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

94,9 77 172

Nearest Call

ajuste en peso

199,8 126,8 326,6

Nearest Call

Editado Double-Deck

148,4 63,1 211,5

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

69,4 68,5 137,9

Nearest Call

ajuste en peso

132,7 115,3 248

Nearest Call

Editado Double-Deck

101,2 54,6 155,8

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

921,3 91,4 1012,7

Nearest Call

ajuste en peso

182,8 97,1 279,8

Nearest Call

Editado Double-Deck

156,9 111 267,9

148

Semilla 741

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

122,8 96,7 219,6

Nearest Call

ajuste en peso

134,9 119 253,8

Nearest Call

Editado Double-Deck

102,2 111 213,2

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

86,7 82,3 169

Nearest Call

ajuste en peso

81,6 90,6 172,2

Nearest Call

Editado Double-Deck

57,4 87,2 144,6

149

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

92,7 65,9 158,6

Nearest Call

ajuste en peso

47,6 78,6 126,3

Nearest Call

Editado Double-Deck

38,7 64,3 103

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

64,9 49,5 114,4

Nearest Call

ajuste en peso

31,3 57,8 89,1

Nearest Call

Editado Double-Deck

29,2 49,4 78,6

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

137,8 78,5 216,3

Nearest Call

ajuste en peso

265,9 125,2 391,1

Nearest Call

Editado Double-Deck

194,8 65,1 259,9

150

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

96,4 79 175,4

Nearest Call

ajuste en peso

227,9 128,2 356

Nearest Call

Editado Double-Deck

164 62,8 226,7

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

65 65,2 130,2

Nearest Call

ajuste en peso

147,9 129,5 277,4

Nearest Call

Editado Double-Deck

108,6 53,5 162,1

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

638,4 91,2 729,6

Nearest Call

ajuste en peso

111 91,1 202

Nearest Call

Editado Double-Deck

116,2 104,9 221,1

151

Semilla 987

Constant traffic Interfloor 15%

AWT ATT AJT

Algoritmo

Convencional

119,9 95,3 215,2

Nearest Call

ajuste en peso

108,1 114,2 222,3

Nearest Call

Editado Double-Deck

70,9 101 171,9

Constant traffic Interfloor 11%

AWT ATT AJT

Algoritmo

Convencional

84,6 74,7 159,3

Nearest Call

ajuste en peso

88,1 100,2 188,3

Nearest Call

Editado Double-Deck

69,8 88,5 158,3

152

Constant traffic Interfloor 8%

AWT ATT AJT

Algoritmo

Convencional

75 62,7 137,7

Nearest Call

ajuste en peso

54,5 88,3 142,8

Nearest Call

Editado Double-Deck

37,3 62,5 99,7

Constant traffic Interfloor 5%

AWT ATT AJT

Algoritmo

Convencional

59,5 41,2 100,6

Nearest Call

ajuste en peso

31,8 44,2 76

Nearest Call

Editado Double-Deck

28,5 43,8 72,3

Barney DownPeak 15%

AWT ATT AJT

Algoritmo

Convencional

134,3 79,1 213,4

Nearest Call

ajuste en peso

309,9 131,2 441,1

Nearest Call

Editado Double-Deck

154,4 62,4 216,8

153

Barney DownPeak 12%

AWT ATT AJT

Algoritmo

Convencional

95,2 76,3 171,6

Nearest Call

ajuste en peso

203,8 126,8 330,6

Nearest Call

Editado Double-Deck

201,1 59,6 260,7

Barney DownPeak 8%

AWT ATT AJT

Algoritmo

Convencional

69,3 69,1 138,4

Nearest Call

ajuste en peso

183,7 136,3 320

Nearest Call

Editado Double-Deck

125,2 54,2 179,4

Barney UpPeak 7%

AWT ATT AJT

Algoritmo

Convencional

899 93 992

Nearest Call

ajuste en peso

136 98,4 234,4

Nearest Call

Editado Double-Deck

222,5 106,4 328,9

154

11. Anexo B, Código C++

En este anexo se mostrarán los distintos códigos de los principales objetos que son utilizados por el

programa para el correcto funcionamiento de este y la obtención de los datos, en el programa de

simulación de transporte vertical ELEVATE.

Objeto ascensor (lift.h)

/*

-----------------------------------------------------------------------------

Filename lift.h

Copyright (c) Peters Research Ltd

SVN variables, Updated by SVN @ each commit Id, Revision surrounded by '$'

if the SVN file properties SVN:Keywords are set

Revision

This keyword describes the last known revision in which this file changed in

the repository

$Id: lift.h 1750 2012-09-19 14:13:11Z Jim.Nickerson $

$Revision: 1750 $

-----------------------------------------------------------------------------

*/

#ifndef _INC_LIFT //check flag to avoid re-definition of

class

#define _INC_LIFT

#include "stdafx.h"

#if _MSC_VER > 1000

#pragma once

#endif

#include "arraysize.h"

#include "building.h"

#include "DestinationCall.h"

#define MAX_DESTINATION_CALL_LIFT 1000

class lift

155

{

public:

enum _tag_LIFT_TYPE

{ SINGLE_DECK = 0, // IDSX_LIFT_TYPE_0

DOUBLE_DECK = 1, // IDSX_LIFT_TYPE_1

TWO_CARS_PER_SHAFT = 2, // IDSX_LIFT_TYPE_2

LAST_LIFT_TYPE // used to fill string arrays

from string table

};

enum _tag_CALL_CANCELLATION

{

ARRIVAL=0,

SLOWDOWN=1

};

enum _kW_STATES

{ // the energy consumed by the drive in

each of these load conditions

DRIVE_OFF,

DRIVE_ON,

DRIVE_UP_0,

DRIVE_UP_25,

DRIVE_UP_50,

DRIVE_UP_75,

DRIVE_UP_100,

DRIVE_DOWN_0,

DRIVE_DOWN_25,

DRIVE_DOWN_50,

DRIVE_DOWN_75,

DRIVE_DOWN_100,

DRIVE_LAST_STATE

};

double m_Acceleration; //rated lift acceleration (m/s/s)

[elive static data] XMLS_1_ACCELERATION_MSS

double m_AccelerationMultiply; //not currently used, but allows

dispatcher to change the rated acceleration for a single trip. Set to 1.0 by

default.

int m_ActualQuickestStopFloor; //actual (as opposed to ideal) quickest

stop floor. Not normally used in Elevate, but when class used in real

systems

double m_ActualStoppingDistance; //actual (as opposed to ideal)

stopping distance. Not normally used in Elevate, but when class used in real

systems

int m_AlgorithmType; //algorithm type CONVENTIONAL,

DESTINATION or MIXED using global Elevate definition

bool m_Available; //normally true, can be off due to

motor generator

double m_Capacity; //nominal lift capacity (kg)

[elive static data] XMLS_1_CAPACITY_KG

int m_CarCall[MAX_FLOORS]; //car calls registered (1

registered, 0 not) [elive dynamic data] XMLS_1_REGISTERED_CALLS

int m_CarCallCancellation; //defines when lift class cancels

car calls

//options ARRIVAL

(default) or SLOWDOWN

//m_CarCall is set when

value is 1. If SLOWDOWN option selected then value is changed to 2 on

slowdown

double m_CarCallDwellTime; //not used

double m_CarCallDwellTimePostPersonExit; //not used

156

int m_CarCallUpperCar[MAX_FLOORS]; //car calls registered (1

registered, 0 not) [elive dynamic data]

int m_CarService; //indicates current service state

car is in (i.e. AUTOMATIC, etc) [elive dynamic data] XMLS_1_CAR_SERVICE

double m_CounterweightProportion; //used in conjunction with

m_VelocityMultiply to model ThyssenKrupp VMAX.

double m_CurrentAcceleration; //current acceleration (m/s/s)

double m_CurrentArea; //current area taken in car by

passengers (m²)

double m_CurrentAreaUpperCar; //current area taken in upper car by

passengers (m²)

double m_CurrentDistance; //distance travelled on current trip

(m)

int m_CurrentFloorNo; //current floor number (where 1 is

lowest floor), NONE when travelling [elive dynamic data] XMLS_1_FLOOR

double m_CurrentJerk; //current jerk (m/s/s/s)

double m_CurrentLoad; //current car load (kg) [elive

dynamic data] XMLS_1_CURRENT_LOADKG

double m_CurrentLoadUpperCar; //current car load upper car (kg) [elive

dynamic data]

double m_CurrentPosition; //current position (m above

reference)

double m_CurrentTime; //current time (s past reference)

double m_CurrentVelocity; //current velocity (m/s)

bool m_DeleteDestinationCallAtDestination; //chooses if the lift class

deletes the call when the lift arrives at destination,

//or changes state to

PENDING_RESET and saves the time the car arrives

int DestinationByDispatcher; //Normally the lift class will decide what

call to serve next based on the

//car calls and

allocated landing calls

//set this variable to 1

for the lift to travel to m_RequestedDestination

int m_DestinationFloor; //current destination floor no

[elive dynamic data]

double m_DestinationPosition; //current destination (m above reference)

double m_DestinationTime; //arrival time next planned stop (s

past reference)

int m_Direction; //direction of travel (-1 down, 0

neither, 1 up) [elive dynamic data] XMLS_1_DIRECTION

int m_DoorBeams; //flag for operation of door beams

representing passenger

//transfer (1 beams

broken, 0 clear) [elive dynamic data]

int m_DoorBeamsRear; //flag for operation of door beams

rear doors representing passenger

//transfer (1 beams

broken, 0 clear) [elive dynamic data]

int m_DoorBeamsUpperCar; //flag for operation of door beams

upper car representing passenger

//transfer (1 beams

broken, 0 clear) [elive dynamic data]

int m_DoorBeamsRearUpperCar; //flag for operation of door beams upper

car rear doors representing passenger

//transfer (1 beams

broken, 0 clear) [elive dynamic data]

double m_DoorClose; //door closing time (s) [elive

static data] XMLS_1_DOOR_CLOSE

double m_DoorDwell1; //door dwell time 1 (s)

//corresponds to time

doors will wait until

//closing if beam not

broken

157

bool m_DoorDwell1Expired; //true if last time doors closed, no

one had entered/exited the lift

bool m_DoorDwell1ExpiredRear; //true if last time rear doors closed, no

one had entered/exited the lift

bool m_DoorDwell1ExpiredRearUpperCar; //true if last time upper car

rear doors closed, no one had entered/exited the lift

bool m_DoorDwell1ExpiredUpperCar; //true if last time upper car

doors closed, no one had entered/exited the lift

double m_DoorDwell2; //door dwell time 2 (s)

//corresponds to time

doors will wait until

//closing after beams

have been broken/cleared

int m_DoorDwellMode; //not used

bool m_DoorHoldOpen; //set to true to hold doors open,

overrides m_DoorDwell2

bool m_DoorHoldOpenRear; //set to true to hold rear doors

open, overrides m_DoorDwell2

double m_DoorOpen; //door open time (s) [elive

static data] XMLS_1_DOOR_OPEN

double m_DoorPreOpen; //door pre-opening (s) [elive static

data] XMLS_1_DOOR_PRE_OPEN

double m_DoorsStart; //time doors started

openning/closing (s past reference)

double m_DoorsStartRear; //time rear doors started

openning/closing (s past reference)

double m_DoorsStartRearUpperCar;//time rear doors upper car started

openning/closing (s past reference)

double m_DoorsStartUpperCar; //time doors upper car started

openning/closing (s past reference)

int m_DoorStatus; //Door Status (1 fully open, 2

closing,3 fully closed, 4 openning, 5 nudging) [elive dynamic data]

XMLS_1_DOOR_STATUS

int m_DoorStatusCombined; //used by dispatcher to determine

one value combining front and rear door status

int m_DoorStatusCombinedUpperCar;//used by dispatcher to determine one

value combining front and rear door status upper car

int m_DoorStatusRear; //Door dtatus (1 fully open, 2

closing,3 fully closed, 4 openning, 5 nudging) [elive dynamic data]

XMLS_1_DOOR_STATUS

int m_DoorStatusRearUpperCar; //Rear door status upper car (1 fully

open, 2 closing,3 fully closed, 4 openning, 5 nudging) [elive dynamic data]

XMLS_1_DOOR_STATUS

int m_DoorStatusUpperCar; //Door status upper car (1 fully

open, 2 closing,3 fully closed, 4 openning, 5 nudging) [elive dynamic data]

XMLS_1_DOOR_STATUS

int m_DownLandingCalls[MAX_FLOORS]; //down landing calls allocated to

lift by dispatcher (1 registered, 0 not) [elive dynamic data]

XMLS_1_DOWN_LANDING_CALL

int m_DownLandingCallsCombined[MAX_FLOORS]; //used by dispatcher to

determine one value combining front and rear status

int m_DownLandingCallsRear[MAX_FLOORS]; //rear down landing calls

allocated to lift by dispatcher[elive dynamic data]

int m_DownLandingCallsRearUpperCar[MAX_FLOORS]; //rear down landing

calls upper car allocated to lift by dispatcher [elive dynamic data]

int m_DownLandingCallsUpperCar[MAX_FLOORS]; //down landing calls

allocated to lift by dispatcher (1 registered, 0 not) [elive dynamic data]

bool m_EndTravelNoCall; //defines what happens if the call a

car is travelling to is removed

//(e.g. by dispatcher).

False by default. If true, then car will stop

//at next floor (unless

it has other calls to travel to).

double m_FloorArea; //floor area of car (m²)

158

double m_FloorPositions[MAX_FLOORS]; //positions of floors in building

[elive static data]

//(m above reference,

can be negative)

//array element [0] not

used, start with

//lowest floor at

m_FloorPositions[1]

int m_FloorsServed[MAX_FLOORS]; //indicates whether lift serves floor

[elive static data] XMLS_1_FLOORS_SERVED

//used when lifts in a

group do not serve all floors

//for low/high rise

groups, run separate simulations

//may be changed

dynamically by dispatcher

//0 not served

//1 if front doors

//2 if rear doors

//3 if front and rear

doors

bool m_FrontDoors[MAX_FLOORS]; //true if front doors on this landing

int m_FrontDoorsOpenCount; //counter for m_MaxDoorReOpen

int m_FrontDoorsOpenCountUpperCar; //counter for m_MaxDoorReOpen, upper

car

bool m_FrontDoorsUpper[MAX_FLOORS]; //true if front doors on this

landing

bool m_FrontLocks[MAX_FLOORS]; //true if car not allowed to access

for security reasons (even if served) [elive dynamic data]

bool m_FrontLocksUpper[MAX_FLOORS]; //ditto for upper car [elive

dynamic data]

bool m_FullByVision; //true if vision device says lift if

full - for use in real systems where there is a volumetric detection device

int m_FutureCarCalls[MAX_FLOORS];//not used

int m_Home; //home floor/default parking

position [elive static data] XMLS_1_HOME

double m_HomeDoorDwell1; //alternative door dwell time for

home floor (s)

double m_HomeDoorDwell2; //alternative door dwell time for

home floor (s)

double m_HomePeakLandingCallDwellTime; //not used

double m_HorizontalPosition; //horizontal position in the shaft, e.g.

[elive static data]

//1 - shaft 1

//2 - shaft 2

//1.5 - half way between

shaft 1 and 2

//user of lift class

must check that lifts do not crash!

int m_Index; //index number of this lift

car [elive static data - allow string] XMLS_1_CARID

//note that the Elevate

lift array is 1 index. l[0] is not used or initialised.

double m_Jerk; //rated lift jerk (m/s/s/s)

[elive static data] XMLS_1_JERK_MSSS

double m_JourneyStart; //time lift journey started (s past

reference)

double m_kW[ DRIVE_LAST_STATE ]; //energy consumption, this specifies

the energy consumed while in each of these load states

int m_LandingCallCancellation; //defines when lift class cancel

hall calls

//options ARRIVAL

(default) or SLOWDOWN

159

//Landing calls are set

when value is 1. If SLOWDOWN option selected then value is changed to 2 on

slowdown

double m_LandingCallDwellTime; //not used

double m_LandingCallDwellTimePostCarCall; //not used

double m_LevellingDelay; //levelling delay (s)

int m_MaxDoorReOpen; //maximum number of time doors are

allowed to re-open once car calls have been registered

//set to -1 for

unlimited

double m_MaxVelocityMultiply; //allows dispatcher to change the rated

acceleration for a single trip. Also use in ThyssenKrupp VMAX to overspeed

the lift.

double m_MGRestartTime; //time it takes for motor generator

set to re-start (s)

bool m_MGSet; //true if this lift has motor

gererator

double m_MGShutDownAfterTime; //time after which motor generator set

will shut down (s)

double m_MotorStartDelay; //motor start up delay (s)

int m_NoFloors; //no of floors in building

[elive static data] XMLS_1_NO_FLOORS

int m_ParkCall[MAX_FLOORS]; //parking calls, like landing call,

but placed by dispatcher[elive dynamic data] XMLS_1_PARK_CALL

//lift does not open

doors on arrival

int m_ParkOpenCall[MAX_FLOORS]; //as parking calls, but lift parks

with doors open

bool m_PeakMode; //not used

bool m_PersonTransferred; //not used

int m_PreDirection; //direction of travel once we

reach current destination [elive dynamic data]

double m_QuickestStopPosition; //next possible stop lift can make

(m above reference)

bool m_RearDoors[MAX_FLOORS]; //true if rear doors on this landing

int m_RearDoorsOpenCount; //not used - for future

int m_RearDoorsOpenCountUpperCar; //not used - for future

bool m_RearDoorsUpper[MAX_FLOORS]; //true if rear doors on this landing

bool m_RearLocks[MAX_FLOORS]; //true if car not allowed to access rear

doors for security reasons (even if served)[elive dynamic data]

bool m_RearLocksUpper[MAX_FLOORS]; //true if car not allowed to access

rear doors upper car for security reasons (even if served)[elive dynamic

data]

int m_ReasonForStopping; //not used

bool m_RequestAvailability; //set to true to start up MG set

int m_RequestedDestination; //Specific destination requested by

dispatcher

bool m_SlowDown; //true if the lift has started

slowing coming into a stop

int m_StartFloor; //floor no current journey started

double m_StartPosition; //position current journey started

(m above reference)

double m_TimeBeganStartUp; //time we requested the MG set to be

turned on

double m_TimeLastTrip; //time last trip, used to see if to

turn off MG set

double m_TimerT1; //time timer T1 began (s past

reference), -1 if not in use

double m_TimerT1Rear; //time timer T1 began for rear doors

(s past reference), -1 if not in use

double m_TimerT1RearUpperCar; //time timer T1 began for rear doors upper

car (s past reference), -1 if not in use

double m_TimerT1UpperCar; //time timer T1 began for upper car

(s past reference), -1 if not in use

160

double m_TimerT2; //time timer T2 began (s past

reference), -1 if not in use

double m_TimerT2Rear; //time timer T2 began for rear doors

(s past reference), -1 if not in use

double m_TimerT2RearUpperCar; //time timer T2 began for rear doors upper

car (s past reference), -1 if not in use

double m_TimerT2UpperCar; //time timer T2 began for upper car

(s past reference), -1 if not in use

int m_TravelStatus; //current travel status, (1

travelling, 0 at floor) [elive dynamic data] XMLS_1_TRAVEL_STATUS

int m_Type; //type of lift (single, double

deck, etc.), see _tag_LIFT_TYPE

int m_UpLandingCalls[MAX_FLOORS];//up landing calls allocated to lift

by dispatcher (1 registered, 0 not) [elive dynamic data]

XMLS_1_UP_LANDING_CALL

int m_UpLandingCallsCombined[MAX_FLOORS]; //used by dispatcher to

determine one value combining front and rear status

int m_UpLandingCallsRear[MAX_FLOORS]; //rear up landing calls [elive

dynamic data]

int m_UpLandingCallsRearUpperCar[MAX_FLOORS]; //rear up landing calls

upper car [elive dynamic data]

int m_UpLandingCallsUpperCar[MAX_FLOORS]; //landing calls upper car

[elive dynamic data]

double m_Velocity; //rated lift velocity (m/s)

[elive static data] XMLS_1_VELOCITY_MS

double m_VelocityMultiply; //allows dispatcher to change the

rated acceleration for a single trip. Set to 1.0 by default.

//Used by ThyssenKrupp

VMAX feature.

public:

//constructors

lift();

//destructor

~lift() {};

//member functions

int ChangeJourney(int floor); //change journey, new destination, "floor"

//use this function

having checked this is possible using QuickestFloorStopFloor();

//returns 1 if OK, -1 if

not possible to change journey

void DestinationCallUpdate(int floor, DestinationCall

m_DestCalls[MAX_DESTINATION_CALLS]); //updates the status of the destination

calls

int FloorAt(); //return floor no if not

travelling

int FloorNo(double position); //returns floor no at position

bool GetCarCall(int nFloor,int nDeck); //returns if there is a car call

registered for a given floor and deck

int GetDoorStatus(int nSide, int nDeck); //returns the door status of

the given deck and side

bool GetFloorsForTripServed(int nArrivalFloor, int nDestinationFloor,

int nArrivalSide, int nDestinationSide);

//returns if the lift

can serve a trip

bool GetLandingCall(int nDirection, int nFloor, int nDeck, int nSide);

//returns true or false

depeding on if there is a landing call allocated to the lift for the

specified

//lift direction, deck

and side

161

int GetNoDecks(); //returns the number of decks,

currently limited but related routines being developped

//for n decks for future

use

bool GetParkCall(int nFloor); //returns if there is a parking call for

the given floor

bool GetParkOpenCall(int nFloor); //returns if there is a park open

call for the given floor

int HighestFloorServed(); //Highest floor served by the lift

int LowestFloorServed(); //Lowest floor served by the lift

bool NoCalls(); //true if lift has no calls at

all (up, down, car, parking, etc.)

bool NoDestinationCalls(int LiftNo, DestinationCall

DestCalls[MAX_DESTINATION_CALLS]);

//true if there are no

oustanding destination calls to serve

bool OpenDoorsNewCallAtLanding(); //checks to see if new call

registered while lift at landing and re-opens doors if required

bool OpenDoorsNewCallAtLandingRear(); //checks to see if new call

registered rear side while lift at landing and re-opens doors if required

bool OpenDoorsNewCallAtLandingUpperCar(); //checks to see if new call

upper car registered while lift at landing and re-opens doors if required

bool OpenDoorsNewCallAtLandingUpperCarRear(); //checks to see if new

call registered upper car rear doors while lift at landing and re-opens doors

if required

int QuickestFloorStopFloor(); //next stop lift could make (floor no)

double QuickestStopPosition(); //next stop lift could make (m above

reference)

double QuickestFloorStopTime(); //time of next stop lift could make

at floor (s after midnight day 1)

double QuickestFloorStopPosition(); //next stop at floor lift could

make (position)

double QuickestStopTime(); //time of next stop lift could make

(s after midnight day 1)

void RemoveLandingCall(int direction, int floor); //removes landing

call - called by class when lift arrives at landing.

//May also be called by

dispatcher when re-allocating call to another lift

void Reset(building b, int index = 0); //sets lift to home

position,cancels all calls, etc.

void ResetDoorDwellTimers(); //Reset door dwell timers - use when door

opening complete, or if

//necessary to re-start

the door time out process (e.g. new destination

//based control system

allocation while lift is at landing, to avoid passenger missing lift.

void ResetDoorDwellTimersRear();//Reset door dwell timers rear doors

void ResetDoorDwellTimersUpperCar(); //Reset door dwell upper car

timers

void ResetDoorDwellTimersRearUpperCar(); //Reset door dwell timers rear

car upper lift

void SetDestination(DestinationCall

m_DestCalls[MAX_DESTINATION_CALLS]); //set destination/direction travel

int StartJourney(int floor); //start journey, destination "floor" N.B.

this sets the direction of the lift there is no need to use SetDirection();

//returns 1 if

sucessful, -1 if failed e.g. because doors open

double TimeSinceStartedJourney();//Calculates how long lift has been

travelling on its current trip

void Update(double CurrentTime,int Index, DestinationCall

m_DestCalls[MAX_DESTINATION_CALLS]);

//this function updates

the status of the lift (position, speed, door operation, etc.)

162

void UpdateDestination(double CurrentTime, DestinationCall

DestCalls[MAX_DESTINATION_CALLS]);

//check for calls

allocated to lift and sets destination

private:

void AdvancedCallCancellation();

void EndTravelDeallocatedCalls();

};

#endif

163

Objeto dispatch (dispatch.h)

// Dispatch.h: interface for the CDispatchW class.

//

// $Id: Dispatch.h 1106 2011-04-06 19:51:12Z Richard.Peters $

// $Revision: 1106 $

// 12/01/2010 jimn add #if defined(DLL_USE_XML_PARAMETERS)

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DISPATCH_H__163502DF_E3E1_4DA5_BB84_9BEF27C83AB0__INCLUDED_)

#define AFX_DISPATCH_H__163502DF_E3E1_4DA5_BB84_9BEF27C83AB0__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#include "DispatchBase.h"

//

#if defined(DLL_USE_XML_PARAMETERS) // if used defined in stdafx.h,

added to return the Xml file name to Elevate

#include "../Xml/CXml/Xml.h" // required if using xml parameters, make

sure the path is correct for your implementation

using namespace ElevateXml; // required if using xml parameters,

this namespace is referenced

#endif

//

class CDispatchW : public CDispatchBase

{

public:

CDispatchW();

virtual ~CDispatchW();

// Public member functions

public:

virtual void Update(double CurrentTime,

lift l[MAX_LIFTS],

double SimulationTimeStep,

building b,

int NoLifts,

CString message,

CString &mode,

CArray<person*, person*> &PersonArray,

int NoPassengers,

int NoTrafficPeriods,

double m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],

double m_StartTime[MAX_TRAFFIC_PERIODS],

double m_EndTime[MAX_TRAFFIC_PERIODS],

int XMLmode,

DestinationCall DestCalls[MAX_DESTINATION_CALLS],

CString Document,

bool DestinationButtons[MAX_FLOORS],

int UserSelectedMode);

virtual void Reset(building b, bool ResetHistory, int version);

virtual int GetNoOfAlgorithms();

164

virtual CString GetAlgorithmName(int nAlgorithm);

virtual int GetUpLandingCall(int floor, int side);

virtual int GetDownLandingCall(int floor, int side);

virtual void SetUpLandingCall(int floor, int val, int side);

virtual void SetDownLandingCall(int floor, int val, int side);

virtual void SetAlgorithmNo(int val);

virtual int GetAlgorithmNo();

virtual int GetAlgorithmType();

virtual CString GetDispatcherOptions();

virtual CString GetAlgorithmModeName(int nAlgorithm, int nMode);

virtual int GetNoPeakModes(int nAlgorithm);

virtual void SetDispatcherOptionsUserSelections(CString

DispatcherOptionsUserSelections);

// Data members

//about the dispatcher algorithms

int m_NoOfAlgorithms; //the number of algorothms

defined by the developer

//in this DLL

(maximum MAX_USER_ALGORITHMS)

int m_DispatcherPeakMode; //peak mode dispatcher is

currently using

//NORMAL, UP_PEAK,

DOWN_PEAK

CString m_AlgorithmName[MAX_USER_ALGORITHMS];

//the names of the

algorithms - these will be

//added to drop

down box in Simulation Data

int m_NumberOfPeakModes[MAX_USER_ALGORITHMS];

//determines how

many peak modes, e.g. normal, up peak, down peak, etc.

//the number of peak modes available with for algorithm

CString m_PeakModeNames[MAX_PEAK_MODES][MAX_USER_ALGORITHMS];

//not used

int m_Algorithm; //the number of the dispatcher

algorithm selected by the user

int m_AlgorithmType[MAX_USER_ALGORITHMS];

//the type of the

algorithm

//0 - conventional

//1 - destinations

registered at landings

//about the calls registered with the dipatcher

int m_UpLandingCalls[MAX_FLOORS]; //up calls registered with the

dispatcher (1 registered, 0 not)

int m_UpLandingCallsRear[MAX_FLOORS]; //rear up landing calls

int m_DownLandingCalls[MAX_FLOORS]; //down calls registered with the

dispatcher (1 registered, 0 not)

int m_DownLandingCallsRear[MAX_FLOORS]; //rear down landing calls

//The following variables provided so that you can store data between

//calls to Update(double CurrentTime,lift l...).

int m_User1[1000];

165

double m_User2[1000];

bool m_RequestSimulationData; //flag to indicate that simulation data is

being requested

//by dispatcher which is

not normally available to in real life

//set this flay to true

if you want to access data from the

//person class and the

traffic arrival rate/destination matrix

CString m_DispatcherParameters;

CString m_DispatcherOptions;

CString m_DispatcherOptionsUserSelections;

CStdioFile m_File;

void Algorithm0(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm1(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm2(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm3(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

166

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm4(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm5(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm6(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm7(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

167

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm8(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm9(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm10(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

void Algorithm11(double CurrentTime,lift l[MAX_LIFTS], double

SimulationTimeStep,building b,int NoLifts,

CString message,CString &mode,

CArray<person*,person*> &PersonArray, int NoPassengers,

int NoTrafficPeriods, double

m_u[MAX_TRAFFIC_PERIODS][MAX_FLOORS],

double

m_d[MAX_TRAFFIC_PERIODS][MAX_FLOORS][MAX_FLOORS],double

m_StartTime[MAX_TRAFFIC_PERIODS],

double

m_EndTime[MAX_TRAFFIC_PERIODS],DestinationCall

DestCalls[MAX_DESTINATION_CALLS],

CString Document,bool

DestinationButtons[MAX_FLOORS],int UserSelectedMode);

bool GetDispatcherOptionsValueBool(CString VariableName);

double GetDispatcherOptionsValueNumber(CString VariableName);

double GetDispatcherOptionsValueTime(CString VariableName);

CString GetDispatcherOptionsValueCombo(CString VariableName);

168

void SetValue(CString VariableName, double VariableValue);

void SetValue(CString VariableName, int index1, double VariableValue);

void SetValue(CString VariableName, int index1, int index2, double

VariableValue);

double GetValue(CString VariableName);

double GetValue(CString VariableName, int index1);

double GetValue(CString VariableName, int index1, int index2);

CString NumberText(double val);

CString NumberText(int val);

#if defined(DLL_USE_XML_PARAMETERS)

void SetDispatcherDllOptions( CXmlNode DllOptions, CString

csAlgorithmName ); // if supports Xml Parameters

void GetOptionsFromXml( CString csAlgorithmName ); // extract the

Option Value names and values from the Xml file for this algorithm

#endif

protected:

};

#endif //

!defined(AFX_DISPATCH_H__163502DF_E3E1_4DA5_BB84_9BEF27C83AB0__INCLUDED_)