🚍 Linea 152
2023 Mar 23
See all posts
🚍 Linea 152
Si alguna vez llegaste a conocer la Avenida Santa
Fe de Buenos Aires, o su continuación en Cabildo-Maipú, seguro te
cruzaste con uno (o muchos) colectivos de la línea 152 como los de la
foto.
Recorrido super simple: Olivos - La Boca todo derecho por Paseo Colón
- Leandro N. Alem - Santa Fe - Cabildo - Maipú
Y seguramente también habrás notado que es más probable cruzarte tres
colectivos uno atrás del otro que encontrar uno solo. La
frecuencia es 10/10.

Una tarde sin batería
Una tarde sin batería en el teléfono, volviendo de Vicente López, me
tomo el 152 y como no tenía el teléfono para scrollear alguna app, me
puse a divagar (super recomendable de vez en cuando) y en una
de esas encontré este cartel pegado en una pared del bondi:

Yo sabía que la frecuencia era buenísima y medio este cartel lo
confirmaba. Entre las 8 y las 19 sale un bondi cada tres minutos, una
locura 🤯
Así que me pregunté,
🤔 ¿Cuántos bondis serán necesarios para poder cubrir todo el
cronograma de frecuencias?
Le saqué una foto al cartel y me llevé la tarea de intentar responder
la pregunta.
Fabricando la respuesta 🔧
Creo que esa misma noche empecé a imaginar una respuesta a la
pregunta, o al menos, a hacer otras preguntas que me permitan responder
la original, como:
- ¿Dónde están las cabeceras del recorrido?
- ¿Cuánto tarda un colectivo en hacer el recorrido entre
cabeceras?
- ¿Cómo influye el tráfico en la duración del recorrido?
También me puse a pensar que bien pudo haber sido la misma pregunta
que el/los dueños de la empresa se tuvieron que hacer luego de definir
el cronograma de frecuencias y por lo tanto, determinar la cantidad
mínima de colectivos que pudieran cumplir con el
cronograma era lo mejor para el negocio.
Entonces no es solo encotrar una respuesta que sea válida, sino que
hay una idea de optimización, buscar la mínima cantidad de
colectivos que cumplen lo pedido.
Respuesta 1: naive
La primer respuesta, la llamo naive (ingenua) es tener un
colectivo para cada horario de salida, de esa forma me aseguro tener un
colectivo disponible para cada salida en el cronograma.
Luego, contando la cantidad de salidas del cronograma, se
necesitarían 302 colectivos de ida y 302 colectivos de vuelta, 604
colectivos en total.
Le pregunté a chat GPT cuanto espacio ocupan 604 colectivos, pensando
en que en algún lugar se tendrían que estacionar:

Se necesitarían más de tres canchas de futbol para estacionar 604
colectivos, un montón. Inviable desde el espacio, además parece lógico
pensar que los colectivos se pueden reutilizar.
Respuesta 2: reutilizando
colectivos
Esta es la idea más lógica, tengo un colectivo que hace el recorrido
de punta a punta y cuando llega al final arranca en sentido
contrario.
Ahora sí, para poder usar esta estrategia hay que conocer cuánto se
tarda en hacer el recorrido de punta a punta.
Cronometrando el recorrido
Para poder saber cuánto tarda un colectivo en hacer el recorrido,
bien podría haberme tomado uno (o varios) colectivos desde la terminal y
cronometrar cuánto tarda en llegar al final del recorrido.
Es muy fácil ver que es un método bastante ineficiente, debe haber
algo mejor.
Hace un tiempo, por otro tema, encontre las API
publicas del GCBA que en particular permiten ver la posición
en tiempo real de los colectivos circulando por la
capital/GBA.
💡 Si tengo la posición geográfica de los colectivos, puedo calcular
cuanto tardan en relizar el recorrido de punta a punta.
La API toma una línea de colectivos y devuelve la posición gps
(latitud, longitud) de todos los colectivos de esa línea en tiempo
real.

Mapa de colectivos línea 152 del 23/01/2023 a las 20:15hs
En el mapa se ven los colectivos:
- Rojo hacia Olivos
- Azul hacia La Boca
- Verde en terminal
Bot the data 🤖
Esa noche (23/01/2023) me quedé programando un bot que hiciera lo
siguiente:
- Llame a la API del GCBA
- Tome la respuesta y extraiga las posiciones de los colectivos
- Guarde las posiciones en un csv
El bot quedó corriendo el 24/01/2023 entre las 8 y las 10 y entre las
15 y las 20 horas cada 30 segundos.
Gimme the data
Una vez obtenida toda la información, en bruto, quedaba analizarla y
sacar conclusiones, había que responder la pregunta: ¿Cuánto
tarda un colectivo en realizar el recorrido de punta a
punta?
Empiezo a analizar los datos y me encuentro lo siguiente:

Ok como esperaba, tengo datos entre las 8 y las 9 y pico; y luego
entre las 15 y las 20 horas.

Este gráfico era más interesante, me mostraba la distancia en desvios
estándar a la media de duración del recorrido para cada viaje, según el
horario de salida (start_datetime).
Permitía identificar dos grupos de datos bien claros, los viajes de
la mañana con duración bastante menor a la media y los de la tarde con
duración por encima de la media. Es decir, los colectivos de la mañana
tardaban menos, influenciado seguramente por el tránsito.
Clusterizando horarios
Para no complicarme mucho, dividí el horario del recorrido en 3
intervalos:
- poco tráfico: entre las 22 y las 10
- medio tráfico: entre las 10 y las 16
- mucho tráfico: entre las 16 y las 22
Luego para el 1er y 3er intervalo podía usar los datos reales,
calcular la media de cada grupo.
Quedaba conseguir la duración media para la franja entre las 10 y las
16. Para calcularlo armé un regresor lineal simple con los datos,
obteniendo:

En rojo: regresión lineal simple aplicada a los datos. La recta roja
es la que mejor se ajusta a los datos.
Y usando el resultado llegue a determinar el tiempo medio de la 2da
franja
Así, los datos de duración media del recorrido quedaron:
- 22hs - 10hs: 1.64hs
- 10hs - 16hs: 4.02hs
- 16hs-22hs: 4.57hs
Calculando colectivos
Ahora quedaba lo más fácil, sabiendo los horarios de partida y la
duración del recorrido para cada horario, contar la cantidad de
colectivos necesarios.
Lo simulé en python:
# Simulación de un día de línea 152
minuto = 0
necesarios = 0
en_terminal = 0
en_recorrido = set()
salidas = get_salidas()
while minuto < 1440:
if hay_llegada(minuto, en_recorrido):
en_recorrido.remove(minuto)
en_terminal += 1
if hay_salida(minuto, salidas):
if en_terminal == 0:
necesarios += 1
en_terminal += 1
agregar_llegada(en_recorrido, tiempo_llegada(minuto))
en_terminal -= 1
minuto += 1
Luego, hacen falta 81 colectivos, por recorrido, para cumplir
con el cronograma de salidas del 152.
Conclusiones
Con la segunda estrategia, se logra bajar la cantidad de colectivos
de 604 a 162, bastante mejor :)
🚍 Linea 152
2023 Mar 23 See all postsSi alguna vez llegaste a conocer la Avenida Santa Fe de Buenos Aires, o su continuación en Cabildo-Maipú, seguro te cruzaste con uno (o muchos) colectivos de la línea 152 como los de la foto.
Recorrido super simple: Olivos - La Boca todo derecho por Paseo Colón - Leandro N. Alem - Santa Fe - Cabildo - Maipú
Y seguramente también habrás notado que es más probable cruzarte tres colectivos uno atrás del otro que encontrar uno solo. La frecuencia es 10/10.
Una tarde sin batería
Una tarde sin batería en el teléfono, volviendo de Vicente López, me tomo el 152 y como no tenía el teléfono para scrollear alguna app, me puse a divagar (super recomendable de vez en cuando) y en una de esas encontré este cartel pegado en una pared del bondi:
Yo sabía que la frecuencia era buenísima y medio este cartel lo confirmaba. Entre las 8 y las 19 sale un bondi cada tres minutos, una locura 🤯
Así que me pregunté,
Le saqué una foto al cartel y me llevé la tarea de intentar responder la pregunta.
Fabricando la respuesta 🔧
Creo que esa misma noche empecé a imaginar una respuesta a la pregunta, o al menos, a hacer otras preguntas que me permitan responder la original, como:
También me puse a pensar que bien pudo haber sido la misma pregunta que el/los dueños de la empresa se tuvieron que hacer luego de definir el cronograma de frecuencias y por lo tanto, determinar la cantidad mínima de colectivos que pudieran cumplir con el cronograma era lo mejor para el negocio.
Entonces no es solo encotrar una respuesta que sea válida, sino que hay una idea de optimización, buscar la mínima cantidad de colectivos que cumplen lo pedido.
Respuesta 1: naive
La primer respuesta, la llamo naive (ingenua) es tener un colectivo para cada horario de salida, de esa forma me aseguro tener un colectivo disponible para cada salida en el cronograma.
Luego, contando la cantidad de salidas del cronograma, se necesitarían 302 colectivos de ida y 302 colectivos de vuelta, 604 colectivos en total.
Le pregunté a chat GPT cuanto espacio ocupan 604 colectivos, pensando en que en algún lugar se tendrían que estacionar:
Se necesitarían más de tres canchas de futbol para estacionar 604 colectivos, un montón. Inviable desde el espacio, además parece lógico pensar que los colectivos se pueden reutilizar.
Respuesta 2: reutilizando colectivos
Esta es la idea más lógica, tengo un colectivo que hace el recorrido de punta a punta y cuando llega al final arranca en sentido contrario.
Ahora sí, para poder usar esta estrategia hay que conocer cuánto se tarda en hacer el recorrido de punta a punta.
Cronometrando el recorrido
Para poder saber cuánto tarda un colectivo en hacer el recorrido, bien podría haberme tomado uno (o varios) colectivos desde la terminal y cronometrar cuánto tarda en llegar al final del recorrido.
Es muy fácil ver que es un método bastante ineficiente, debe haber algo mejor.
Hace un tiempo, por otro tema, encontre las API publicas del GCBA que en particular permiten ver la posición en tiempo real de los colectivos circulando por la capital/GBA.
La API toma una línea de colectivos y devuelve la posición gps (latitud, longitud) de todos los colectivos de esa línea en tiempo real.
Mapa de colectivos línea 152 del 23/01/2023 a las 20:15hs
En el mapa se ven los colectivos:
Bot the data 🤖
Esa noche (23/01/2023) me quedé programando un bot que hiciera lo siguiente:
El bot quedó corriendo el 24/01/2023 entre las 8 y las 10 y entre las 15 y las 20 horas cada 30 segundos.
Gimme the data
Una vez obtenida toda la información, en bruto, quedaba analizarla y sacar conclusiones, había que responder la pregunta: ¿Cuánto tarda un colectivo en realizar el recorrido de punta a punta?
Empiezo a analizar los datos y me encuentro lo siguiente:
Ok como esperaba, tengo datos entre las 8 y las 9 y pico; y luego entre las 15 y las 20 horas.
Este gráfico era más interesante, me mostraba la distancia en desvios estándar a la media de duración del recorrido para cada viaje, según el horario de salida (start_datetime).
Permitía identificar dos grupos de datos bien claros, los viajes de la mañana con duración bastante menor a la media y los de la tarde con duración por encima de la media. Es decir, los colectivos de la mañana tardaban menos, influenciado seguramente por el tránsito.
Clusterizando horarios
Para no complicarme mucho, dividí el horario del recorrido en 3 intervalos:
Luego para el 1er y 3er intervalo podía usar los datos reales, calcular la media de cada grupo.
Quedaba conseguir la duración media para la franja entre las 10 y las 16. Para calcularlo armé un regresor lineal simple con los datos, obteniendo:
En rojo: regresión lineal simple aplicada a los datos. La recta roja es la que mejor se ajusta a los datos.
Y usando el resultado llegue a determinar el tiempo medio de la 2da franja
Así, los datos de duración media del recorrido quedaron:
Calculando colectivos
Ahora quedaba lo más fácil, sabiendo los horarios de partida y la duración del recorrido para cada horario, contar la cantidad de colectivos necesarios.
Lo simulé en python:
Luego, hacen falta 81 colectivos, por recorrido, para cumplir con el cronograma de salidas del 152.
Conclusiones
Con la segunda estrategia, se logra bajar la cantidad de colectivos de 604 a 162, bastante mejor :)