Forecasting Elevators!

So... I really did not like the elevators at our old building

It seemed like an eternity between the time that you called an elevator and one showed up

I felt that elevators would almost get (stuck) at the top floor(s) and would take forever if someone happened to be on the first floor, you know that uncommon floor we sometimes use

My theory was that in the mornings, everyone probably wanted to catch an elevator from the first floor on their way to work

And in evenings, the opposite would occur. Few people if anybody, would catch an elevator from the first floor, but everyone wanted to go there

I used time of day, and floor where the elevator was called as inputs

With the goal of reducing "floors missed" when a person comes to elevator

Process

I collapsed the the exact times into 10 minute intervals to reduce noise/smooth the forecast/make the forecast usable

Turn that into time series data (with seasonally of 144)

(There are 144 ten min intervals in a day)

Then run an ARMA on that data, there is a nifty package in R that automatically (auto.arima). I did end up having to force some kind of seasonality forecast though

(I figured there was no long term trend, so no need for an ARIMA)

Finally, take the forecasted floor, and compare in a day (with all observations) to how the same elevator would normally perform

I also wanted to compare it to the theoretical situation where the elevator would go to a random floor between trips, because that sounded fun

Data Woes

Initially, I thought that finding some open source data set on how people used elevators would be easy

Turns out, finding actual data about what time and what floor people got on an elevators was actually very difficult

To the point where I never actually found any

Who knew that kind of data was not just "out there" ¯\_(ツ)_/¯

I ended up compromising and making two sets, one using semi-random data over the course of a day, the other over the course of five days

Results

On the left were the results of using the forecasted floor vs. a random floor vs. the perious floor

Its kinda hard to tell, but using the forecasted floor made the elevator on avg about 50% closer to where it needed to be

And that moving randomly between pickups was just about as good as waiting

Theoretical next steps would be to get actual data to work with and try out different models to see if I could improve even more

Link to Github, where all this stuff is stored!