Multi-Period Scheduling
{ Exmpl1-5_MultiPeriodProdSched.mpl }
{ Roy D. Shapiro, Optimization Models for Planning and Allocation }
{ Chapter 1, Example 5, Multi-Period Scheduling, Size: 72x74, Page 28 }
TITLE
MultiPeriodProdScheduling;
INDEX
month := 1..12;
DATA
Demand[month] := (3800, 4100, 4700, 5900, 7200, 7900,
6700, 5100, 5300, 6400, 5800, 4800);
ProductionCost := 100;
InventoryCost := 7;
LaborCost := 1600;
HiringCost := 300;
LayoffCost := 500;
StockOutCost := 500;
RecordersPerDay := 8;
AssemblyCapacity := 7000;
MaxNewWorkers := 50;
MaxLayoffPercent := 10%;
InitInventory := 750;
InitWorkforce := 500;
VARIABLES
Produce[month] -> P;
Inventory[month=1..13] -> I;
Workers[month=0..12] -> W;
Hired[month] -> H;
LaidOff[month] -> L;
StockOut[month]
MACROS
TotalProductionCost = SUM(month: ProductionCost * Produce);
TotalInventoryCost = SUM(month: InventoryCost * 1/2 (Inventory + Inventory[month+1]));
TotalLaborCost = SUM(month: LaborCost * Workers);
TotalHiringCost = SUM(month: HiringCost * Hired);
TotalLayoffCost = SUM(month: LayoffCost * LaidOff);
TotalStockOutCost = SUM(month: StockOutCost * StockOut);
MODEL
MIN TotalCost = TotalProductionCost
+ TotalInventoryCost
+ TotalLaborCost
+ TotalHiringCost
+ TotalLayoffCost
+ TotalStockOutCost;
SUBJECT TO
InventoryBalance[month]:
Produce + Inventory - Inventory[month+1] + StockOut = Demand;
WorkforceLimit[month]:
Produce <= RecordersPerDay * Workers;
AssemblyLimit[month]:
Produce <= AssemblyCapacity;
WorkforceBalance[month]:
Workers = Workers[month-1] + Hired - LaidOff;
MaxHired[month]:
Hired <= MaxNewWorkers;
MaxLaidOff[month]:
LaidOff <= MaxLayoffPercent * Workers[month-1];
BOUNDS
Inventory[month=1] = InitInventory;
Workers[month=0] = InitWorkforce;
END
Back To Top
|
Maximal Home Page
|
List of Models |
Previous Page
|
Next Page