/* Farmer wheat/corm problem in Picat. From IF/Prolog Constraint manual (cons.pdf) page 31, """ A farmer can grow wheat or corn on his field. Each produces a different yield per unit of area of land but also requires a different amount of time for its care; there is also a limit to the maximum amount of work time. """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. import mip. main => go. go => Area = 100, % total available area WorkTime = 40, % maximum work time OutputCorn = 5/2, % corn yield per unit area OutputWheat = 7/2, % yield per unit area CostsCorn = 1/3, % time spent per unit area for corn CostsWheat = 2/3, % time spent per unit area for wheat % | all_positive([AreaCorn, AreaWheat]), AreaCorn #>= 0, AreaWheat #>= 0, Area #>= AreaCorn + AreaWheat, WorkTime #>= CostsCorn * AreaCorn + CostsWheat * AreaWheat, Output #= AreaCorn * OutputCorn + AreaWheat * OutputWheat, % | linear_maximize(Output, MaxOutput). solve($[max(Output)], Output), println(output=Output), println(area=Area), println(workTime=WorkTime), println(outputCorn=OutputCorn), println(outputWheat=OutputWheat), println(costsCorn=CostsCorn), println(costsWheat=CostsWheat), println(areaCorn=AreaCorn), println(areaWheat=AreaWheat), nl.