MPL Model Library MPL Model Library Save-It Company, Example 3.4-4b, Hillier and Lieberman { Exmpl3.4-4b_SaveItComp.mpl } { Hillier and Lieberman, Introduction to Operations Research, 7th ed. } { Chapter 3.4, Example 4b, Blending Material, Size: 26x19, Page 53 } { Alternative formulation for the same model, adds summary variables } TITLE SaveItCompany; INDEX grade := (A, B, C); material := 1..4; GradeMat[grade,material] := (A,1, A,2, A,3, A,4, B,1, B,2, B,4, C,1); DATA MinMixSpecs[grade,material] := [A, 1, 0%, A, 2, 40%, A, 3, 0%, A, 4, 20%, B, 1, 0%, B, 2, 10%, B, 4, 10%, C, 1, 0%]; MaxMixSpecs[grade,material] := [A, 1, 30%, A, 2, 0%, A, 3, 50%, A, 4, 20%, B, 1, 50%, B, 2, 0%, B, 4, 10%, C, 1, 70%]; AmalgamationCost[grade] := (3.00, 2.50, 2.00); SellingPrice[grade] := (8.50, 7.00, 5.50); MaterialAvail[material] := (3000, 2000, 4000, 1000); TreatmentCost[material] := (3.00, 6.00, 4.00, 5.00); MinimumTreated := 0.5; TreatmentCashAvail := 30000; VARIABLES ProduceGrade[grade]; MaterialUsed[material]; MixMaterial[grade, material]; MACROS TotalRevenues = SUM(grade: SellingPrice * ProduceGrade); TotalAmalCost = SUM(grade: AmalgamationCost * ProduceGrade); MODEL MAX TotalProfit = TotalRevenues - TotalAmalCost; SUBJECT TO GradeProd[grade] : ProduceGrade = SUM(material: MixMaterial); MatUse[material] : MaterialUsed[material] = SUM(grade: MixMaterial); MinMixtureSpecs[grade, material] WHERE (MinMixSpecs > 0) -> MinMix: MixMaterial >= MinMixSpecs * ProduceGrade; MaxMixtureSpecs[grade, material] WHERE (MaxMixSpecs > 0) -> MaxMix: MixMaterial <= MaxMixSpecs * ProduceGrade; MaterialLimit[material] -> MatLim: MaterialUsed <= MaterialAvail; ReqAmountTreated[material] -> ReqTr: MaterialUsed >= MinimumTreated * MaterialAvail; TreatCostRestrict -> TreatCst: SUM(material: TreatmentCost * MaterialUsed) = TreatmentCashAvail; END Return to MPL Model Library