This concept document explains how to define the optimization strategy elements provided by M3 SCP and how they influence the optimization process. Optimization in M3 SCP means to find the best possible and feasible supply chain solution according to the best possible demand fulfillment at the lowest possible cost.
A key feature of M3 SCP is its flexible way of supporting stepwise planning decisions. It can easily be used to manipulate the data treated by the Optimizer component. In order to apply different optimization strategies M3 SCP provides a variety of important optimization strategy elements that can be put together by the user.
When needed, optimization is applied by the user during the supply chain planning process. By gradually modifying the optimization strategy and re-optimizing the plan, different kinds of planning issues can be uncovered and decisions can be made to solve them. This way the Stepwise Planning method is more than just a theory – it is in fact possible. Refer to Stepwise Planning for more detail about this method.
The Optimizer component embeds the XPRESS-MP optimizer product, which is licensed from one of the world's leading optimization software companies, Dash Optimization.
This concept document provides the user with fundamental information on how the optimization strategies apply to the supply chain planning process.
You can use this information for:
The user should have basic knowledge of how to use M3 SCP in terms of the supply chain structure, elements, and the user environment.
The supply chain model contains a number of different resources that constrain the material flow through specific parts of the supply chain. Each resource has been assigned a certain capacity per time bucket. In the actual supply chain this capacity may have to be changed over time. Whether or not the capacity should be changed depends upon a number of things, for example, the type of resource and the benefits gained by making a proposed change.
How Resource Constraints are treated
Basically, all types of resources are treated in the same way. The M3 SCP item groups that can flow through the same resource will all compete for the available capacity. If the available capacity is not sufficient, the assignment of capacity will be based on the total cost and the priorities defined for the supply chain. The M3 SCP item groups that remain may be treated in a number of different ways:
By loosening the capacity constraints for one or more resources, the ideal request for capacity for these resources can be identified. Ideal capacity means that the total plan is as good as possible from a cost/profit point of view. In order to accomplish this, the capacity of the resources is set as Infinite when optimizing. This means that the resources involved will not be treated as constraints. The optimized plan can now be analyzed according to the capacities suggested by the Optimizer. It is now possible to decide whether or not this solution is possible by comparing requested capacity with maximum possible capacity, including available capacity increase. If not, other options may have to be explored.
Finite Capacities are Introduced Gradually
By initially setting all capacities to infinite and identifying the first most critical constraint we can apply the Theory of Constraints. Try to solve the identified constraint for instance by increasing capacity. If we cannot solve the constraint we have to accept it by putting it finite. When we have solved or accepted the first constraint we will automatically be guided to the next most critical constraint which we have to decide for: Can we solve it or do we have to accept it. We will go on like that until we have no critical constraints left or until we decide to put all remaining possible constraints into finite.
M3 SCP allows selections of which resource capacities that should be finite and infinite in a very flexible way as described in the following subsections.
Constraint Status and Control
All individual resources have assigned a constraint status for each bucket. This status instructs the Optimizer to follow one of three options:
The resource capacity can be set to:
finite in the bucket
infinite in the bucket
follow the general optimization strategy
When no option is selected the default status will follow the general optimization strategy. The general finite/infinite status is defined in the Optimization Strategy Setup panel in the first tab Constraint Control. These settings can be made for each type of resource (transport, supply, stock area, ship-in and ship-out) or for all of them at once.
Defining which Resources should apply Finite or Infinite Capacity
Each individual resource in the supply chain model is assigned a Capacity Level between 1 and 99 which is defined when the data is created. By selecting a general optimization strategy level the Optimizer can automatically set all resources below that level to infinite and all resources at or above that level to finite. An example is shown in the next graphic.
A specific capacity level can be used if the order in which the resources should be treated as having finite capacity is known in advance. This will be based on the user's own supply chain planning experience. For example, if capacity on some of the resources is virtually impossible to change in the foreseeable future, these resources can be assigned a high Capacity Level. Those that can usually be changed (simply by talking to the right person, for example) can be assigned a lower Capacity Level.
Buckets with no Available Capacity should have Special Attention
There is one general exception the user should be aware of when working with infinite capacities. This exception pertains to buckets in which no capacity is available, such as holidays for example. By default, all zero-capacity buckets are respected by the Optimizer when the Infinite strategy is used. This Respect zero capacity parameter can, however, be disabled in order to check the effect of also setting these resource capacities to infinite.
The Ignore Constraint Status parameter
When enabling the Ignore Constraint Status parameter in the Optimization Strategy panel, the Optimizer is instructed to ignore the individual status settings. This allows the Optimizer to use the general optimization strategy (as specified under the Constraint Control tab) for all resources.
Lower Limits on Resource Utilization
For purchase, production and transportation resources it is possible to enable another kind of resource constraints which will constrain the utilization from below, e.g. at least 50%. This means that the optimizer can be instructed to utilize some resources more than they are actually 'entitled' to, according to cost and price considerations. Switching the limits on and off in two different optimizations the user can explore the effects of using the limits.
Such lower limits could for example be useful for dairy companies that must use incoming raw milk supplies 100%. Another example could be production equipment that it is not necessary to run the entire year. If management doesn't want to lay off workers during the down periods, the equipment could be assigned a minimum utilization of e.g. 50%.
One word of caution: Setting up minimum utilization on a resources could make it impossible to find a feasible plan, e.g. if there is not enough materials to send to the resource. Therefore – be cautious when assigning lower limits. If not all the limits can be met, the model will not produce a new plan.
The model also includes two special types of constraints that can be used to control inventory levels. Minimum Coverage Days (Safety Stock) can be used to limit the inventory build-up from below and Maximum Coverage Days (Shelf Life) can be used to limit the stock build-up from above. These constraints are dynamic in the sense that their actual constraint values depend on the other parts of the solution.
They both work at a day-level, as opposed to the usual bucket level. See further details in the Panel Help for the Inventory report.
The same word of caution as described under Lower Limits on Resource Utilization is valid for these constraints.
Detailed demand at sales nodes defines the total amount of material flow needed in the supply chain network. The cost structure defines the best way to meet this demand. However, since it costs money to purchase, produce, stock and transport materials in the supply chain model, the cheapest solution (based solely on cost) would be to not deliver anything at all. For this reason, the supply chain model needs a specific criterion that will initiate the flow, something that makes it worthwhile to meet the demand. This is implemented in the model in two different ways that correspond to two different delivery criteria:
Deliver only when profitable (Best Profit)
This criterion enables the item flow to be driven by profits for demand fulfillment. When the Optimizer stipulates whether or not to deliver an item, the total cost of delivery (materials, transport, etc.) is compared to the sales price/value. Items with a total cost that exceed the sales price will not be delivered.
This optimization procedure is not done on an item by item basis as it may appear above, but instead it is carried out for the entire model at once. The Optimizer will try to gain as much profit as possible within the entire supply chain. This means that a reduction of the suggested delivery by even one item (any item) would reduce the total profit.
If total demand exceeds total supply capacity some demands will not be met. During optimization such missed deliveries will not be postponed to a later bucket. They will in fact simply not be met. The user can then decide whether to solve capacity problems or to adjust the demand. The decision as to which demand is met and which is not is usually made by the Optimizer and based solely on profit. Deliveries that provide the most profit will be met first.
This criterion is very special because considerations regarding profit requires that all cost in the model are real. Therefore, incorporating parts of the total optimization strategy that affect costs, for example, Reduce Small Productions and Cost Multiplication Factors, might result in indefinable or obscure results. A feasible solution will be reached, but the prioritization of which demands that should be met will not be clear.
Deliver as much as possible (Best Delivery)
Use of this criterion will mean that the supply chain flow will be driven by penalties for not meeting demands (based on Missed Delivery Penalties). The Optimizer will focus on meeting the demands at any cost in order to avoid the even higher penalties that are applied for not delivering. This means that the penalties are used to ensure that as many demands as possible are met even when meeting these demands do not result in any profit.
As with the Best Profit criterion, the total supply capacity may not be sufficient for meeting all demands. The prioritization of which demands to meet and which not to meet is also made by the Optimizer. However in this case, it is based on the prioritization defined by differences in the Missed Delivery Penalties (MDP). The demands with the highest MDP's will be met first. This means that if some demands have a higher priority than others, for example, special M3 SCP item groups or special markets, this is the place to set such priorities. In cases where MDP's are equal, prioritization will be based on total cost.
Manual Delivery Decisions
Using either of the two criteria, you let the optimizer decide which demands to fulfill based on costs and/or profit, as described above.
You can, however, influence the prioritization more directly by deciding on minimum deliveries to certain market-item group-bucket combinations. This way you can instruct the optimizer to fulfill certain demands regardless of the delivery prioritization given by the cost, sales price and penalty structure.
One word of caution: Setting minimum deliveries is not a way to increase capacities for the resources in the supply chain. Therefore – be cautious when assigning minimum deliveries. If not all the minimums can be met, the model will not produce a new plan.
By running an optimization on each of the two criteria, the demands that are not profitable can be located. Optimization will also show how much of a profit loss that has to be accepted if the demands have to be met anyway.
When optimization is based on a cost- and profit-oriented supply chain model it will always create the best economic solution possible. The suggested solutions may, however, not always be appropriate when considering the quantities to be produced. The Optimizer will always plan the cheapest production without considering that production gathered in fewer buckets or on fewer production plants might in reality be more suitable. In some situations a more appropriate plan might result if small production quantities from one bucket were moved to earlier buckets or to other production plants where production of the same M3 SCP item group is already being planned.
Small productions can be reduced in two ways:
Manual Reduction of Small Productions
Small productions can be identified by using the Small Productions report. This report can also be used to make manual decisions on how to treat the quantities, for example, to stop the production in a particular bucket. The Optimizer then finds an alternative solution that respects the new decisions that have been taken.
Automatic Reduction of Small Productions
Another way to reduce the number of small productions is to let the Optimizer treat them with Mixed Integer Linear Programming (MILP). This is initiated by the Reduce Small Productions part of the optimization strategy. It works by introducing a fixed price (a penalty) that relates to running a process in a bucket (the Bucket Production Penalty).
Every time a process is run in one bucket, a penalty is incurred. In order to reduce total penalties, the Optimizer will try to decrease the number of small productions by combining them. This does not guarantee that all small productions will be eliminated, since it may not always be physically possible given finite capacities. The Optimizer will try to achieve this by using the Bucket Production Penalty (BPP) parameter and can be instructed to put more or less effort into achieving this goal. The BPP value is multiplied by a factor chosen by the user. This way a higher BPP-factor will make it more attractive for the Optimizer to reduce the number of small productions. For example, production may be drawn further back in time and placed together with other small productions in those buckets.
Each BPP value is calculated based on the Minimum Desired Production Quantity for the process. It is calculated such that it will be beneficial to move this production quantity a single bucket back in time (based on the inventory cost).
To guarantee that production quantities respect the MDPQ quantity, it is possible to introduce the MDPQ as a hard constraint. This way the production in each bucket will be either 0 (zero) or equal to or above the MDPQ. Even if it means that some of the produced items are just put on stock.
Due to an extremely high number of possible solutions, MILP-problems like this one can be very hard to solve in terms of the time it takes to calculate the solution. Because of this, it is strongly recommended that as many decisions as possible are made manually before using this strategy. Each manual decision reduces the solutions calculation time. MILP optimization produces a number of different feasible solutions during optimization. It is possible to break the optimization process at any given time and to use the current best solution for making further decisions.
By default transportation, supply, purchase, inventory and handling costs are represented in M3 SCP using their real values. This makes it possible for the optimization to represent true profit and for the result to be the actual expected profit. All the cost figures can be changed in order to test various simulation scenarios.
This method allows simulating and provides answers to questions such as:
This way, detailed cost changes are used to make what-if sensitivity analyses. For example, an immediate overview of the consequences of the cost changes can be obtained by creating an appropriate set of Scoreboard records.
If you work with fixed costs for opening shifts on the production resources, these costs will by default be linearized. That is, they will be treated as though they were just an addition to the variable costs. To take full advantage of the fixed cost optimization you must activate the ‘Reduce used shifts’ option, which will initiate a MILP optimization, just like ‘Reduce Small Production’. That is, it will take longer time to solve but the solutions will be better.
Cost Multiplication Factors (CMF)
Another way of influencing the costs used in the Optimizer is through the Cost Multiplication Factors (CMF) section in the optimization strategy. The Optimizer will apply these factors as multipliers to the real costs. This will change the relative weight for individual cost types. For example, the Optimizer can be instructed to put an extra effort into minimizing transportation costs (at the expense of higher production, purchase, handling and inventory costs). The Optimizer will then pretend the transportation costs are higher. This can be done, for example, by setting the Transportation CMF to 2. The Optimizer will then prioritize a cost saving of 5 in transportation as just as high as a cost saving of 10 in production.
Using this option may result in solutions that are more realistic than the ones provided by using the real costs directly.
This option can be used to find solutions that get closer to the real situation, rather than using the costs directly. In order to benefit from this option, however, the use of CMF’s has to be based solely on the user’s planning experience. Several iterative simulations and fine-tunings of the factors might be required.
All costs reflected in Scoreboard records and reports will, however, be shown in terms of real costs. They will not be affected by the CMF's.
By default, all safety stock constraints are treated as hard constraints, which means that they can never be violated during the optimization. Even if this requirement makes it impossible to find a feasible solution to the optimization.
To overcome this problem activate the 'Use Safety Stock to Avoid Infeasibility' feature, which allows the optimizer to overrule any safety stock constraint in order to obtain a feasible solution to an otherwise infeasible model. For example, in situations where the initial inventory level is small and the capacity to rebuild to the safety stock level during first bucket is inadequate.
This feature is controlled by penalties like Bucket Production Penalties and Missed Delivery Penalties.
Here the penalties must be significantly larger than the missed delivery penalties for the same items. If they were lower, the optimizer might start fulfilling demands with items from the safety stock, since this would give a ‘cheaper’ penalty than missing deliveries.
However, there might be situations where planning for such safety stock violations is a good idea, because it makes it possible to fulfill demands that otherwise would be missed. This is possible by switching on ‘Use Safety Stock to Avoid Missed Deliveries’. You can specify a general percentage of the safety stock levels that you will allow to be used for demand fulfillment.
This feature is also controlled via penalties. Here the penalties must be significantly larger than the cost of delivering an item the ‘normal’ way and significantly smaller than the Missed Delivery Penalty.
As an addition to the standard formulation of the supply chain model as described above, M3 Supply Chain Planner supports a number of special advanced features for treating demands in a more flexible way.
If there is not enough capacity in the supply chain to meet all demands you could try to use the safety stock and see if this could solve the problem.
Note: This is an alternative to the safety stock penalty approach described in the section above. The differences are that the alternative described here is more difficult to setup but allows you to use safety stock for only a selection of customers and items whereas the penalty approach is easy to use but doesn’t allow selection of customers and items to include.
Alternatively, or as a supplement, it might be applicable to explore postponement of some deliveries.
As a completely different feature, which can be run alone or after one or both of the previous features, you could explore the opportunities hidden in the excess capacity in the supply chain. These three advanced features can only be used one at a time. If you wish to use more than one of the features you must use them in the order described above.
Safety Stock Consumption
This feature allows you to try to solve selected delivery problems by utilizing the safety stock that is built up in the current solution. As much of the solution as possible will be kept as it is, leaving only the options of fulfilling more of the missed deliveries. This can either be accomplished by sending end-items from safety stock directly to the sales node or by producing new end-items from material safety stocks and sending them to the sales node.
Just taking out some safety stock in a bucket would reduce the inventory in all subsequent buckets with the same amount. Therefore the optimizer will try to re-build as much of the safety stock as possible.
This feature allows you to try to solve delivery problems by allowing postponement of selected missed deliveries to subsequent buckets. All non-selected missed deliveries will be kept at their initial values. The postponements are controlled by parameters limiting the quantity of the postponements as well as the maximum postponement time.
This feature allows you to explore how to best use the excess capacity in the supply chain. You can select which demands to find opportunities for and how much the demands should be allowed to increase. Based on these parameters the optimizer will automatically increase demands and deliveries as much as possible to maximize the profit or delivery performance, according to the selected optimization strategy.
Note: it is important not to start opportunity planning with open-ended demand and infinite capacities, because this could make the profit or delivery performance infinite/unbounded. This would make it impossible for the optimizer to produce a new plan.
M3 SCP provides the following standard settings for optimization strategies.
Infinite – The Ideal Plan
All resources are treated as if they have infinite capacity. This means, that the Optimizer will not take resource constraints into account. It will be focused on meeting all demands presupposing that all required resource capacities are either available or more resources can be obtained for the same cost.
The Infinite strategy is primarily used at early stages of supply chain planning. The purpose of this strategy is to uncover the number of deliveries that would be missed due to lead times and small start inventories even though all required resource capacities were available. This is an ideal plan that does not reflect reality. However, it is very useful for highlighting deliveries that will be missed regardless of the actions that might be taken.
Most often it will not be sufficient to go from the Infinite optimization strategy to the Finite directly. The user will have to create a number of user-defined optimization strategies that encompass the stepwise planning process from Infinite to Finite. When changing the capacity on resources from infinite to finite gradually, this allows focused analysis and solving of the currently most important constraints. Refer to Stepwise Planning for more detail about this method.
Finite – The Realistic Plan
All resources are treated as if they have finite capacity. This means, that the Optimizer takes resource constraints into account. This strategy is focused on meeting all demands without considering profit.
This strategy is used as the next – optional – step in the stepwise planning process. It is used to analyze and solve resource constraints that cause missed deliveries. This step does not serve as the final plan. However, it is one of the important steps towards attaining an optimized supply chain plan.
Profit – The Profit-optimized, Realistic Plan
This strategy is similar to Finite, except that the Optimizer takes profit into account. This allows the supply chain flow to be optimized from the point of view of gaining the highest possible profit.
The cost optimization routine usually takes place when missed deliveries and resource constraints have been analyzed and solved/accepted.
MILP – The Realistic Plan incl. Reduction of Small Productions
This strategy calculates all possible solutions and considers all constraints using Mixed Integer Linear Programming (MILP). Refer to The Math behind the Optimizer for more information on MILP.
MILP also includes the Reduce Small Productions function that allows the Optimizer to collect small productions in order to avoid Bucket Production Penalties. And finally it includes the Include used shifts function.
As many manual decisions as possible should be made before using this method, because taking all conditions into account requires lengthy and intricate mathematical calculations.
Each optimized supply chain plan is a result of complex mathematical calculations, based upon Linear Programming (LP) and Mixed Integer Linear Programming (MILP). This is not the appropriate place for discussing these techniques in detail, but a basic knowledge as to how they relate to finding optimal solutions is necessary in order to set advanced optimization parameters sensibly. Linear and integer linear programming has proved valuable for modeling many divergent types of problems in planning, routing, scheduling, assignment, design, etc.
Linear Programming (LP)
In linear programming, the word programming is often used in the same way as the term planning. The importance of linear programming is derived in part from its many applications (for example, M3 SCP benefits from the XPRESS module supplied by Dash) and in part from good reliable techniques for finding optimal solutions. However, an 'optimal' plan based solely on LP should be regarded as a plan that is optimal in a purely mathematical sense rather than a business optimized plan. The mathematically plan will most likely require additional manual decisions.
In M3 SCP you can apply two different, but closely related, optimization algorithms to solve the LPs; a standard simplex algorithm and a dual simplex algorithm. Even though the techniques are very similar, the optimization times can be very different, so in each specific case it is a good idea to try out both algorithms to find the fastest one.
The way that optimization models often work is by controlling behavior through penalties, which then establish priority for certain behaviors. The higher the penalty on something, the less wanted it is. For example, if deliveries are important, then missing a delivery is highly unwanted and therefore a high penalty is attached. Postponing a delivery is also unwanted but not to the same degree as missing a delivery and therefore a smaller penalty is attached. This way the optimizer knows that both occurrences are unwanted but is able to scale the relative degree of 'unwantedness.'
When applying one or more of the built-in features relying on these penalties, it is therefore absolutely crucial for the optimization result that the costs and penalties are defined correctly relative to each other. A basic rule of thumb for the penalty levels is:
Price = standard price/sales price
Use Safety Stock to Avoid Missed Deliveries: 5 * price
Postpone Delivery Penalty 10 -> 990 * price
Missed Delivery Penalty: 1000 * price
Use Safety Stock to Avoid Infeasibility: 10000 * price
Mixed Integer Linear Programming (MILP)
MILP is a combination of integer programming (IP) and LP. While pure IP requires all variables to have integer values (whole numbers), MILP requires only that some of the variables are integers. Integer programs often have the advantage of being more realistic than LP programs. However, they are more difficult to solve in terms of time. It may not be obvious that integer programming is a more difficult type of problem than ordinary linear programming, but this is nonetheless the case in both theory and practice.
The LP is used to find the first 'optimal' solution based on relaxed conditions, which means that integer variables are treated as non-integers.
The MILP takes its starting point in the solution found by the LP. It finds a Best solution that continuously moves closer to the Best bound, where:
All calculations are based on the Cost Function, which reflects the optimization strategy chosen by the user. This is to meet the users specific goal of the supply chain planning process.
The next graphic illustrates the progress of LP and MILP calculations.
The first aim is to find the LP 'optimal' solution. This solution is the origin for the MILP calculations.
The MILP has its starting point from the LP 'optimal' solution. MILP calculates Best bound values continuously until a feasible integer solution is found. Then it continues to find best-bound values for the optimal integer solution. Each time a new solution is found, it gets closer to the best-bound value.
The MILP continues calculations until the best solution meets the best bound, that is, the optimal integer solution is found.
Defining additional optimization parameters can, however, instruct the Optimizer to stop at an earlier stage. This is done using the options Stop, Time Limit or Optimal Solution Threshold. Refer to the field help for Optimizer for more details.