In the second example above, Demand Site B was able to receive a higher percentage of its demand than Demand Site A, due to the tributary inflow between the two withdrawal points for the two demand sites. In order for WEAP to determine which coverages are constrained from going higher due to unavailability of supply (e.g., 60% for Demand Site A), and which can get more water (e.g., 100% for Demand Site B), a new variable, epsilon, is defined for each demand site and added to the coverage constraints:
CoverageFinal =CoverageDS1 + EpsilonDS1
CoverageFinal =CoverageDS2 + EpsilonDS2
The epsilons are also added to the objective function, but with a negative sign, so that they are minimized.
Maximize: CoverageFinal - k * EpsilonDS1 - k * EpsilonDS2
The values for each epsilon must be between 0 and 0.0001. The value for k is chosen to insure that the values for the epsilons will never overwhelm the value for CoverageFinal. The value chosen is 1 / (n + 1), where n = the number of demand sites.
The effect of the epsilons is to determine which demand sites are supply limited and which are not. In the second example above, here are the values of the variables after the first iteration of the LP:
CoverageDS1 = 0.6
EpsilonDS1 = 0.0001
CoverageDS2 = 0.6001
EpsilonDS2 = 0
CoverageFinal = 0.6001
Objective function = 0.6001 - (1/3) * 0.0001 - (1/3) * 0 = 0.60006666
Because EpsilonDS1 = 0, we know that DS1 cannot get any more water than 0.6. Assume DS1 could get more than 0.6, say 0.6001. In that case, the following values
CoverageDS1 = 0.6001
EpsilonDS1 = 0.0001
CoverageDS2 = 0.6001
EpsilonDS2 = 0.0001
CoverageFinal = 0.6002
Objective function = 0.6002 - (1/3) * 0.0001 - (1/3) * 0.0001 = 0.60013333
would yield a better value for the objective function and hence would have been the solution. Therefore, DS1 cannot get more than 0.6, while DS2 can get more than 0.6.