Pick-drop, pick-drop ...in a warehouse VRP


We are trying to solve a problem in warehouse, in which vehicle will first pick a shipment from its pick location then drop it to its drop location. Vehicle can not carry more than one shipment at a time. Before dropping the shipment, we need to make sure that, container in which shipment will be dropped, must be there. So there is a time window as well. It could be for pick location as well.

We can formulate this as a VRP problem in which a task is to pick and drop the corresponding shipment. Service time could be time taken to travel from pick to drop location + pick and drop time of shipment. And time window can be defined accordingly.

The main problem is to ensure that at pick or drop location, there should not more than N number of vehicles to avoid congestion when loading and unloading of shipment is being done. Of course, vehicle having a shipment to be dropped/picked can wait in the vicinity of the area.

I can think of 2 approaches to handle it

  1. When a Job (task) is inserted in a route, then finding number of vehicle at pick or drop location and if it is more than N, then insertion becomes infeasible.
  2. In recreation part of ruin and recreate, ensuring this.

Let me know any other method through which we can achieve it. It would be great if you already also have code for the above.