The software routing 260,000 grocery deliveries a week
ocadotechnology.com
ocadotechnology.com
Feel free to ask any questions and I'll try to answer them as best I can, without revealing anything I'm not supposed to reveal :)
Tesco has this, with support through IFTTT https://ifttt.com/search/query/tesco
My use case is most often in the kitchen, hands covered in flour and realise I'm running out of product X. At the moment I bark at my Echo to add something to its internal "shopping list" feature, but I'd rather those commands hooked directly up to Ocado!
I believe it was a 20% time project, so I don't know how far it's got. I'll ask the person who was working on it.
We have an API for our mobile apps, but due to the constraints of backwards compatibility it's not especially elegant, which is why it's not publicly documented. I'll ask internally about making it more available, but as I'm sure you appreciate, it's difficult to show there's customer demand for that kind of thing :)
The JIT compiler works pretty well, and with tools like JITWatch, Honest Profiler and the -XX:+LogCompilation -XX:+PrintAssembly options you can understand how the hot paths are running in a lot of detail.
For our current operation, the optimisers' servers run Ubuntu on bare metal in our own data centres. Of course, like in any large organisation we make plenty of use of virtualization and EC2 - just not for our optimisers at this point in time.
So no, we haven't yet tested using GPUs.
edit: Can you provide insight?
It is a local search algorithm that probably has simulated annealing or tabu search as a metaheuristic.
Although, they probably segment the deliveries to some common starting points and the problem size is reduced significantly - maybe to around thousand orders per starting point.
Research can easily optimize thousands of deliveries very effectively.
With ASP (answer-set-programming) you can also avoid the specificity of modeling-language DSLs and instead focus on formalization.
https://en.wikipedia.org/wiki/Vehicle_routing_problem#VRP_va...
The drivers' sat navs also (IIRC) have live traffic, which can send them down different _roads_ in response to things like accidents causing traffic jams.
Of course, there are limits to our ability to respond quickly to changes in traffic conditions for simple logistical reasons - many drivers' vans are loaded once at the start of an 8-hour shift, and we can't predict traffic accidents 8 hours before they happen!
Certain other competing concerns are balanced with a 'cost function' which has been tuned empirically.
https://en.m.wikipedia.org/wiki/Shortest_path_problem
This article doesn't seem to add anything to the field.
This is just self-congratulatory PR, trying to persuade potential investors that's they're a hard tech company.
http://www.gizmodo.co.uk/2017/02/inside-ocado-discover-the-h...
This is not a vapourware start-up, they've been leading the grocery delivery business in the UK for years. That said, they have the same problem as Amazon in that they invest so much into RnD that they're not terribly profitable (about £10M on a $1Bn turnover).
That said, in this particular example I don't know how much their solution differs from Royal Mail (which uses fixed routes) or people like DHL, Fedex, et al. Routing isn't exactly a new problem and courier companies presumably have always had a lot of people working in operations research.
She swears by them, I mostly swear at the bill.
They also probably decouple their problem into disjoint regions before solving it, to reduce the dimensionality of the problem(s).
For example, Oracle sell a product called 'Real Time Scheduler' [1]. Google finds me a bunch of other products too, but I haven't looked at them in depth.
The off-the-shelf software can deal with tens to low hundreds of orders per solution, - which can scale reasonably well if you're willing to divide your service area with boundaries you can't optimise across.
Ocado built a custom system which can support more orders with fewer boundaries; this offers better routing efficiency, which is important as delivery efficiency is a key cost driver. If your business does something like, say, washing machine repair your time-per-customer might be dominated by repair time rather than travel time; in that case you might be able to operate a nationwide business on off-the-shelf software.
The underlying algorithm in Ocado's system is based on simulated annealing [2] - although those precise words don't seem to have made it into the article!
[1] http://www.oracle.com/us/solutions/scm/service-optimization-... [2] https://en.wikipedia.org/wiki/Simulated_annealing