Supply Chain Management Blogs by SAP
Expand your SAP SCM knowledge and stay informed about supply chain management technology and solutions with blog posts by SAP. Follow and stay connected.
cancel
Showing results for 
Search instead for 
Did you mean: 
thomas_engelmann
Product and Topic Expert
Product and Topic Expert
3,391

 

In this blog I want to cover two frequent questions:

  1. I want to have only Freight Orders with more than x% utilization.
  2. I want to distribute the freight between two Freight Orders in a specific way.

I want to discuss this scope from different views. We will start with some thoughts what the optimizer can do to influence the utilization. After that we will look at the non-delivery cost to model filler products to increase the utilization. After an introduction of the Minimum Target Utilization feature, we will end with a very deep look into the load-cost-function.

What can the optimizer do for utilization?

Let’s look from the engine side on the utilization. If you call the optimizer, you define a selection of the freight you want to plan. That means the backlog for planning is defined completely. The optimizer cannot decide to add some other Freight Units just to fill the truck. It might only decide to not plan some freight.

The optimizer engine has two remaining possibilities to achieve a high utilization.

  1. It can select the best fitting resource for a Freight Order.
  2. It can decide about the distribution of the Freight Units to the Freight Orders, to get a combination filling a truck nearly completely.


Method a) seems clear. It is, what we usually expect. Don’t use a large truck, if you can do it with a smaller one. By setting the right costs for the truck this should work. You just need a little bit more cost for the larger trucks.

Method b) is more sophisticated. Let’s assume we have some Freight Units from location A to location B. Now we have an additional Freight Unit from C to B. should we add it to the Freight Order from A to B to get a higher utilization in a Freight Order A->C->B?

  • If we speak about the utilization, we improved it only for the stage A->C. The stage C->B is new but with the former utilization of Freight Order A->B. That means, we improved the stage with the highest utilization only. It is important to mention, that the optimizer always considers the most utilized stage as the utilization of a Freight Order.
  • It could happen that we drive some extra distance to include C into this Freight Order. Do we want that? Where is the threshold, which decides if it is better to consolidate with a high utilization or to split and find a plan with less distance?

The second point shows us, that a higher utilization is directly influencing the consolidation of the Freight Units into Freight Orders. That means we have to define the rules for the utilization very carefully. Otherwise, the optimization will end up in Freight Orders with a high utilization on one leg but a terrible routing. The optimizer cannot create additional Freight Units, it is forced to check such consolidations based on the defined constraints and costs.

Filling products

It is a usual practice, that you have some filling materials. If your truck is not full, but you need to start the transport, you load some additional products, which are usually cheap and recently transported. For example, if you supply a store, you might put some toilet-paper on top of the other products just to fill the truck. This allows you to save some capacity for the next days.

It might be one possibility to ignore this additional filling freight in planning completely. Execution decides about the additional products, and you just reduce the transportation demand of the following days.

But if you want to plan the filling products, we must select them for the optimization run, so that the engine can decide, if they are additionally planned or not. In this case we must express, which Freight Units are important and must be transported today. And which Freight Units are filler and optional. You do that via a determination to define very low non-delivery cost for the filler Freight Units, but high non-delivery cost for the important freight.  If your transportation cost for resources and distances is somewhere between, the optimizer will create Freight Orders for the important Freight Units. It will use up the remaining capacity for the filler products. But it will not be able to create new Freight Orders if the cost for an additional Freight Order is higher than the non-delivery cost of the filler Freight Units.

This cost setting might be a little tricky. Because of that I want to mention two alternatives. The second one is my favourite, as it doesn’t touch attributes of the Freight Unit and therefore has no side-effects.

  • Instead of non-delivery cost you can use the time windows. The important Freight Units have concrete hard time windows. The windows of the fillers are much larger. Perhaps a week instead of a day in daily planning. This allows the optimizer to add filler products to the other products. At the end the remaining filler products are planned in their own Freight Order which can be deleted afterwards.
  • You work with two Freight Unit selections. First plan the important Freight Units only. In a second run you use the incremental planning to add as many filler products as possible to the existing Freight Orders of the important products. You must forbid to create any new Freight Order. Since TM 9.4 you can do that in the Optimizer Settings of the Planning Profile. In older releases you have to define very high fix cost to avoid new Freight Orders.
    The second run can be very fast. Usually, I use the Automatic Runtime Regulation and select the option “Fastest”. As no new Freight Orders are needed, the only thing that needs to be done is to add the filler products to the existing ones, which is done very fast.

 

Minimum Target Utilization

The thought above showed, that considering a certain minimum utilization as an objective during the optimization needs a very sophisticated penalty setting for under-utilization. To circumvent this issue TM supports the feature Minimum Target Utilization beginning with version 9.4.

The idea is not to handle the utilization during the optimization, but to do only a simple post-processing to clean up the under-utilized Freight Orders. The optimizer is planning as usual. Only at the end it is checking if there are Freight Orders below the specified minimum target utilization. If this is the case, it tries to re-plan the assigned Freight Units and to put them on other Freight Orders. Doing so only very few Freight Units should remain on the under-utilized Freight Orders. These are returned unplanned in case the Minimum Target Utilization is defined as a hard constraint(Freight Orders below the target utilization are not accepted) or assigned to under-utilized Freight Orders if those Freight Orders are accepted. Please note, that the total cost might increase in this post-processing step when trying to adhere to the minimum target utilization, as it was ignored during the usual planning phase.
After the optimization the manual planner has to decide, what to do with these remaining Freight Units, respectively with the remaining under-utilized Freight Orders.

The higher the minimum target utilization, the fewer Freight Orders adhering to the minimum utilization constraint will be created, and the more Freight Units will remain unplanned or assigned to under-utilized Freight Orders. Therefore, the precise choice of the minimum target utilization depends on operational goals and should be determined carefully. However, setting the minimum target utilization too low makes little sense as it complicates the overall planning without yielding any reduction in the number of Freight Orders, respectively in the number of resources needed.​

Some ideas to improve the results using the Minimum Target Utilization feature:

  • Use higher non-delivery cost for Freight Units that are harder to serve to achieve lower transportation cost in the long term. This is especially relevant in case the Minimum Target Utilization feature is used as a hard constraint. E.g. considering a distribution scenario with a depot
    • The further away the delivery location of a Freight Unit is from the depot, the higher the non-delivery cost. If the delivery location of a Freight Unit is closer to the depot, it is more likely to be well integrated into new Freight Orders on the following day.
    • The higher the quantity of a Freight Unit, the higher the non-delivery cost, because Freight Units with lower quantities can be inserted more flexibly into Freight Orders.
  • Fleet size can be minimized when freight splitting is allowed. Hence, to achieve a certain target utilization, and this is valid from the operational perspective, you could think of cutting Freight Units smaller to ease the consolidation. This is not a general advice, though, as cutting Freight Units smaller also leads to a lower performance, and delivery locations might be visited more frequently.


Load-Cost-Function

Another feature in this area are the load-cost-functions. load-cost-functions are a feature in standa alone TM. But they are no longer supported inside S/4. If you want to use them in S/4, you need to do that via BAdI.
For load-cost- functions we have a lot of feedback, mostly because they are so difficult to use. Because of that the first rule for load-cost-functions: Please check first if the two–step approach or the minimal utilization is a good approach for you. Only after that start to think of the load-cost functions.

Very often we receive models with a load-cost function like that:



The idea behind was to express, that a load above a threshold is ok. Below this threshold it is bad. First of all we need to see, that we have additional cost and we run in all the issues about the consolidation like described above. We risk crazy routings and consolidations. Because of that the second rule for load cost functions: Use only very small penalties.

The load-cost function should influence the optimizer in such a way, that it prefers full loads instead of several small loads. Let’s think about the effect on the optimization algorithm. As you might know the most important step is the insertion of a freight unit into a partial plan:

The described load cost function is penalizing the creation of a new freight order for the next freight unit. But it doesn’t really help the engine to decide between several freight orders, which are not utilized enough. This means after planning the first freight units and crating some freight orders into different directions the optimizer has already some load-cost, but doesn’t see how to resolve that, as it adds freight unit by freight unit without look-ahead. So the optimizer has to pay several load-cost in the hope to reduce it later. For the optimizer this look like a fitness- function for the overall plan like that:



If you play golf you might see the problem to get the ball into the small whole. For the optimizer it is the same. It is much easier if we have a fitness landscape like in the following diagram. We speak about convex problems, which are usually much easier to solve, as you can improve in small steps and the landscape is guiding you to the optimal solution. Of course this would be boring for golf. But it is a big help for optimization



We can help the optimizer and add some guidance into the cost function by making it convex. We can express, that the cost function for a newly added freight order should be high if there is no load. And it should be low, if we nearly reach or fulfill the threshold for utilization. This leads us to a cost function like that:



Beside of all this hints, the cost functions still have the tricky influence on the routing and consolidation. Because of that, let’s repeat and complete the golden rules for load-cost functions:

    1. Check if you can reach your goal without load-cost functions (for example several runs as described in the “Filling products” chapter or with the Minimum Target Utilization Feature).
    2. Use very small penalties.
    3. Guide the engine with a convex load cost function.
    4. Check your results very carefully.



 

Please note that TM for S/4HANA no longer supports maintaining load cost functions in the planning profile. If you want to use it despite rule #1 you must fall back on using the preprocessing BAdI.

3 Comments