Euing Gas


   {  Exmpl9.2-7_EuingGas.mpl  }

   {  Winston, Operations Research, Applications and Algorithms, 4th ed.  }

   {  Chapter 9.2,  Example 7, Piecewise Linear (MIP),  Size: 5x6,  Page 492  }


TITLE
    EuingGas;

INDEX
    gasoline  := 1..2;
    gasoline2 := gasoline;
    level     := 1..3;
    bpoint    := 1..4;

DATA
    Price[gasoline]   := (12,14);
    CurrentAvail[gasoline] := (500,1000);
    MaxPurchase  := 1500;
    PriceBreak[level] := (25,20,15);
    LowerBreakpoint[level] := (  0,500,1000);
    UpperBreakpoint[bpoint] := (0, 500,1000,1500);
    !MinOilConstituent[
    ExcessCostA[level] := FORMULA(LowerBreakpoint * (PriceBreak[level-1] - PriceBreak[level]));
    ExcessCost[level]  := SUM(level=1..level: ExcessCostA);
    PurchaseCost[bpoint] := FORMULA(UpperBreakpoint * PriceBreak[level:=bpoint-1] + ExcessCost[level:=bpoint-1]);

VARIABLES
    Purchase;
    PartPurchase[bpoint];
    AmntOil[gasoline,gasoline2];

BINARY VARIABLES
    AssignPiecewise[level];

MODEL

    MAX Profit = SUM(gasoline,gasoline2: AmntOil * Price) - SUM(bpoint: PartPurchase * PurchaseCost);

SUBJECT TO

    MaxOil1Usage[gasoline=1] -> OUSG:

        SUM(gasoline2: AmntOil) <= Purchase + CurrentAvail;

    MaxOil2Usage[gasoline=2] -> TUSG:

        SUM(gasoline2: AmntOil) <= CurrentAvail;

    Oil50Constituent[gasoline2=1] -> OCON:

        AmntOil[gasoline:=2] <=  AmntOil[gasoline:=1];

    Oil60Constituent[gasoline2=2] -> OCON:

        0.6 * AmntOil[gasoline:=2] <=  0.4 * AmntOil[gasoline:=1];

    PurchaseCalc -> PrC:

        Purchase = SUM(bpoint: UpperBreakpoint * PartPurchase);

!    PurchasePriceCalc[level] -> PPC:

    !    PurchaseCost = PriceBreak * Purchase + ExcessCost;

    PiecewiseConA[bpoint] -> PCA:

        PartPurchase <= SUM(level: AssignPiecewise WHERE (level=bpoint) OR (level=bpoint-1));

    AssignOneLevel -> AOL:

        SUM(level: AssignPiecewise) = 1;

    AssignOnebpoint -> AOBP:

        SUM(bpoint: PartPurchase) = 1;

END




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