Live data from Hacker News

The software routing 260,000 grocery deliveries a week

ocadotechnology.com

21–30 of 41 posts

Re: The software routing 260,000 grocery deliveries a week

#21
post #12

Earlier quoted context omitted.

99% of their code will be ordinary CRUD plumbing, dealing with orders and integrating with other systems. The algorithmic code is the fun part, and they've had years to tune it. This is just self-congratulatory PR, trying to persuade potential investors that's they're a hard tech company.

Ocado is an interesting case. Their public line is that they're a technology company that happened to end up delivering groceries. They invest a lot in automation and robotics - definitely 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 a…

The missus uses Ocado, they really have their shit together in the UK on the logistics side (a field I work in but not groceries), the deliveries are on time, the process is slick and professional and the drivers are polite and helpful.

She swears by them, I mostly swear at the bill.

Re: The software routing 260,000 grocery deliveries a week

#24
Took a couple classes in graph theory in college which was interesting because of the complexity involved in solving for optimal routes. We started with brute-force search and moved on to other shortest path problem algorithms like the ones mentioned here:

https://en.m.wikipedia.org/wiki/Shortest_path_problem

This article doesn't seem to add anything to the field.

Re: The software routing 260,000 grocery deliveries a week

#25

I work for Ocado, and I've spent some time working on the routing system (although I don't work on it any longer). 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 :)

Slightly unrelated, but it would be great if the main shop could have an API. 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!

There have been internal discussions of providing an Alexa skill (or something broader to support other home automation/digital assistant products).

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 :)

Re: The software routing 260,000 grocery deliveries a week

#26

I work for Ocado, and I've spent some time working on the routing system (although I don't work on it any longer). 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 :)

what is the stack you use ? especially for the algorithm hotpath ? I'm not sure if you are using libraries like Gurobi or CPLEX.

Re: The software routing 260,000 grocery deliveries a week

#27

I work for Ocado, and I've spent some time working on the routing system (although I don't work on it any longer). 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 :)

what is the stack you use ? especially for the algorithm hotpath ? I'm not sure if you are using libraries like Gurobi or CPLEX.

The optimiser is actually written in pure Java.

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.

Re: The software routing 260,000 grocery deliveries a week

#28

Interesting talk on the subject from a data scientist at Instacart: https://blog.dominodatalab.com/data-science-instacart/

We've also looked at data science to solve the problem but found that a traditional approach still offers the best performance.

Re: The software routing 260,000 grocery deliveries a week

#29

Earlier quoted context omitted.

what is the stack you use ? especially for the algorithm hotpath ? I'm not sure if you are using libraries like Gurobi or CPLEX.

The optimiser is actually written in pure Java. 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 o…

did you not try to do this on the GPU by any chance ? Especially using CUDA libraries. I'm wondering what is the state of art in this field.

Re: The software routing 260,000 grocery deliveries a week

#30

Earlier quoted context omitted.

The optimiser is actually written in pure Java. 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 o…

did you not try to do this on the GPU by any chance ? Especially using CUDA libraries. I'm wondering what is the state of art in this field.

Our current design isn't well suited to adaption to a GPU, because it branches a lot and the memory accesses aren't strided evenly. So we couldn't just plug our current code into a java-to-cuda compiler; we'd need to change the design.

So no, we haven't yet tested using GPUs.

Post reply on HN