Multiperiod Steel Production


    {  Exmpl6.3-1_MultiPeriod.mpl  }

    {  AMPL A Modeling Language for Mathematical Programming, 2nd Edition }

    {  Chapter 6.5,  Multi-period Production Planning,  Size: 14x38  Page 101 }


TITLE
    MultiPeriod;

INDEX
    t := 0..4;
    prod   := (bands,coils);
    areas  := (east,north,west,exporta);
    area[prod,areas] := ((bands,east),(bands,north),(coils,east),(coils,west),(coils,exporta));

DATA
    Avail[t>0]     := (40,20,32,40);
    Rate[prod]     := (200,140);
    InitInv[prod]  := (10, 0);
    Prodcost[prod] := (10,11);
    InvCost[prod]  := (2.5,  3);
    Revenue[prod,areas,t>0] := (  25,  26,  27,  27,
                                26.5,27.5,  28,28.5,
                                   0,   0,   0,   0,
                                   0,   0,   0,   0,
                                  30,  35,  37,  39,
                                   0,   0,   0,   0,
                                  29,  32,  33,  35,
                                  25,  25,  25,  28);
    Market[prod,areas,t>0]  := (2000,2000,1500,2000,
                                4000,4000,2500,4500,
                                   0,   0,   0,   0,
                                   0,   0,   0,   0,
                                1000, 800,1000,1100,
                                   0,   0,   0,   0,
                                2000,1200,2000,2300,
                                1000, 500, 500, 800);

VARIABLE
    Make[prod,t>0];
    Inv[prod,t];
    Sell[prod,areas IN area,t>0];

MODEL

    MAX TotalProfit = SUM(prod,t>0: SUM(areas in area: Revenue * Sell - Prodcost * Make - InvCost * Inv));

SUBJECT TO

    Timing[t>0] -> TIM:
         SUM(prod: 1 / Rate * Make) <= Avail;

    InitInventoryBal[prod] -> IBAL:
         Inv[t:=0] = InitInv;

    Balance[prod,t>0] -> BAL:
         Make + Inv[t-1] = SUM(areas IN area: Sell) + Inv;

BOUNDS
    Sell <= Market;
END


Back To Top | Maximal Home Page | List of Models | Previous Page | Next Page