# 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.