Monday, September 01, 2008

Modeling Limits and Reservations with gATP Product Allocation

Product Allocation (PAL), is the APO tool that enables quota definition for the ATP process. With this tool it is possible, for example, to setup quotas for customers to have more control in the distribution of the stock or plant production capacity. For more on product allocation see here and here.

Although PAL can be used to model quotas for any characteristic in the sales order, here I will use the simple scenario of modeling quotas for customers to highlight two major topics: limits and reservations.

A very standard way of using the PAL tool is to set limits for the quantity a customer can buy in a given time period (for example month). Suppose we have a plant that can make 1000 M3 of material, and we have three main customers (A, B, and C) that every month need 400, 300 and 300 M3. We can define the quotas in a single procedure with a single step (the graphic represents a step and each color in the graphic a characteristic combination in the step).

This means that customer A can take at most 400 M3, but it also means that customer A will have reserved 400 M3 of production capacity, because all others together cannot take more than 600 M3.

This last model works well when there is almost fixed demand. But it does not allow any new customer to place and order and have ATP confirmation. A different scenario for a company with many customers is to model two or three important customers and have some quota for all the others (PAL has a wildcard that represents all the other elements in the set). For example:

Again this model is a both a limit and a reservation of the quantity the customers can get. It works well when the demand is greater than the production capacity, so the result will be equal to the quotas and the excess orders will be rejected or postponed.

Still with this simple model, it is possible to have some interesting variants. Let's suppose the company is interested in putting a limit on the quantity A and B can get in a given month, but it does not want to reserve them capacity. It should be possible for the other customers to take all the capacity. In this case quotas are defined as limits, and for each element we define the limit we want to impose. And for others we give the total plant capacity (this assumes there will be limitations on the ATP product check, or in alternative a new step can be added with the plant capacity constraint).

But there are other common scenarios that this simple model does not represent well. Considering again the last model, let's say customer A is a good customer that usually buys from 200 M3 to 500 M3. The plant wants to reserve 200 M3 of capacity but wants to allow him to allocate up to 600 M3. And for customer B reserve 100 M3 and allow up to 500 M3. This kind of business rule is not modeled adequately by the single step, single procedure model we have been using.

Product allocation modeling is done by a combination of procedures. Each procedure is made of one or several steps and each step has one or several characteristic combinations. These are the modeling building blocks of PAL and they allow a large number of possibilities.

The characteristic combinations are the customers we have been using (A, B and others, for example). The sequence of steps means the PAL check will go to each step in sequence and will use the resulting quantity and date from one step as the input of the next step. On the other hand, when using several procedures the PAL check gets a confirmed quantity from each of the procedures and uses the one that first confirms the requested quantity or the one that allows a larger confirmation.

I usually like to think of the steps as mathematical sets, the characteristics combinations are elements in the set. In this analogy the sequence of steps represent set intersections and the different procedures are set unions.

Getting back to the modeling scenario, if we model each customer in a step, we can set the limit (the customer quota) and also reserve quantity (the difference between the "others" quota and the plant capacity).

For the last example, let's suppose the company just wants to have some minimal capacity reservations (100M3 for customer A and B). The remaining capacity is to be given on first come first served basis. This is better modeled as a sequence of procedures (set union). The first procedure has the capacities for A and B. The system first checks on the first procedure, if quantity is missing it goes to the second procedure, that, in this case has the quantities available for all customers.

Although the documentation only highlights the standard "limits" model definition, with PAL it's possible to design many different allocation strategies.