Initializing help system before first use

Example problem: multi-item, multi-period production planning

The company Coco has two plants that can produce two types of cocoa powder. The first factory has a total capacity of 400 tons per month and the second of 500 tons per month. The marketing department has provided estimations for the maximum amount of every product that may be sold in each of the next four months, and also the expected sales prices. Several raw materials are used in the production with known raw material requirements per ton of finished products. Finished products and raw material may be stored at the factories from one tim period to the next, incurring a given cost per ton and per time period. The raw material storage capacity at the factories is limited to 300 tons. How should the two plants be operated during the planning period to maximize the total profit?

Original model

Let PRODS be the set of finished products, FACT the set of factories, RAW the set of raw materials, and TIMES={1,...,NT} the set of time periods under consideration.

We define decision variables makepft representing the quantity of product p made at factory f during time period t. Furthermore, to model the transition from one time period to the next and to account for the different types of cost incurred, we need several other sets of variables: sellpft, the amount of product p sold at factory f in period t; buyrft the amount of raw material r bought at f in t; and finally pstockpft and rstockrft (both defined for t=1,...,NT+1) respectively the amount of product and raw material held in stock at factory f at the beginning of period t.

Let further MXSELLpt be the maximum sales quantity of product p in period t, MXMAKEf the capacity limit of factory f, and MXRSTOCK the raw material storage capacity.

Let IPSTOCKpf be the quantity of product p initially held in stock at factory f and IRSTOCKrf the initial stock level of raw material r. We denote by CPSTOCK and CRSTOCK respectively the unit cost for storing finished product and raw material.

The objective function of maximizing the total profit is to maximize the sales revenues (REVp), minus the cost of production (CMAKEpf), buying raw material (CBUYrt), and storing finished products and raw material.

maximize
p ∈ PRODS
f ∈ FACT
t ∈ TIME
REVpt · sellpft
-
p ∈ PRODS
f ∈ FACT
t ∈ TIME
CMAKEpf · makepft -
r ∈ RAW
f ∈ FACT
t ∈ TIME
CBUYrt · buyrft
-
p ∈ PRODS
f ∈ FACT
NT+1
t =2
CPSTOCK · pstockpft -
r ∈ RAW
f ∈ FACT
NT+1
t =2
CRSTOCK · rstockrft

The possibility to store products between time periods gives rise to three sets of constraints: the inventory balance constraints for finished products (PBalpft) and for raw material (RBalrft), and the limit on the raw material storage capacity (MxRStockft). The stock pstockp,f,t+1 of product p at the beginning of t+1 is given by the stock at the beginning of t plus the production in t reduced by the amount sold on t. The stock rstockr,f,t+1 of raw material r at the beginning of t+1 is given by the corresponding stock at the beginning of t plus the amount bought in t reduced by the quantity used in production during t.

∀ p ∈ PRODS, ∀ f ∈ FACT, ∀ t ∈ TIME: PBalpft:= pstockp,f,t+1 = pstockpft + makepft - sellpft
∀ r ∈ RAW, ∀ f ∈ FACT, ∀ t ∈ TIME:
RBalrft:= rstockr,f,t+1 = rstockrft + buyrft -
p ∈ PRODS
REQpr · makepft
∀ f ∈ FACT, ∀ t ∈ {2,...,NT+1}: MxRStockft:=
r ∈ RAW
rstockrft ≤ MXRSTOCK

We further have two sets of capacity constraints: the production capacity of the factories is limited (constraints MxMakeft) and we can only sell up to a given maximum amount of finished products per time period (constraints MxSellft).

Below the complete mathematical model is given. The initial stock levels (t=1) of finished products and raw material are fixed to the given values.

maximize
p ∈ PRODS
f ∈ FACT
t ∈ TIME
REVpt · sellpft
-
p ∈ PRODS
f ∈ FACT
t ∈ TIME
CMAKEpf · makepft -
r ∈ RAW
f ∈ FACT
t ∈ TIME
CBUYrt · buyrft
-
p ∈ PRODS
f ∈ FACT
NT+1
t =2
CPSTOCK · pstockpft -
r ∈ RAW
f ∈ FACT
NT+1
t =2
CRSTOCK · rstockrft
∀ p ∈ PRODS, ∀ f ∈ FACT, ∀ t ∈ TIME: PBalpft:= pstockp,f,t+1 = pstockpft + makepft - sellpft
∀ r ∈ RAW, ∀ f ∈ FACT, ∀ t ∈ TIME:
RBalrft:= rstockr,f,t+1 = rstockrft + buyrft -
p ∈ PRODS
REQpr · makepft
∀ p ∈ PRODS, ∀ t ∈ TIME: MxSellpt:=
f ∈ FACT
sellpft ≤ MXSELLp
∀ f ∈ FACT, ∀ t ∈ TIME: MxMakeft:=
p ∈ PRODS
makepft ≤ MXMAKEf
∀ f ∈ FACT, ∀ t ∈ {2,...,NT+1}: MxRStockft:=
r ∈ RAW
rstockrft ≤ MXRSTOCK
∀ p ∈ PRODS, ∀ f ∈ FACT: pstockpf1 = IPSTOCKpf
∀ r ∈ RAW, ∀ f ∈ FACT: rstockrf1 = IRSTOCKrf
∀ p ∈ PRODS, ∀ f ∈ FACT, ∀ t ∈ TIME: makepft≥ 0, sellpft≥ 0
∀ r ∈ RAW, ∀ f ∈ FACT, ∀ t ∈ TIME: buyrft ≥ 0
∀ p ∈ PRODS, ∀ f ∈ FACT, ∀ t ∈ {1,...,NT+1}: pstockpft ≥ 0
∀ r ∈ RAW, ∀ f ∈ FACT, ∀ t ∈ {1,...,NT+1}: rstockrft ≥ 0

Problem decomposition

We now decompose the problem described above according to production locations. Notice that this is not the only way of decomposing this problem: we may just as well choose a decomposition by products or by time periods. However, both of these choices result in a larger number of global constraints than the decomposition by factories, meaning that the master problem may become more difficult to solve.

For every factory f we obtain the following subproblem (including the sales limit constraints MxSell in the form of bounds in the submodels is not required, but may lead to better, that is, more exact or faster solutions).

maximize
p ∈ PRODS
t ∈ TIME
REVpt · sellpt
-
p ∈ PRODS
t ∈ TIME
CMAKEp · makept -
r ∈ RAW
t ∈ TIME
CBUYrt · buyrt
-
p ∈ PRODS
NT+1
t =2
CPSTOCK · pstockpt -
r ∈ RAW
NT+1
t =2
CRSTOCK · rstockrt
∀ p ∈ PRODS, ∀ t ∈ TIME: PBalpt:= pstockp,t+1 = pstockpt + makept - sellpt
∀ r ∈ RAW, ∀ t ∈ TIME: RBalrt:= rstockr,t+1 = rstockrt + buyrt -
p ∈ PRODS
REQpr · makept
∀ t ∈ TIME: MxMaket:=
p ∈ PRODS
makept ≤ MXMAKE
∀ t ∈ {2,...,NT+1}: MxRStockt:=
r ∈ RAW
rstockrt ≤ MXRSTOCK
∀ p ∈ PRODS, ∀ t ∈ TIME: MxSellpt:= sellpt ≤ MXSELLp
∀ p ∈ PRODS: pstockp1 = IPSTOCKp
∀ r ∈ RAW: rstockr1 = IRSTOCKr
∀ p ∈ PRODS, ∀ t ∈ TIME: makept≥ 0, sellpt≥ 0
∀ r ∈ RAW, ∀ t ∈ TIME: buyrt ≥ 0
∀ p ∈ PRODS, ∀ t ∈ {1,...,NT+1}: pstockpt ≥ 0
∀ r ∈ RAW, ∀ t ∈ {1,...,NT+1}: rstockrt ≥ 0

The master problem only contains a single set of global constraints, namely the sales limit constraints MxSell (for clarity's sake, the non-negativity constraints are left out here).

maximize
p ∈ PRODS
f ∈ FACT
t ∈ TIME
REVpt · sellpft
-
p ∈ PRODS
f ∈ FACT
t ∈ TIME
CMAKEpf · makepft -
r ∈ RAW
f ∈ FACT
t ∈ TIME
CBUYrt · buyrft
-
p ∈ PRODS
f ∈ FACT
NT+1
t =2
CPSTOCK · pstockpft -
r ∈ RAW
f ∈ FACT
NT+1
t =2
CRSTOCK · rstockrft
∀ p ∈ PRODS, ∀ t ∈ TIME: MxSellpt:=
f ∈ FACT
sellpft ≤ MXSELLp

In the decomposition algorithm, the decision variables in the master problem are expressed via the solutions (proposals) generated by the subproblems, such as

∀ p ∈ PRODS, ∀ f ∈ FACT, ∀ t ∈ TIME: sellpft =
nPROPf
k=1
Prop_sellpftk·weightfk

where Prop_sellpftk stands for the solution value of variable sellpt in the kth proposal generated by subproblem f and Prop_costfk is the objective value this proposal. For every subproblem f we need to add a convexity constraint Convexf on the weightfk variables.

maximize
f ∈ FACT
nPROPf
k=1
Prop_costfk·weightfk
∀ p ∈ PRODS, ∀ t ∈ TIME: MxSellpt:=
f ∈ FACT
nPROPf
k=1
Prop_sellpftk·weightfk ≤ MXSELLp
∀ f ∈ FACT: Convexf:=
nPROPf
k=1
weightfk = 1
∀ f ∈ FACT, ∀ k ∈ 1,...,nPROPf: weightfk≥ 0

We shall refer to this problem as the modified master problem. Without going any further into technical detail we simply remark that a correspondence exists between the solution of the original problem and those of the modified master problem.

© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.