I work on a software for routing deliveries (https://www.fleetnavi.com), and although we don't have this functionality built into the platform yet, it's the first thing to do when we get volume.
I work on a software for routing deliveries (https://www.fleetnavi.com), and although we don't have this functionality built into the platform yet, it's the first thing to do when we get volume.
Aren't they all? Until you actually try to do it...
[In seriousness, we are excessively bad at estimating the true difficulty of problems, and making them sound 'easy' when they're not only serves to devalue the work of the people who actually spend the time and effort to actually figure it out.]
It was (bar the web front end) a relatively modest sub-30kloc chunk of C++.
Now the scale is different but in 10 years, the problem isn't necessarily much more complicated, just larger.
In fact I think a derivative of it now runs some of Yodel's operations.
I also love this:
the problem isn't necessarily much more complicated, just larger
If a programmer ever said this to me, it'd be a massive red flag that the estimate they're about to give me is going to be very wrong.
Also, there is no need to get a perfect solution anything better than what's out there is useful.
Ummmm... yeah, scaling the kinds of algorithms that one might apply to this sort of problem up to larger data sets is often extremely difficult.
30kloc of COM/IDL as well that is. The actual routing engine was about 12kloc and the rest was the object model and deserializers. The routing engine was built on a two week binge of Red Bull, TAOCP and some papers printed out.
It really wasn't rocket science even though we charged them like it was.
From scratch by a non red bull enhanced team using c# instead it would probably about 3 months' work for two people to reproduce.
I don't think it's as trivial because there are lots of things to consider. Some drivers are just SLOW and it will have nothing to do with traffic. Maybe all slow/terrible drivers use your app so all the route speed information is completely based on specific patterns set by your app.
I am in a major metropolis and I drive throughout the city, suburbs and adjacent cities regularly. I know the area and I have been driving for decades.
I have been using Waze for about a year now. The navigation routes it selects appear to be very good. They appear to be based on relevant factors too. I can only guess what variables they include in their calculation, such as weighted capacity, current traffic speed, etc. of the relevant route elements.
My experience with Waze is the opposite of yours.
This is hardly a trivial problem. It might be trivial to deal with a simplified mathematical model of it, but throw people into the mix and it suddenly gets very complicated. http://en.wikipedia.org/wiki/Reflexivity_%28social_theory%29
Google Maps would also change my London commute route on a daily basis given the changes in traffic patterns.