I am working on a warehouse picking problem.

My problem is as follows:

1. My warehouse is composed of locations (Shelf and rack).

2. I know the distances between all the locations (A->B, A->C and B->C).

3. I have 1 item in each location.

4. I could have multiple count of same item but each could be situated in one location.

5. I generate a list of items that I need to pick based on incoming orders.

6. Now, I need to find the optimum route and pick each item (1 qty each) so that the distance travelled is minimum.

7. The think to note is for an item, I could find multiple locations as well and I still need to pick just one.

I thought this is a perfect candidate to use CSP. But I am not able to model it in terms of variables and constraints. I read about the NetworkFlow constraint and I couldnt think of a way to extend this.

Any suggestions would be very helpful.

This is the model I have in my mind:

1. Have an array of locations. The index of the location would tell me which location i am referring to.

2. In the CSP model, I have an array of Integer Variables (FDVs) which represent the locations in which I am going to go to to pick the items (in order). This is the output I want.

3. I will impose a AllDifferent constraint on all the variables in this array (from #2) since I know that there's one item (1 qty) in each location.

4. I need to feed to the model all the distances between every 2 locations.

5. I need to feed to the model the list of items i need to pick.

6. I need to feed to the model the locations of each item I need to pick.

I am very new to CSP and I want to see how I can achieve it.

Any help would be really appreciated.

Thanks and regards,

Rahul Desai