Create capacity constraints for multiple types of pallets used for packing tracks

We have a distribution company which has a number of different trucks (different loads, different ldm or sq meters) available. Loads are being packed on a different size pallets. Is there any way to account for different sizes of pallets ?

I understood that for that reason capacity has been established and in can be added for weight, pieces, and even with sqm or m3. But square meters usage on top of weight does not solve the problem with even two different pallets used to pack a truck. As I understand it this works in a way that both track gets total sq meter of its load and in the same unit load is represented (sq meters). It would often happen that system may allow to add another pallet or two even though there is no way to pack these extra pallets despite there the truck have some space available.
To better illustrate my point I have added a drawing presenting such a situation

Wouldn’t the following work?

If you assign the truck capacity with two length dimensions instead of the area you wouldn’t mix up both and it will correctly reject new pallets. In this case even one dim would be sufficient then you define the length of the truck (20 000mm?) and the length of a pallet (800mm vs. 1200mm)

Thanks for your replay. We have made some tests providing two dimensions and it seems that loads are being added as long as the one of the two dimensions are to be exceeded. The capacity was given 2400 mm for width and 10000 mm for length.

Given there were a number of jobs with 800mm x 1200mm pallets (for a sake of this test we added jobs only with the same types of pallets) and jsprit packed only 3 pallet until the width was fulfilled (3x800=2400). In other words jsprit did not added another row of pallets. Obviously in reality a lot more pallets are possible to be added in the vehicle with capacity given (2400 x 10000).
But we may be doing something wrong…

Any thoughts … ?

Actually, I do not entirely understand your problem. Assume you have small pallets and large pallets then you need to specify in advance how many small and how many large pallets fit into your truck. Furthermore, you need to specify in advance whether a service/shipment involves the transportation of small or large pallet. If this is not desired, I d choose a single transport unit that can represent both large and small pallets.

Let me try to explain my problem better. During the planning process every customer’s order (load) have its associated weight and type of the pallet (large or small) it is located on. In reality there more then two types of pallets to be used in the equation but let’s stick with just two. Now the optimisation algorithm should answer the question of how to pack available diffrent type of trucks with diffrent not homogeneous pallets. So we can have both large and small pallets with a different combination of sizes in every truck.
Having said that I cannot “specify in advance whether a service/shipment involves the transportation of small or large pallets” In theory such homogeneous division is possible but not used in real lifes scenarios because it is far from the optimum.
So the system should be able to pack the truck given different sizes of pallets.

Yes I can specify in advance how many small and how many large pallets fit into my truck. But as long as a whole load (pallets) are not homogeneous it won’t solve my problem, I guess. Note that in real live cases, pallets, which are rectangular in shape may be packed with either shorter or wider side to previuosly loaded pallets which even further complicate the issue. Imagine the client ordered number of items which can be packed on one 1200x800 and one 1200x1200 pallet. Nobody will agree to pack these items on two 1200x1200 to keep homogeneous truck. It is a waste of transportation/capacity space

There are specific bin packing algorithms out there and my question here is whethere jsprit is capable of doing it or prepared through some changes to the core to implement such feature

Please let me know if the problem is still not understandable.
Thanks in advance for your help

Ok. Understood. This it not solvable with jsprit. It meant that jsprit would optimize the distribution of items on load aids. I doubt that you will find an open source software that does this all at once (vehicle routing and scheduling plus bin packing). If I were you, I d use the physical attributes of your vehicles and items as capacity and size dimension, e.g. weight and volume, and solve the bin packing problems afterwards.

Thank you Stefan for your kind answer.
I understand your point to allow the algorithm working as it can, utilising available type of constraints and then apply the bin packaging but I guess this won’t help me much. I’ll try to explain my understanding of such approach. Let’s assume that too many pallets were allowed and packed onto the truck due to current methodology of homogeneous pallets. Now the truck with its load will be handed to the other bin packaging algorithm which will confirm that too many pallets were indeed added, so will unload one or two pallets. These will return to the “warehouse” together with the other excess load from other trucks after bin packaging algo. work completion. I would guess these loads would need to be packed for another empty truck (assuming we want to deliver all loads with the same date as their delivery date). From geographic (distance) point of view this cannot be optimal as these excess loads taken out by bin packaging might be in the neighborhood of other load delivery addresses already packed on trucks during initial optimization procedure so we may end up with trucks going to similar places again. Therefore wiser and probably much harder would be to reshape the algorithm to accommodate described functionalities.Please correct me if you notice I have missed any valid points in this analysis.

Understood. As far as I can judge it now, it would mean that for each item to be inserted, you need to solve an entire bin packing problem to check whether there is capacity for this item or not. If you found a very fast heuristic solution for the bin packing problem, you might be able to solve this. I am not sure yet.

I am looking for anyone who could implement bin packaging algorithm into the JSPRIT, so to have described above functionality working. JSPRIT knowledge is required. There are a few bin packaging algorithm out there from easy one to more complicated. Interested person to do it on commercial assignment please contact me on my email: