TITLE MRP1; INDEX sku := (AJ8172, LQ8811, RN0098, NN1100, WN7342); sku2 := sku; time := (jan1,jan2,jan3,jan4,jan5,jan6,jan7,jan8); DATA Numbertime := count(time); InitialInventory[sku] := (90, 300, 100, 0, 900); Leadtime[sku] := (2, 3, 4, 1, 12); ProdRequire[sku, sku2] := (0, 0, 0, 0, 0, !number of sku2's required to produce a sku 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0); ExtDemand[sku,time] := (20, 30, 10, 20, 30, 20, 30, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Lotsize[sku] := (100, 400, 100, 1, 1000); TimeReverse[time] := FORMULA(Numbertime - time + 1); DECISION VARIABLES Prod[sku,time]; Order[sku,time]; MODEL MIN Obj = SUM(sku,time: TimeReverse * Order); SUBJECT TO MaterialRequirement[sku,time]: SUM(time=1..time-Leadtime: Order) + InitialInventory >= SUM(time=1..time: ExtDemand + SUM(sku2: ProdRequire * Order[sku:=sku2])); LotSize[sku,time]: Order >= Prod * Lotsize; ProductionIndicator[sku,time]: Prod >= Order / 10000; BINARY Prod; END