Animal Food Production


    {  Exmpl6.2-1_AnimalFood.mpl  }

    {  Applications of Optimization with Xpress-MP  }

    {  Chapter 6.2,  Animal Food Production,  Size: 13x8,  Page 89 }


TITLE
    AnimalFood;

INDEX
    food  := (granules,powder);
    raw   := (oat,maize,molasses);
    comp  := (protein,lipid,fiber);
    step  := (grinding, blending, granulating,sieving);

DATA
    NutrientComp[raw,comp] := (13.6, 7.1,   7,
                                4.1, 2.4, 3.7,
                                  5, 0.3,  25);
    ReqNutrient[comp] := (9.5, 2, 6);
    RawAvail[raw] := (11900, 23500, 750);
    RawCost[raw] := (0.13, 0.17, 0.12);
    ProdCost[step] := (0.25, 0.05, 0.42, 0.17);
    Demand[food] := (9000,12000);

VARIABLE
    VUse[raw,food];
    Produce[food];

MODEL

    MIN TotCost = SUM(food,raw: VUse * RawCost) + SUM(raw<>molasses,food: ProdCost[step:=grinding] * VUse) +
                  SUM(raw,food: ProdCost[step:=blending] * VUse) + SUM(raw: ProdCost[step:=granulating] * VUse[food:=granules]) +
                  SUM(raw: ProdCost[step:=sieving] * VUse[food:=powder]);


SUBJECT TO

    CalcProd[food] -> CLPD:
        SUM(raw: VUse) = Produce;

    NutrientRequirement[food,comp=protein..lipid] -> NREQ:
        SUM(raw: NutrientComp * VUse) >= ReqNutrient * Produce;

!    NutrientRequirementA[food] -> NREQA:
!        SUM(raw: NutrientComp[comp:=fiber] * VUse) <= ReqNutrient[comp:=fiber] * Produce;

    NutrientRequirementA[food,comp=fiber] -> NREQA:
        SUM(raw: NutrientComp * VUse) <= ReqNutrient * Produce;

    MaterialAvailability[raw] -> RMAT:
        SUM(food: VUse) <= RawAvail;

    MeetDemand[food] -> MDem:
        Produce >= Demand;

END


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