
In this blog I want to cover two frequent questions:
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.
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?
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.
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:
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:
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 | |
3 | |
2 | |
1 |