Dear Data Science community,
I have the following problem to solve and I'd like to learn which algorithm or approach I can use to tackle it. I don't expect a full solution here but I really want to understand what type of optimization problem I am looking at and expecting to get some pointers. FYI, I'm using Python, in case you'd like to suggest a certain library.
Problem domain is parcel lockers.
TLDR;
Calculate the top 5 optimal parcel locker cabinet configurations to accommodate most of the parcel deliveries throughout the year.
LONG VERSION
- Assume that I start with the data for daily ecommerce parcel
deliveries to parcel lockers for last year. I know how many parcels
of which size are delivered to parcel lockers stations for day n (n
is 1 to 365) in a certain region. Let's say I don't know the exact
parcel locker station locations but I know each customer's rough home
coordinates. So data looks like => array of (day of year, parcel
size, customer location)
- All data is per single parcel, no complicated scenarios.
- Now, I want to create my own optimal parcel locker network to accommodate those deliveries. Let's say I calculated optimal locations for the parcel locker stations. Now my data looks like this: array of (day of year, parcel size, parcel locker station location) => customer location is now translated to closest parcel locker station location.
- Imagine I'm limited to 3 sizes of lockers and smaller ones can fit in the larger ones.
- size 1 fits in size 2 and size 3
- size 2 fits in size 3
- Given those 3 locker sizes I now know which of my parcels fits to which locker size => now my data is: array of (day of year, min locker size, parcel locker station location) - now aggregating this data per location tells me how many of which locker size (at minimum) I need at each certain parcel locker station.
- Parcel locker stations are made of locker cabinets which accommodate a certain locker configuration. A fictional locker cabinet configuration would look like: [2 * (size 1), 3 * (size 2), 0 (size 3)] or [1 * (size 1), 2 * (size 2), 1 * (size 3)] etc, etc.
The problem I want to solve starts here
- Given that:
- I can place any number of locker cabinets in a parcel locker station;
- Each locker cabinet can be maximum 2 meters in height and;
- Each locker cabinet is a single column of lockers (given that all 3 locker sizes have the same width);
- For cost purposes I'm limited to producing 5 types of locker cabinet configurations.
- How can I calculate the top best 5 locker cabinet configurations from this data? - Best means:
- Throughout the year I'll use the minimum amount of locker cabinets;
- I will also minimize the amount of unhappy customers on peak periods (Christmas, black Friday etc...)
- To simplify, I'm not allowed to add additional lockers on peak days.