Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Water resource systems are characterized by multiple interdependent components that together produce multiple economic, environmental, ecological, and social impacts. As discussed in the previous chapter, planners and managers working toward improving the design and performance of these complex systems must identify and evaluate alternative designs and operating policies, comparing their predicted performance with desired goals or objectives. Typically, this identification and evaluation process is accomplished with the aid of optimization and simulation models . While optimization methods are designed to provide preferred values of system design and operating policy variables—values that will lead to the highest levels of system performance—they are often used to eliminate the clearly inferior options. Using optimization for a preliminary screening followed by more detailed and accurate simulation is the primary way we have, short of actually building physical models, of estimating effective system designs and operating policies. This chapter introduces and illustrates the art of optimization model development and use in analyzing water resources systems. The models and methods introduced in this chapter are extended in subsequent chapters.

4.1 Introduction

This chapter introduces some optimization modeling approaches for identifying ways of satisfying specified goals or objectives. The modeling approaches are illustrated by their application to some relatively simple water resources planning and management problems. The purpose here is to introduce and compare some commonly used optimization methods and approaches. This is not a text on the state of the art of optimization modeling. More realistic and more complex problems usually require much bigger and more complex models than those developed and discussed in this chapter, but these bigger and more complex models are often based on the principles and techniques introduced here.

The emphasis here is on the art of model development—just how one goes about constructing and solving optimization models that will provide information useful for addressing and perhaps even solving particular problems. It is unlikely anyone will ever use any of the specific models developed in this or other chapters simply because the specific examples used to illustrate the approach to model development and solution will not be the ones they face. However, it is quite likely water resource managers and planners will use these modeling approaches and solution methods to analyze a variety of water resource systems. The particular systems modeled and analyzed here, or any others that could have been used, can be the core of more complex models needed to analyze more complex problems in practice.

Water resources planning and management today is dominated by the use of optimization and simulation models . Computer software is becoming increasingly available for solving various types of optimization and simulation models. However, no software currently exists that will build models of particular water resource systems. What and what not to include and assume in models requires judgment, experience, and knowledge of the particular problems being addressed, the system being modeled and the decision-making environment—including what aspects can be changed and what cannot. Understanding the contents of this and following chapters and performing the suggested exercises at the end of each chapter can only be a first step toward gaining some judgment and experience in model development .

Before proceeding to a more detailed discussion of optimization , a review of some methods of dealing with time streams of economic incomes or costs (engineering economics) may be useful. Those familiar with this subject that is typically covered in applied engineering economics courses can skip this next section.

4.2 Comparing Time Streams of Economic Benefits and Costs

All of us make decisions that involve future benefits and costs. The extent to which we value future benefits or costs compared to present benefits or costs is reflected by what is called a discount rate . While economic criteria are only one aspect of everything we consider when making decisions, they are often among the important ones. Economic evaluation methods involving discount rates can be used to consider and compare alternatives characterized by various benefits and costs that are expected to occur now and in the future. This section offers a quick and basic review of the use of discount rates that enable comparisons of alternative time series of benefits and costs. Many economic optimization models incorporate discount rates in their economic objective functions.

Engineering economic methods typically focus on the comparison of a discrete set of mutually exclusive alternatives (only one of which can be selected) each characterized by a time series of benefits and costs. Using various methods involving the discount rate, the time series of benefits and costs are converted to a single net benefit that can be compared with other such net benefits in order to identify the one that is best. The values of the decision variables (e.g., the design and operating policy variable values) are known for each discrete alternative being considered. For example, consider again the tank design problem presented in the previous chapter. Alternative tank designs could be identified, and then each could be evaluated, on the basis of cost and perhaps other criteria as well. The best would be called the optimal one, at least with respect to the objective criteria used and the discrete alternatives being considered.

The optimization methods introduced in the following sections of this chapter extend those engineering economics methods. Some methods are discrete, some are continuous. Continuous optimization methods, such as the model defined by Eqs. 3.13.3 in Sect. 3.2 of the previous chapter can identify the “best” tank design directly without having to identify and compare numerous discrete, mutually exclusive alternatives. Just how such models can be solved will be discussed later in this chapter. For now, consider the comparison of alternative discrete plans p having different benefits and costs over time.

Let the net benefit generated at the end of time period t by plan p be designated simply as B p(t). Each plan is characterized by the time stream of net benefits it generates over its planning period T p.

$$ \{ B^{\text{p}} (1),B^{\text{p}} (2),B^{\text{p}} (3), \ldots ,B^{\text{p}} (T_{\text{p}}) $$
(4.1)

Clearly, if in any time period t the benefits exceed the costs, then \( B^{\text{p}} (t) > 0 \); and if the costs exceed the benefits, \( B^{\text{p}} (t) < 0 \). This section defines two ways of comparing different benefit, cost or net-benefit time streams produced by different plans perhaps having different planning period durations T p.

4.2.1 Interest Rates

Fundamental to the conversion of a time series of incomes and costs to an equivalent single value, so that it can be compared to other equivalent single values of other time series, is the concept of the time value of money. From time to time, individuals, private corporations, and governments need to borrow money to do what they want to do. The amount paid back to the lender has two components: (1) the amount borrowed and (2) an additional amount called interest . The interest amount is the cost of borrowing money, of having the money when it is loaned compared to when it is paid back. In the private sector the interest rate, the added fraction of the amount owed that equals the interest, is often identified as the marginal rate of return on capital . Those who have money, called capital, can either use it themselves or they can lend it to others, including banks, and receive interest. Assuming people with capital invest their money where it yields the largest amount of interest, consistent with the risk they are willing to take, most investors should be receiving at least the prevailing interest rate as the return on their capital.

Any interest earned by an investor or paid by a debtor depends on the size of the loan, the duration of the loan, and the interest rate . The interest rate includes a number of considerations. One is the time value of money (a willingness to pay something to obtain money now rather than to obtain the same amount later). Another is the risk of losing capital (not getting the full amount of a loan or investment returned at some future time). A third is the risk of reduced purchasing capability (the expected inflation over time). The greater the risks of losing capital or purchasing power, the higher the interest rate compared to the rate reflecting only the time value of money in a secure and inflation-free environment.

4.2.2 Equivalent Present Value

To compare projects or plans involving different time series of benefits and costs, it is often convenient to express these time series as a single equivalent value. One way to do this is to convert each amount in the time series to what it is worth today, its present worth, that is, a single value at the present time. This present worth will depend on the prevailing interest rate in each future time period. Assuming a value V 0 is invested at the beginning of a time period, e.g., a year, in a project or a savings account earning interest at a rate r per period, then at the end of the period the value of that investment is (1 + r)V 0.

If one invests an amount V 0 at the beginning of period t = 1 and at the end of that period immediately reinvests the total amount (the original investment plus interest earned), and continues to do this for n consecutive periods at the same period interest rate r, the value, V n , of that investment at the end of n periods would be

$$ V_{n} = V_{0} \left( {1 + r} \right)^{n} $$
(4.2)

This results from \( V_{1} = V_{0} /\left( {1 + r} \right) \) at the end of period 1, \( V_{2} = V_{1} / ( {1 + r} ) = V_{0} ( {1 + r} )^{2} \) at the end of period 2, and so on until at the end of period n.

The initial amount V 0 is said to be equivalent to V n at the end of n periods. Thus the present worth or present value , V 0, of an amount of money V n at the end of period n is

$$ V_{0} = V_{n} / \left( {1 + r} \right)^{n} $$
(4.3)

Equation 4.3 is the basic compound interest discounting relation needed to determine the present value at the beginning of period 1 (or end of period 0) of net benefits V n that accrue at the end of n time periods .

The total present value of the net benefits generated by plan p, denoted \( V_{0}^{\text{p}} \), is the sum of the values of the net benefits V p(t) accrued at the end of each time period t times the discount factor for that period t. Assuming the interest or discount rate r in the discount factor applies for the duration of the planning period, i.e., from t = 1 to t = T p.

$$ V_{0}^{\text{p}} = \sum\limits_{{t = 1,T_{\text{p}} }} {V^{\text{p}} (t)/\left( {1 + r} \right)^{t} } $$
(4.4)

The present value of the net benefits achieved by two or more plans having the same economic planning horizons T p can be used as an economic basis for plan selection. If the economic lives or planning horizons of projects differ, then the present value of the plans may not be an appropriate measure for comparison and plan selection. A valid comparison of alternative plans using present values is possible if all plans have the same planning horizon or if funds remaining at the end of the shorter planning horizon are invested for the remaining time up until the longer planning horizon at the same interest rate r.

4.2.3 Equivalent Annual Value

If the lives of various plans differ, but the same plans will be repeated on into the future, then one need to only compare the equivalent constant annual net benefits of each plan. Finding the average or equivalent annual amount V p is done in two steps. First, one can compute the present value, \( V_{0}^{\text{p}} \), of the time stream of net benefits, using Eq. 4.4. The equivalent constant annual benefits, V p, all discounted to the present must equal the present value, \( V_{0}^{\text{p}} \).

$$ V_{0}^{\text{p}} = \sum\limits_{{t = 1,T_{\text{p}} }} {V^{\text{p}} /\left( { 1+ r} \right)^{t} } \quad {\text{or}}\quad V^{\text{p}} = V_{0}^{\text{p}} /\sum\limits_{{t = 1,T_{\text{p}} }} {1/\left( { 1+ r} \right)^{t} } $$
(4.5)

Using a little algebra the average annual end-of-year benefits V p of the project or plan p is

$$ V^{\text{p}} = V_{0}^{\text{p}} \left[ {r( 1 { } + r)^{{T_{\text{p}} }} } \right]/\left[ {( 1 { } + r)^{{T_{\text{p}} }} - 1} \right] $$
(4.6)

The capital recovery factor CRF n is the expression \( \left[ {r( 1 { } + r)^{{T_{\text{p}} }} } \right]/\left[ {( 1 { } + r)^{{T_{\text{p}} }} - 1} \right] \) in Eq. 4.6 that converts a fixed payment or present value \( V_{0}^{\text{p}} \) at the beginning of the first time period into an equivalent fixed periodic payment V p at the end of each time period. If the interest rate per period is r and there are n periods involved, then the capital recovery factor is

$$ {\text{CRF}}_{n} = \left[ {r(1 + r)^{n} } \right]/\left[ {( 1+ r)^{n} - 1} \right] $$
(4.7)

This factor is often used to compute the equivalent annual end-of-year cost of engineering structures that have a fixed initial construction cost C 0 and annual end-of-year operation, maintenance, and repair (OMR) costs. The equivalent uniform end-of-year total annual cost , TAC, equals the initial cost times the capital recovery factor plus the equivalent annual end-of-year uniform OMR costs .

$$ {\text{TAC}} = {\text{CRF}}_{n} \, C_{0} + {\text{OMR}} $$
(4.8)

For private investments requiring borrowed capital, interest rates are usually established, and hence fixed, at the time of borrowing. However, benefits may be affected by changing interest rates, which are not easily predicted. It is common practice in benefit–cost analyses to assume constant interest rates over time, for lack of any better assumption.

Interest rates available to private investors or borrowers may not be the same rates that are used for analyzing public investment decisions. In an economic evaluation of public -sector investments, the same relationships are used even though government agencies are not generally free to loan or borrow funds on private money markets. In the case of public-sector investments, the interest rate to be used in an economic analysis is a matter of public policy; it is the rate at which the government is willing to forego current benefits to its citizens in order to provide benefits to those living in future time periods . It can be viewed as the government’s estimate of the time value of public monies or the marginal rate of return to be achieved by public investments.

These definitions and concepts of engineering economics are applicable to many of the problems faced in water resources planning and management. Each of the equations above is applicable to discrete alternatives whose decision variables (investments over time) are known. The equations are used to identify the best alternative from a set of mutually exclusive alternatives whose decision variable values are known. More detailed discussions of the application of engineering economics are contained in numerous texts on the subject. In the next section, we introduce methods that can identify the best alternative among those whose decision variable values are not known. For example, engineering economic methods can identify, for example, the most cost-effective tank from among those whose dimension values have been previously selected. The optimization methods that follow can identify directly the values of the dimensions of most cost-effective tank.

4.3 Nonlinear Optimization Models and Solution Procedures

Constrained optimization involves finding the values of decision variables given specified relationships that have to be satisfied. Constrained optimization is also called mathematical programming. Mathematical programming techniques include calculus-based Lagrange multipliers and various methods for solving linear and nonlinear models including dynamic programming, quadratic programming, fractional programming, and geometric programming, to mention a few. The applicability of each of these as well as other constrained optimization procedures is highly dependent on the mathematical structure of the model that in turn is dependent on the system being analyzed. Individuals tend to construct models in a way that will allow them to use a particular optimization technique they think is best. Thus, it pays to be familiar with various types of optimization methods since no one method is best for all optimization problems. Each has its strengths and limitations. The remainder of this chapter introduces and illustrates the application of some of the most common constrained optimization techniques used in water resources planning and management.

Consider a river from which diversions are made to three water-consuming firms that belong to the same corporation, as illustrated in Fig. 4.1. Each firm makes a product. Water is needed in the process of making that product, and is the critical resource. The three firms can be denoted by the index j = 1, 2, and 3 and their water allocations by x j . Assume the problem is to determine the allocations x j of water to each of three firms (j = 1, 2, 3) that maximize the total net benefits, \( \sum\nolimits_{j} {{\text{NB}}_{j}(x_{j} )} \), obtained from all three firms. The total amount of water available is constrained or limited to a quantity of Q.

Fig. 4.1
figure 1

Three water-using firms obtain water from a river. The amounts x j allocated to each firm j will depend on the river flow Q

Assume the net benefits, NB j (x j ), derived from water x j allocated to each firm j, are defined by

$$ {\text{NB}}_{1} (x_{1} ) = 6x_{ 1} - \, x_{1}^{2} $$
(4.9)
$$ {\text{NB}}_{2} (x_{2} ) = {7 x}_{2} - 1.5x_{2}^{2} $$
(4.10)
$$ {\text{NB}}_{3} (x_{3} ) = 8x_{3} - 0.5x_{3}^{2} $$
(4.11)

These are concave functions exhibiting decreasing marginal net benefits with increasing allocations . These functions look like hills, as illustrated in Fig. 4.2.

Fig. 4.2
figure 2

Concave net benefit functions for three water users, j, and their slopes at allocations x j

4.3.1 Solution Using Calculus

Calculus can be used to find the allocations that maximize each user’s net benefits, simply by finding where the slope or derivative of the net benefit function for each firm equals zero. The derivative, dNB(x 1)/dx 1, of the net benefit function for Firm 1 is (6 − 2x 1) and hence the allocation to Firm 1 that maximizes its net benefits would be 6/2 or 3. The corresponding allocations for Firms 2 and 3 are 2.33 and 8, respectively. The total amount of water desired by all firms is the sum of each firm’s desired allocation, or 13.33 flow units. However, suppose only 8 units of flow are available for all three firms and 2 units must remain in the river. Introducing this constraint renders the previous solution infeasible. In this case we want to find the allocations that maximize the total net benefits obtained from all firms subject to having only 6 flow units available for allocations. Using simple calculus will not suffice.

4.3.2 Solution Using Hill Climbing

One approach for finding, at least approximately, the particular allocations that maximize the total net benefit derived from all firms in this example is an incremental steepest-hill-climbing method. This method divides the total available flow Q into increments and allocates each successive increment so as to get the maximum additional net benefit from that incremental amount of water. This procedure works in this example because each of the net benefit functions is concave; in other words, the marginal benefits decrease as the allocation increases. This procedure is illustrated by the flow diagram in Fig. 4.3.

Fig. 4.3
figure 3

Steepest hill-climbing approach for finding allocation of a flow Q max to the three firms, while meeting minimum river flow requirements R

Table 4.1 lists the results of applying the procedure shown in Fig. 4.3 to the problem when (a) only 8 and (b) only 20 flow units are available. Here a minimum river flow of 2 is required and is to be satisfied, when possible, before any allocations are made to the firms.

Table 4.1 Hill-climbing iterations for finding allocations that maximize total net benefit given a flow of Q max and a required (minimum) streamflow of R = 2

The hill-climbing method illustrated in Fig. 4.3 and Table 4.1 assigns each incremental flow ΔQ to the use that yields the largest additional (marginal ) net benefit. An allocation is optimal for any total flow Q when the marginal net benefits from each nonzero allocation are equal, or as close to each other as possible given the size of the increment ΔQ. In this example, with a ΔQ of 1 and Q max of 8, it just happens that the marginal net benefits associated with each allocation are all equal (to 4). The smaller the ΔQ, the more precise will be the optimal allocations in each iteration, as shown in the lower portion of Table 4.1, where ΔQ approaches 0.

Based on the allocations derived for various values of available water Q, as shown in Table 4.1, an allocation policy can be defined. For this problem, the allocation policy that maximizes total net benefits for any particular value of Q is shown in Fig. 4.4.

Fig. 4.4
figure 4

Water-allocation policy that maximizes total net benefits derived from all three water-using firms

This hill-climbing approach leads to optimal allocations only if all of the net benefit functions whose sum is being maximized are concave: that is, the marginal net benefits decrease as the allocation increases. Otherwise, only a local optimum solution can be guaranteed. This is true using any calculus-based optimization procedure or algorithm.

4.3.3 Solution Using Lagrange Multipliers

4.3.3.1 Approach

As an alternative to hill-climbing methods , consider a calculus-based method involving Lagrange multipliers . To illustrate this approach, a slightly more complex water-allocation example will be used. Assume that the benefit, B j (x j ), each water-using firm receives is determined, in part, by the quantity of product it produces and the price per unit of the product that is charged. As before, these products require water and water is the limiting resource. The amount of product produced, p j , by each firm j is dependent on the amount of water, x j , allocated to it.

Let the function P j (x j ) represent the maximum amount of product, p j , that can be produced by firm j from an allocation of water x j . These are called production functions. They are typically concave: as x j increases the slope, dP j (x j )/dx j , of the production function, P j (x j ), decreases. For this example, assume the production functions for the three water-using firms are

$$ P_{1} (x_{1} ) = 0.4(x_{1} )^{0.9} $$
(4.12)
$$ P_{2} (x_{2} ) = 0.5(x_{2} ) ^{0.8} $$
(4.13)
$$ P_{3} (x_{3} ) = 0.6(x_{3} )^{0.7} $$
(4.14)

Next consider the cost of production. Assume the associated cost of production can be expressed by the following convex functions :

$$ C_{1} = 3(P_{1} (x_{1} ))^{1.3} $$
(4.15)
$$ C_{2} = 5(P_{2} (x_{2} ))^{1.2} $$
(4.16)
$$ C_{3} = 6(P_{3} (x_{3} ))^{1.15} $$
(4.17)

Each firm produces a unique patented product, and hence it can set and control the unit price of its product. The lower the unit price, the greater the demand and thus the more each firm can sell. Each firm has determined the relationship between the unit price and the amount that will be demanded and sold. These are the demand functions for that product. These unit price or demand functions are shown in Fig. 4.5, where the p j s are the amounts of each product produced. The vertical axis of each graph is the unit price. To simplify the problem we are assuming linear demand functions, but this assumption is not a necessary condition.

Fig. 4.5
figure 5

Unit prices that will guarantee the sale of the specified amounts of products p j produced in each of the three firms (linear functions are assumed in this example for simplicity)

The optimization problem is to find the water allocations, the production levels, and the unit prices that together maximize the total net benefit obtained from all three firms. The water allocations plus the amount that must remain in the river, R, cannot exceed the total amount of water Q available.

Constructing and solving a model of this problem for various values of Q, the total amount of water available, will define the three allocation policies as functions of Q. These policies can be displayed as a graph, as in Fig. 4.4, showing the three best allocations given any value of Q. This of course assumes the firms can adjust to varying allocations. In reality this may not be the case (Chapter 9 examines this problem using more realistic benefit functions that reflect the degree to which firms can adapt to changing inputs over time.)

The model:

$$ {\text{Maximize Net}}{\_}{\text{benefit}} $$
(4.18)

Subject to

Definitional constraints :

$$ {\text{Net}}{\_}{\text{benefit}} = {\text{Total}}{\_}{\text{return}} - {\text{Total}}{\_}{\text{cost}} $$
(4.19)
$$ {\text{Total}}\_{\text{return}} = \left( { 1 2 { } - p_{ 1} } \right)p_{ 1} + \left( { 20 \, - 1. 5p_{ 2} } \right)p_{ 2} + \left( { 2 8- 2. 5p_{ 3} } \right)p_{ 3} $$
(4.20)
$$ {\text{Total}}{\_}{\text{cost}} = \, 3(p_{1} )^{1.30} + 5(p_{2} )^{1.20} + 6(p_{3} )^{1.15} $$
(4.21)

Production functions defining the relationship between water allocations x j and production p j

$$ p_{1} = 0.4(x_{1} )^{0.9} $$
(4.22)
$$ p_{2} = 0.5(x_{2} )^{0.8} $$
(4.23)
$$ p_{3} = 0.6(x_{3} )^{0.7} $$
(4.24)

Water-allocation restriction

$$ R + x_{1} + x_{2} + x_{3} = Q $$
(4.25)

One can first solve this model for the values of each p j that maximize the total net benefits , assuming water is not a limiting constraint. This is equivalent to finding each individual firm’s maximum net benefits, assuming all the water that is needed is available. Using calculus we can equate the derivatives of the total net benefit function with respect to each p j to 0 and solve each of the resulting three independent equations:

$$ \begin{aligned} {\text{Total}}\,{\text{Net}}\_{\text{benefit}} & = \left[\left( { 1 2 { } - p_{ 1} } \right)p_{ 1} + \left( { 20 - 1. 5p_{ 2} } \right)p_{2} + \left( { 2 8- 2. 5p_ 3} \right)p_{ 3} \right] \\ & \quad - \left[3\left( {p_{ 1} } \right)^{ 1. 30} + { 5(}p_{2} )^{ 1. 20} + { 6(}p_{3} )^{ 1. 1 5} \right] \\ \end{aligned} $$
(4.26)

Derivatives:

$$ {\partial} ({\text{Net}}\_{\text{benefit}}\text{)}/{\partial }p_{ 1} = 0 = 1 2- 2p_{ 1} - 1. 3 ( 3 )p_{1}^{0.3} $$
(4.27)
$$ {\partial (}{\text{Net}}\_{\text{benefit}}\text{)}/{\partial }p_{2} = 0 = 2 0- 3p_{2} - 1.2 ( 5 )p_{2}^{0.2} $$
(4.28)
$$ {\partial }\left( {{\text{Net}}\_{\text{benefit}}} \right)/{\partial }p_{ 3} = 0 = 2 8- 5p_{ 3} - 1. 1 5 ( 6 )p_{3}^{0.15} $$
(4.29)

The result (rounded off) is p 1 = 3.2, p 2 = 4.0, and p 3 = 3.9 to be sold for unit prices of 8.77, 13.96, and 18.23, respectively, for a maximum net revenue of 155.75. This would require water allocations x 1 = 10.2, x 2 = 13.6, and x 3 = 14.5, totaling 38.3 flow units. Any amount of water less than 38.3 will restrict the allocation to, and hence the product production at, one or more of the three firms.

If the total available amount of water is less than that desired, constraint Eq. 4.25 can be written as an equality, since all the water available, less any that must remain in the river, R, will be allocated. If the available water supplies are less than the desired 38.3 plus the required streamflow R, then Eqs. 4.224.25 need to be added. These can be rewritten as equalities since they will be binding. Equation 4.25 in this case can always be an equality since any excess water will be allocated to the river, R.

To consider values of Q that are less than the desired 38.3 units, constraints 4.224.25 can be included in the objective function, Eq. 4.26, once the right-hand side has been subtracted from the left-hand side so that they equal 0. We set this function equal to L.

$$ \begin{aligned} L & = \left[ {\left( {12 - p_{1} } \right)p_{1} + \left( {20 - 1.5p_{2} } \right)p_{2 } + \left( {28 - 2.5p3} \right)p_{3} } \right] \\ & \quad - \left[ {3(p_{1} )^{1.30} + 5\left( {p_{2} } \right)^{1.20} + 6(p_{3} )^{1.15} } \right] \\ & \quad - \lambda_{1} \left[ {p_{1} - 0.4(x_{1} )^{0.9} } \right] - \lambda_{2} \left[ {p_{2} - 0.5(x_{2} )^{0.8} } \right] \\ & \quad - \lambda_{3} \left[ {p_{3} - 0.6(x_{3} )^{0.7} } \right] - \lambda_{4} \left[ {R + x_{1} + x_{2} + x_{3} - Q} \right] \\ \end{aligned} $$
(4.30)

Since each of the four constraint Eqs. 4.224.25 included in Eq. 4.30 equals zero, each can be multiplied by a variable λ i without changing the value of Eq. 4.30, or equivalently, Eq. 4.26. These unknown variables λ i are called the Lagrange multipliers of constraints i. The value of each multiplier , λ i , is the marginal value of the original objective function, Eq. 4.26, with respect to a change in the value of the amount produced, p, or in the case of constraint Eq. 4.25, the amount of water available, Q. We will show this shortly.

Differentiating Eq. 4.30 with respect to each of the ten unknowns and setting the resulting equations to 0 yields :

$$ {\partial }L/{\partial }p_{ 1} = 0 = 1 2- 2p_{ 1} - 1. 3 ( 3 )p_{1}^{0.3} - \lambda_{1} $$
(4.31)
$$ \partial L/ \partial p_{ 2} = 0 = 20 - 3p_{ 2} - 1. 2 ( 5 )p_{2}^{0.2} - \lambda_{2} $$
(4.32)
$$ \partial L/\partial p_{ 3} = 0 = 2 8- 5p_{ 3} - 1. 1 5 ( 6 )p_{3}^{0.15} - \lambda_{3} $$
(4.33)
$$ \partial L/ \partial x_{ 1} = 0 = \lambda_{1} 0.9(0.4)x_{1}^{-0.1} - \uplambda_{4} $$
(4.34)
$$ \partial L/\partial x_{ 2} = 0 = \lambda_{2} 0. 8\left( {0. 5} \right)x_{2}^{ - 0.2} - \uplambda_{ 4} $$
(4.35)
$$ \partial L/\partial x_{ 3} = 0 = \lambda_{3} 0. 7 ( 0. 6 )x_{3}^{ - 0.3} - \uplambda_{ 4} $$
(4.36)
$$ \partial L/\partial \lambda_{1} = 0 = {p}_{ 1} - 0. 4 (x_{1} )^{0. 9} $$
(4.37)
$$ \partial L/\partial \lambda_{2} = 0 = p_{ 2} - 0. 5(x_{ 2} )^{0.8} $$
(4.38)
$$ \partial L/\partial \lambda_{3} = 0 = p_{ 3} - 0. 6(x_{ 3} )^{0.7} $$
(4.39)
$$ \partial L/\partial \lambda_{4} = 0 = R + x_{ 1} + x_{ 2} + x_{ 3} - Q $$
(4.40)

These ten equations are the conditions necessary for a solution that maximizes Eq. 4.30, or equivalently 4.26. They can be solved to obtain the values of the ten unknown variables. The solutions to these equations for various values of Q, (found in this case using LINGO) are shown in Table 4.2. (A free demo version of LINGO can be obtained (downloaded) from www.LINDO.com.)

Table 4.2 Solutions to Eqs. 4.314.40

4.3.3.2 Meaning of Lagrange Multiplier λ

In this example, Eq. 4.30 is the objective function that is to be maximized. It is maximized or minimized by equating to zero each of its partial derivatives with respect to each unknown variable. Equation 4.30 consists of the original net benefit function plus each constraint i multiplied by a weight or multiplier λ i . This equation is expressed in monetary units. The added constraints are expressed in other units: either the quantity of product produced or the amount of water available. Thus the units of the weights or multipliers λ i associated with these constraints are expressed in monetary units per constraint units. In this example, the multipliers λ 1, λ 2, and λ 3 represent the change in the total net benefit value of the objective function (Eq. 4.26) per unit change in the products p 1, p 2, and p 3 produced. The multiplier λ 4 represents the change in the total net benefit per unit change in the water available for allocation, Q − R.

Note in Table 4.2 that as the quantity of available water increases, the marginal net benefits decrease. This is reflected in the values of each of the multipliers, λ i . In other words, the net revenue derived from a quantity of product produced at each of the three firms, and from the quantity of water available, is a concave function of those quantities, as illustrated in Fig. 4.2.

To review the general Lagrange multiplier approach and derive the definition of the multipliers, consider the general constrained optimization problem containing n decision variables x j and m constraint equations i.

$$ {\text{Maximize}}\;({\text{or minimize)}}\,F({\varvec{X}}) $$
(4.41)

subject to constraints

$$ g_{i} (\varvec{X}) = {b}_{i} \quad {i} = 1, 2, 3, \ldots ,{m}, $$
(4.42)

where X is the vector of all x j . The Lagrange function L(X, λ) is formed by combining Eq. 4.42, each equaling zero, with the objective function of Eq. 4.41.

$$ L(\varvec{X},\varvec{\lambda}) = F\left( \varvec{X} \right) - \sum\limits_{i} {\lambda_{i} } \left( {g_{i} \left( \varvec{X} \right) - b_{i} } \right) $$
(4.43)

Solutions of the equations ∂L/∂x j  = 0 for all decision variables x j and ∂L/∂λ i  = 0 for all constraints g i are possible local optima .

There is no guarantee that a global optimum solution will be found using calculus-based methods such as this one. Boundary conditions need to be checked. Furthermore, since there is no difference in the Lagrange multipliers procedure for finding a minimum or a maximum solution, one needs to check whether in fact a maximum or minimum is being obtained. In this example, since each net benefit function is concave, a maximum will result.

The meaning of the values of the multipliers λ i at the optimum solution can be derived by manipulation of ∂L/∂λ i  = 0. Taking the partial derivative of the Lagrange function, Eq. 4.43, with respect to an unknown variable x j and setting it to zero results in

$$ \partial L/\partial x_{j} = 0 = \partial F/\partial x_{j} - \sum\limits_{i} {\lambda_{i} \partial \left( {g_{i} \left( \varvec{X} \right)} \right)/\partial x_{j} } $$
(4.44)

Multiplying each term by ∂x j yields

$$ \partial F = \, \sum\limits_{i} {\lambda_{i} \partial \left( {g_{i} \left( \varvec{X} \right)} \right)} $$
(4.45)

Dividing each term by ∂b k associated with a particular constraint, say k, defines the meaning of λ k .

$$ \partial F/ \partial b_{k} = \sum\limits_{i} {\lambda_{i} \partial (g_{i} (\varvec{X}))/\partial b_{k} = \lambda_{k} } $$
(4.46)

Equation 4.46 follows from the fact that \( \partial (g_{i} ({\mathbf{X}}))/\partial b_{k} \) equals 0 for constraints i ≠ k and equals 1 for the constraint i = k. The latter is true since b i  = g i (X) and thus ∂(g i (X)) = ∂b i .

From Eq. 4.46, each multiplier λ i is the marginal change in the original objective function F(X) with respect to a change in the constant b i associated with the constraint i. For nonlinear problems, it is the slope of the objective function plotted against the value of b i .

Readers can work out a similar proof if a slack or surplus variable, S i , is included in inequality constraints to make them equations. For a less-than-or-equal constraint g i (X) ≤ b i a squared slack variable \( S_{i}^{2} \) can be added to the left-hand side to make it an equation \( g_{i} (X) + S_{i}^{2} = b_{i} \). For a greater-than-or-equal constraint g i (X) ≥ b i a squared surplus variable \( S_{i}^{2} \) can be subtracted from the left-hand side to make it an equation \( g_{i} (X) - S_{i}^{2} = b_{i} \). These slack or surplus variables are squared to ensure they are nonnegative, and also to make them appear in the differential equations .

$$ \partial L/\partial S_{i} = 0 =- 2S_{i} \lambda_{i} = S_{i} \lambda_{i} $$
(4.47)

Equation 4.47 shows that either the slack or surplus variable, S, or the multiplier, λ, will always be zero. If the value of the slack or surplus variable S is nonzero, the constraint is redundant. The optimal solution will not be affected by the constraint. Small changes in the values, b, of redundant constraints will not change the optimal value of the objective function F(X). Conversely, if the constraint is binding, the value of the slack or surplus variable S will be zero. The multiplier λ can be nonzero if the value of the function F(X) is sensitive to the constraint value b.

The solution of the set of partial differential Equations Eqs. 4.47 often involves a trial-and-error process, equating to zero a λ or a S for each inequality constraint and solving the remaining equations, if possible. This tedious procedure, along with the need to check boundary solutions when nonnegativity conditions are imposed, detracts from the utility of classical Lagrange multiplier methods for solving all but relatively simple water resources planning problems.

4.4 Dynamic Programming

The water-allocation problems in the previous section assumed a net-benefit function for each water-using firm. In those examples, these functions were continuous and differentiable, a convenient attribute if methods based on calculus (such as hill-climbing or Lagrange multipliers ) are to be used to find the best solution. In many practical situations, these functions may not be so continuous, or so conveniently concave for maximization or convex for minimization, making calculus-based methods for their solution difficult.

A possible solution method for constrained optimization problems containing continuous and/or discontinuous functions of any shape is called discrete dynamic programming. Each decision variable value can assume one of a set of discrete values. For continuous valued objective functions, the solution derived from discrete dynamic programming may therefore be only an approximation of the best one. For all practical purposes this is not a significant limitation, especially if the intervals between the discrete values of the decision variables are not too large and if simulation modeling is used to refine the solutions identified using dynamic programming.

Dynamic programming is an approach that divides the original optimization problem, with all of its variables, into a set of smaller optimization problems, each of which needs to be solved before the overall optimum solution to the original problem can be identified. The water supply allocation problem, for example, needs to be solved for a range of water supplies available to each firm. Once this is done the particular allocations that maximize the total net benefit can be determined.

4.4.1 Dynamic Programming Networks and Recursive Equations

A network of nodes and links can represent each discrete dynamic programming problem. Dynamic programming methods find the best way to get to, or go from, any node in that network. The nodes represent possible discrete states of the system that can exist and the links represent the decisions one could make to get from one state (node) to another. Figure 4.6 illustrates a portion of such a network for the three-firm allocation problem shown in Fig. 4.1. In this case the total amount of water available, Q − R, to all three firms is 10.

Fig. 4.6
figure 6

A network representing some of the possible integer allocations of water to three water-consuming firms j assuming 10 units of water are available. The circles or nodes represent the discrete quantities of water available to users not yet allocated any water, and the links represent feasible allocation decisions x j to the next firm j

Thus, dynamic programming models involve states, stages, and decisions. The relationships among states, stages, and decisions are represented by networks , such as that shown in Fig. 4.6. The states of the system are the nodes and the values of the states are the numbers in the nodes. Each node value in this example is the quantity of water available to allocate to all remaining firms, that is, to all connected links to the right of the node. These state variable values typically represent some existing condition either before making, or after having made, a decision. The stages of the system are the different components (e.g., firms) or time periods . Links between (or connecting) initial and final states represent decisions. The links in this example represent possible allocation decisions for each of the three different firms. Each stage is a separate firm. Each state is an amount of water that remains to be allocated in the remaining stages.

Each link connects two nodes, the left node value indicating the state of a system before a decision is made, and the right node value indicating the state of a system after a decision is made. In this case, the state of the system is the amount of water available to allocate to the remaining firms.

In the example shown in Fig. 4.6, the state and decision variables are represented by integer values—an admittedly fairly coarse discretization. The total amount of water available, in addition to the amount that must remain in the river, is 10. Note from the first row of Table 4.2 the exact allocation solution is x 1 = 1.2, x 2 = 3.7, and x 3 = 5.1. Normally, we would not know this solution before solving for it using dynamic programming, but since we do we can reduce the complexity (number of nodes and links) of the dynamic programming network so that the repetitive process of finding the best solution is clearer. Thus assume the range of x 1 is limited to integer values from 0 to 2, the range of x 2 is from 3 to 5, and the range of x 3 is from 4 to 6. These range limits are imposed here just to reduce the size of the network . In this case, these assumptions will not affect or constrain the optimal integer solution. If we did not make these assumptions the network would have, after the first column of one node, three columns of 11 nodes, one representing each integer value from 0 to 10. Finer (noninteger) discretizations would involve even more nodes and connecting links.

The links of Fig. 4.6 represent the water allocations . Note that the link allocations, the numbers on the links, cannot exceed the amount of water available, that is, the number in the left node of the link. The number in the right node is the quantity of water remaining after an allocation has been made. The value in the right node, state S j+1, at the beginning of stage j + 1, is equal to the value in the left node, S j , less the amount of water, x j , allocated to firm j as indicated on the link. Hence, beginning with a quantity of water S 1 that can be allocated to all three firms, after allocating x 1 to Firm 1 what remains is S 2:

$$ S_{1} - x_{1} = S_{2} $$
(4.48)

Allocating x 2 to Firm 2, leaves S 3.

$$ S_{2} - x_{2} = S_{3} $$
(4.49)

Finally, allocating x 3 to Firm 3 leaves S 4.

$$ S_{3} - x_{3} = S_{4} $$
(4.50)

Figure 4.6 shows the different values of each of these states, S j , and decision variables x j beginning with a quantity S 1 = Q − R = 10. Our task is to find the best path through the network, beginning at the leftmost node having a state value of 10. To do this we need to know the net benefits we will get associated with all the links (representing the allocation decisions we could make) at each node (state) for each firm (stage).

Figure 4.7 shows the same network as in Fig. 4.6; however the numbers on the links represent the net benefits obtained from the associated water allocations. For the three firms j = 1, 2, and 3, the net benefits, NB j (x j ), associated with allocations x j are

Fig. 4.7
figure 7

Network as in Fig. 4.6 representing integer value allocations of water to three water-consuming firms. The circles or nodes represent the discrete quantities of water available, and the links represent feasible allocation decisions. The numbers on the links indicate the net benefits obtained from these particular integer allocation decisions

$$ \begin{aligned} {\text{NB}}_{ 1} \left( {x_{ 1} } \right) & = {\text{maximum}}\left( { 1 2- p_{ 1} } \right)p_{ 1} - 3\left( {p_{ 1} } \right)^{ 1. 30} \\ & {\text{where}}\,p_{1} \le 0.4(x_{1} )^{0.9} \\ \end{aligned} $$
(4.51)
$$ \begin{aligned} {\text{NB}}_{ 2} \left( {x_{ 2} } \right) & = {\text{maximum}}\left( { 20 - 1. 5p_{ 2} } \right)p_{ 2} - 5\left( {p_{ 2} } \right)^{ 1. 20} \\ & {\text{where}}\,p_{ 2} \le 0. 5\left( {x_{ 2} } \right)^{0. 8} \\ \end{aligned} $$
(4.52)
$$ \begin{aligned} {\text{NB}}_{ 3} \left( {x_{ 3} } \right) & = {\text{maximum}}\left( { 2 8- 2. 5p_{ 3} } \right)p_{ 3} - 6\left( {p_{ 3} } \right)^{ 1. 1 5} \\ & {\text{where}}\,p_{ 3} \le 0. 6\left( {x_{ 3} } \right)^{0.7} \\ \end{aligned} $$
(4.53)

The discrete dynamic programming algorithm or procedure is a systematic way to find the best path through this network, or any other suitable network. What makes a network suitable for dynamic programming is the fact that all the nodes can be lined up in a sequence of vertical columns and each link connects a node in one column to another node in the next column of nodes. No link passes over or through any other column(s) of nodes. Links also do not connect nodes in the same column. In addition, the contribution to the overall objective value (in this case, the total net benefits) associated with each discrete decision (link) in any stage or for any firm is strictly a function of the allocation of water to the firm. It is not dependent on the allocation decisions associated with other stages (firms) in the network .

The main challenge in using discrete dynamic programming to solve an optimization problem is to structure the problem so that it fits this dynamic programming network format. Perhaps surprisingly, many water resources planning and management problems do. But it takes practice to become good at converting optimization problems to networks of states, stages, and decisions suitable for solution by discrete dynamic programming algorithms.

In this problem the overall objective is to

$$ {\text{Maximize}}\quad \sum\limits_{j} {{\text{NB}}_{j} (x_{j} )} , $$
(4.54)

where NB j (x j ) is the net benefit associated with an allocation of x j to firm j. Equations 4.514.53 define these net benefit functions. As before, the index j represents the particular firm, and each firm is a stage for this problem. Note that the index or subscript used in the objective function often represents an object (like a water-using firm) at a place in space or a time period. These places or time periods are called the stages of a dynamic programming problem. Our task is to find the best path from one stage to the next: in other words, the best allocation decisions for all three firms.

Dynamic programming can be viewed as a multistage decision-making process. Instead of deciding all three allocations in one single optimization procedure, like Lagrange multipliers , the dynamic programming procedure divides the problem up into many optimization problems, one for each possible discrete state (e.g., for each node representing an amount of water available) in each stage (e.g., for each firm). Given a particular state S j and stage j—that is, a particular node in the network—what decision (link) x j will result in the maximum total net benefits , designated as F j (S j ), given this state S j for this and all remaining stages or firms j, j + 1, j + 2 … ? This question must be answered for each node in the network before one can find the overall best set of decisions for each stage: in other words, the best allocations to each firm (represented by the best path through the network ) in this example.

Dynamic programming networks can be solved in two ways—beginning at the most right column of nodes or states and moving from right to left, called the backward-moving (but forward-looking) algorithm, or beginning at the leftmost node and moving from left to right, called the forward-moving (but backward-looking) algorithm. Both methods will find the best path through the network. In some problems, however, only the backward-moving algorithm produces a useful solution. We will revisit this issue when we get to reservoir operation where the stages are time periods.

4.4.2 Backward-Moving Solution Procedure

Consider the network in Fig. 4.7. Again, the nodes represent the discrete states—water available to allocate to all remaining users. The links represent particular discrete allocation decisions. The numbers on the links are the net benefits obtained from those allocations. We want to proceed through the node-link network from the state of 10 at the beginning of the first stage to the end of the network in such a way as to maximize total net benefits. But without looking at all combinations of successive allocations we cannot do this beginning at a state of 10. However, we can find the best solution if we assume we have already made the first two allocations and are at any of the nodes or states at the beginning of the final, third, stage with only one allocation decision remaining. Clearly at each node representing the water available to allocate to the third firm, the best decision is to pick the allocation (link) having the largest net benefits.

Denoting F 3(S 3) as the maximum net benefits we can achieve from the remaining amount of water S3, then for each discrete value of S 3 we can find the x 3 that maximizes F 3(S 3). Those shown in Fig. 4.7 include:

$$ \begin{aligned} F_{ 3} \left( 7\right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 3} \left( {x_{ 3} } \right)} \right\} \\ & x_{3} \le 7,\,{\text{the}}\,{\text{total}}\,{\text{flow}}\,{\text{available}} .\\ & 4\le x_{3} \le 6,\,{\text{the}}\,{\text{allowable}}\,{\text{range}}\,{\text{of}}\,{\text{allocations}} \\ & {\text{ = Maximum}}\left\{ {27.9,31.1,33.7} \right\} = 33.7\,{\text{when}}\,x_{3} = 6 \\ \end{aligned} $$
(4.55)
$$ \begin{aligned} F_{ 3} \left( 6\right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 3} \left( {x_{ 3} } \right)} \right\} \\ & \quad x_{3} \le 6 \\ & \quad 4 \le x_{3} \le 6 \\ & = {\text{Maximum}}\left\{ {27.9,31.1,33.7} \right\} = 33.7\,{\text{when}}\,x_{3} = 6 \\ \end{aligned} $$
(4.56)
$$ \begin{aligned} F_{ 3} \left( 5\right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 3} \left( {x_{ 3} } \right)} \right\} \\ & \quad x_{3} \le 5 \\ & \quad 4 \le x_{3} \le 6 \\ & = {\text{Maximum}}\left\{ {27.9,\,31.1} \right\} = 31.1\,{\text{when}}\,x_{3} = 5 \\ \end{aligned} $$
(4.57)
$$ \begin{aligned} F_{ 3} \left( 4 \right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 3} \left( {x_{ 3} } \right)} \right\} \\ & \quad x_{3} \le 4 \\ & \quad 4 \le x_{3} \le 6 \\ & = {\text{Maximum}}\left\{ {27.9} \right\} = 27.9\;{\text{when}}\;x_{3} = 4 \\ \end{aligned} $$
(4.58)

These computations are shown on the network in Fig. 4.8. Note that there are no benefits to be obtained after the third allocation, so the decision to be made for each node or state prior to allocating water to Firm 3 is simply that which maximizes the net benefits derived from that last (third) allocation. In Fig. 4.8 the links representing the decisions or allocations that result in the largest net benefits are shown with arrows.

Fig. 4.8
figure 8

Using the backward-moving dynamic programming method for finding the maximum remaining net benefits , F j (S j ), and optimal allocations (denoted by the arrows on the links) for each state in Stage 3, then for each state in Stage 2 and finally for the initial state in Stage 1 to obtain the allocation policy that maximizes total net benefits, F 1(10). The minimum flow to remain in the river, R, is in addition to the ten units available for allocation and is not shown in this network

Having computed the maximum net benefits, F 3(S 3), associated with each initial state S 3 for Stage 3, we can now move backward (to the left) to the discrete states S 2 at the beginning of the second stage. Again, these states represent the quantity of water available to allocate to Firms 2 and 3. Denote F 2(S 2) as the maximum total net benefits obtained from the two remaining allocations x 2 and x 3 given the quantity S 2 water available. The best x 2 depends not only on the net benefits obtained from the allocation x 2 but also on the maximum net benefits obtainable after that, namely the just-calculated F 3(S 3) associated with the state S 3 that results from the initial state S 2 and a decision x 2. As defined in Eq. 4.49, this final state S 3 in Stage 2 obviously equals S 2 − x 2. Hence for those nodes at the beginning of Stage 2 shown in Fig. 4.8:

$$ \begin{aligned} F_{ 2} \left( {10} \right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + F_{3} \left( {S_{3} = 10 - x_{2} } \right)} \right\} \\ & \quad x_{2} \le 10 \\ & \quad 3 \le x_{2} \le 5 \\ & = {\text{Maximum}} \{ 15.7 + 33.7,18.6 \\ & \quad + 33.7,21.1 + 31.1 \} = 52.3\;{\text{when}}\;x_{2} = 4 \\ \end{aligned} $$
(4.59)
$$ \begin{aligned} F_{ 2} \left( 9 \right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + F_{3} \left( {S_{3} = 9 - x_{2} } \right)} \right\} \\ & \quad x_{2} \le 9 \\ & \quad 3 \le x_{2} \le 5 \\ & = {\text{Maximum}} \{ 15.7 + 33.7, 18.6 \\ & \quad + 31.1, 21.1 + 27.9\} = 49.7 \\ & \qquad {\text{when}}\;\;x_{2} = 4 \\ \end{aligned} $$
(4.60)
$$ \begin{aligned} F_{ 2} \left( 8 \right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + F_{3} \left( {S_{3} = 8 - x_{2} } \right)} \right\} \\ & \quad x_{2} \le 8 \\ & \quad 3 \le x_{2} \le 5 \; ( {\text{assume}}\,4\,{\text{instead}}\,{\text{of}}\,5\,{\text{since}}\,{\text{both}}\\ & \qquad {\text{will}}\,{\text{not}}\,{\text{affect}}\,{\text{optimal}}\,{\text{solution}} ) \\ & = {\text{Maximum}} \{ 15.7 + 31.1,18.6 \\ & \quad + 27.9\} = 46.8\quad {\text{when}}\;\;x_{2} = 3 \\ \end{aligned} $$
(4.61)

These maximum net benefit functions, F 2(S 2), could be calculated for the remaining discrete states from 7 to 0.

Having computed the maximum net benefits obtainable for each discrete state at the beginning of Stage 2, that is, all the F 2(S 2) values, we can move backward or left to the beginning of Stage 1. For this beginning stage there is only one state, the state of 10 we are actually in before making any allocations to any of the firms. In this case, the maximum net benefits, F 1(10), we can obtain from given 10 units of water available, is

$$ \begin{aligned} F_{1} \left( {10} \right) & = {\text{Maximum}}\left\{ {{\text{NB}}_{1} \left( {x_{1} } \right) + F_{2} \left( {S_{2} = 10 - x_{1} } \right)} \right\} \\ & \quad x_{1} \le 10 \\ & \quad 0 \le x_{1} \le 2 \\ & = {\text{Maximum}} \{ 0 + 52.3,3.7 \\ & \quad + 49.7,6.3 + 46.8\} = 53.4\quad {\text{when}}\;\;x_{1} = 1 \\ \end{aligned} $$
(4.62)

The value of F 1(10) in Eq. 4.62 is the same as the value of Eq. 4.54. This value is the maximum net benefits obtainable from allocating the available 10 units of water. From Eq. 4.62 we know that we will get a maximum of 53.4 net benefits if we allocate 1 unit of water to Firm 1. This leaves 9 units of water to allocate to the two remaining firms. This is our optimal state at the beginning of Stage 2. Given a state of 9 at the beginning of Stage 2, we see from Eq. 4.60 that we should allocate 4 units of water to Firm 2. This leaves 5 units of water for Firm 3. Given a state of 5 at the beginning of Stage 3, Eq. 4.57 tells us we should allocate all 5 units to Firm 3. All this is illustrated in Fig. 4.8.

Compare this discrete solution with the continuous one defined by Lagrange multipliers as shown in Table 4.2. The exact solution, to the nearest tenth, is 1.2, 3.7, and 5.1 for x 1, x 2, and x 3, respectively. The solution just derived from discrete dynamic programming that assumed only integer allocation values is 1, 4, and 5, respectively.

To summarize, a dynamic programming model was developed for the following problem:

$$ {\text{Maximize}}\,{\text{Net}}\_{\text{benefit}} $$
(4.63)

Subject to

$$ {\text{Net}}\_{\text{benefit}} = {\text{Total}}\_{\text{return}} - {\text{Total}}\_{\text{cost}} $$
(4.64)
$$ \begin{aligned} {\text{Total}}\_{\text{return}} & = \left( {12 - p_{1} } \right)p_{1} + \left( {20 - 1.5p_{2} } \right){\text{p}}_{2} \\ & \quad + \left( {28 - 2.5p_{3} } \right)p_{3} \\ \end{aligned} $$
(4.65)
$$ {\text{Total}}\_{\text{cost}} = 3\left( {p_{ 1} } \right)^{ 1. 30} + 5\left( {p_{ 2} } \right)^{ 1. 20} + 6\left( {p_{ 3} } \right)^{ 1. 1 5} $$
(4.66)
$$ p_{ 1} \le 0. 4\left( {{x}_{ 1} } \right)^{0. 9} $$
(4.67)
$$ p_{ 2} \le 0. 5\left( {x_{ 2} } \right)^{0. 8} $$
(4.68)
$$ p_{ 3} \le 0. 6\left( {x_{ 3} } \right)^{0. 7} $$
(4.69)
$$ x_{ 1} + x_{ 2} + x_{ 3} \le 10 $$
(4.70)

The discrete dynamic programming version of this problem required discrete states S j representing the amount of water available to allocate to firms j, j + 1, …. It required discrete allocations x j . Next it required the calculation of the maximum net benefits , F j (S j ), that could be obtained from all firms j, beginning with Firm 3, and proceeding backward as indicated in Eqs. 4.714.73.

$$ \begin{aligned} F_{ 3} \left( {S_{ 3} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{ 3} \left( {x_{ 3} } \right)} \right\}\,{\text{over}}\,{\text{all}}\,x_{ 3} \le S_{ 3} , \\ & \quad {\text{for}}\,{\text{all}}\,{\text{discrete}}\,S_{ 3} \,{\text{values}}\,{\text{between}}\,0\,{\text{and}}\, 10 \\ \end{aligned} $$
(4.71)
$$ \begin{aligned} F_{ 2} \left( {S_{ 2} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + F_{ 3} \left( {S_{ 3} } \right)} \right\} \\ & \quad {\text{over}}\,{\text{all}}\,x_{ 2} \le S_{ 2} \,{\text{and}}\,S_{ 3} = S_{ 2} - x_{ 2} ,\quad 0 \le S_{ 2} \le 10 \\ \end{aligned} $$
(4.72)
$$ \begin{aligned} F_{ 1} \left( {S_{ 1} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{ 1} \left( {x_{ 1} } \right) + F_{ 2} \left( {S_{ 2} } \right)} \right\} \\ & \quad {\text{over}}\,{\text{all}}\,x_{ 1} \le S_{ 1} \,{\text{and}}\,S_{ 2} = S_{ 1} - x_{ 1} \,{\text{and}}\,S_{ 1} = 10 \\ \end{aligned} $$
(4.73)

The values of each NB j (x j ) are obtained from Eqs. 4.51 to 4.53.

To solve for F 1(S 1) and each optimal allocation x j we must first solve for all values of F 3(S 3). Once these are known we can solve for all values of F 2(S 2). Given these F 2(S 2) values, we can solve for F 1(S 1). Equations 4.71 need to be solved before Eqs. 4.72 can be solved, and Eqs. 4.72 need to be solved before Eqs. 4.73 can be solved. They need not be solved simultaneously, and they cannot be solved in reverse order. These three equations are called recursive equations. They are defined for the backward-moving dynamic programming solution procedure.

There is a correspondence between the nonlinear optimization model defined by Eqs. 4.634.70 and the dynamic programming model defined by the recursive Eqs. 4.714.73. Note that F 3(S 3) in Eq. 4.71 is the same as

$$ F_{ 3} \left( {S_{ 3} } \right) = {\text{Maximum}}\;\;{\text{NB}}_{ 3} \left( {x_{ 3} } \right) $$
(4.74)

Subject to

$$ x_{ 3} \le S_{ 3}, $$
(4.75)

where NB3(x 3) is defined in Eq. 4.53.

Similarly, F 2(S 2) in Eq. 4.72 is the same as

$$ F_{ 2} \left( {S_{ 2} } \right) = {\text{Maximum}}\,{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + {\text{NB}}_{ 3} \left( {x_{ 3} } \right) $$
(4.76)

Subject to

$$ x_{2} + x_{3} \le S_{2}, $$
(4.77)

where NB2(x 2) and NB3(x 3) are defined in Eqs. 4.52 and 4.53.

Finally, F 1(S 1) in Eq. 4.73 is the same as

$$ F_{ 1} \left( {S_{ 1} } \right) = {\text{Maximum}}\,{\text{NB}}_{ 1} \left( {x_{ 1} } \right) + {\text{NB}}_{ 2} \left( {x_{ 2} } \right) + {\text{NB}}_{ 3} \left( {x_{ 3} } \right) $$
(4.78)

Subject to

$$ x_{ 1} + x_{ 2} + x_{ 3} \le S_{ 1} = 10, $$
(4.79)

where NB1(x 1), NB2(x 2), and NB3(x 3) are defined in Eqs. 4.514.53.

Alternatively, F 3(S 3) in Eq. 4.71 is the same as

$$ F_{ 3} \left( {S_{ 3} } \right) = {\text{Maximum}}\left( { 2 8- 2. 5p_{ 3} } \right)p_{ 3} - 6\left( {p_{ 3} } \right)^{ 1. 1 5} $$
(4.80)

Subject to

$$ p_{ 3} \le 0. 6\left( {x_{ 3} } \right)^{0. 7} $$
(4.81)
$$ x_{ 3} \le S_{ 3} $$
(4.82)

Similarly, F 2(S 2) in Eq. 4.72 is the same as

$$ \begin{aligned} F_{ 2} \left( {S_{ 2} } \right) & = {\text{Maximum}}\left( { 20 - 1. 5p_{ 2} } \right)p_{ 2} \\ & \quad + \left( { 2 8- 2. 5p_{ 3} } \right)p 3- 5\left( {p 2} \right)^{ 1. 20} - 6\left( {p 3} \right)^{ 1. 1 5} \\ \end{aligned} $$
(4.83)

Subject to

$$ p_{ 2} \le 0. 5\left( {x_{ 2} } \right)^{0.8} $$
(4.84)
$$ p_{ 3} \le 0. 6\left( {x_{ 3} } \right)^{0.7} $$
(4.85)
$$ x_{ 2} + x_{ 3} \le S_{ 2} $$
(4.86)

Finally, F 1(S 1) in Eq. 4.73 is the same as

$$ \begin{aligned} F_{ 1} \left( {S_{ 1} } \right) & = {\text{Maximum}} \left( { 1 2 - p_{ 1} } \right)p_{ 1} \\ & \quad + \left( { 20 - 1. 5p_{ 2} } \right)p_{ 2} + \left( { 2 8 - 2.5p_{3}} \right)p_{3}\\ & \quad - \left[ { 3\left( {p_{ 1} } \right)^{ 1. 30} + { 5}\left( {p_{ 2} } \right)^{ 1. 20} + { 6}\left( {p_{ 3} } \right)^{ 1. 1 5} } \right] \\ \end{aligned} $$
(4.87)

Subject to

$$ p_{ 1} \le 0. 4\left( {x_{ 1} } \right)^{0. 9} $$
(4.88)
$$ p_{ 2} \le 0. 5\left( {x_{ 2} } \right)^{0. 8} $$
(4.89)
$$ p_{ 3} \le 0. 6\left( {x_{ 3} } \right)^{0.7} $$
(4.90)
$$ x_{ 1} + x_{ 2} + x_{ 3} \le S_{1} = 10 $$
(4.91)

The transition function of dynamic programming defines the relationship between two successive states S j and S j+1 and the decision x j . In the above example, these transition functions are defined by Eqs. 4.484.50, or, in general terms for all firms j, by

$$ S_{j + 1} = S_{j} - x_{j} $$
(4.92)

4.4.3 Forward-Moving Solution Procedure

We have just described the backward-moving dynamic programming algorithm. In that approach at each node (state) in each stage we calculated the best value of the objective function that can be obtained from all further or remaining decisions. Alternatively one can proceed forward, that is, from left to right, through a dynamic programming network . For the forward-moving algorithm at each node we need to calculate the best value of the objective function that could be obtained from all past decisions leading to that node or state. In other words, we need to find how best to get to each state S j+1 at the end of each stage j.

Returning to the allocation example, define f j (S j+1) as the maximum net benefits from the allocation of water to firms 1, 2, …, j, given the remaining water, state S j+1. For this example, we begin the forward-moving, but backward-looking, process by selecting each of the ending states in the first stage j = 1 and finding the best way to have arrived at (or to have achieved) those ending states. Since in this example there is only one way to get to each of those states, as shown in Fig. 4.7 or Fig. 4.8 the allocation decisions, x 1, given a value for S 2 are obvious.

$$ \begin{aligned} f_{ 1} \left( {S_{ 2} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{ 1} \left( {x_{ 1} } \right)} \right\} \\ & \quad x_{ 1} = 10 - S_{ 2} \\ \end{aligned} $$
(4.93)

Hence, f 1(S 2) is simply NB1(10 − S 2). Once the values for all f 1(S 2) are known for all discrete S 2 between 0 and 10, move forward (to the right) to the end of Stage 2 and find the best allocations x 2 to have made given each final state S 3.

$$ \begin{aligned} f_{ 2} \left( {S_{ 3} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{ 2} \left( {x_{ 2} } \right) + f_{ 1} \left( {S_{ 2} } \right)} \right\} \\ & \quad 0 \le x_{ 2} \le 10 - S_{ 3} \\ & \quad S_{ 2} = S_{ 3} + x_{ 2} \\ \end{aligned} $$
(4.94)

Once the values of all f 2(S 3) are known for all discrete states S 3 between 0 and 10, move forward to Stage 3 and find the best allocations x 3 to have made given each final state S 4.

$$ \begin{aligned} f_{3} \left( {S_{4} } \right) & = {\text{maximum}}\left\{ {{\text{NB}}_{3} \left( {x_{3} } \right) + f_{2} \left( {S_{3} } \right)} \right\} \\ & \quad \;{\text{for all discrete}}\;S_{4} \;{\text{between}}\;0\;{\text{and}}\;10. \\ & 0 \le x_{3} \le 10 - S_{4} \\ & S_{3} = S_{4} + x_{3} \\ \end{aligned} $$
(4.95)

Figure 4.9 illustrates a portion of the network represented by Eqs. 4.934.95, and the f j (S j+1) values.

Fig. 4.9
figure 9

Using the forward-moving dynamic programming method for finding the maximum accumulated net benefits, f j (S j  + 1), and optimal allocations (denoted by the arrows on the links) that should have been made to reach each ending state, beginning with the ending states in Stage 1, then for each ending state in Stage 2 and finally for the ending states in Stage 3

From Fig. 4.9, note the highest total net benefits are obtained by ending with 0 remaining water at the end of Stage 3. The arrow tells us that if we are to get to that state optimally, we should allocate 5 units of water to Firm 3. Thus we must begin Stage 3, or end Stage 2, with 10 − 5 = 5 units of water. To get to this state at the end of Stage 2 we should allocate 4 units of water to Firm 2. The arrow also tells us we should have had 9 units of water available at the end of Stage 1. Given this state of 9 at the end of Stage 1, the arrow tells us we should allocate 1 unit of water to Firm 1. This is the same allocation policy as obtained using the backward-moving algorithm.

4.4.4 Numerical Solutions

The application of discrete dynamic programming to most practical problems will usually require writing some software. There are no general dynamic programming computer programs available that will solve all dynamic programming problems. Thus any user of dynamic programming will need to write a computer program to solve a particular problem unless they do it by hand. Most computer programs written for solving specific dynamic programming problems create and store the solutions of the recursive equations (e.g., Eqs. 4.934.95) in tables. Each stage is a separate table, as shown in Tables 4.3, 4.4, and 4.5 for this example water-allocation problem. These tables apply to only a part of the entire problem, namely that part of the network shown in Figs. 4.8 and 4.9. The backward solution procedure is used.

Table 4.3 Computing the values of F 3(S 3) and optimal allocations x 3 for all states S 3 in Stage 3
Table 4.4 Computing the values of F 2(S 2) and optimal allocations x 2 for all states S 2 in Stage 2
Table 4.5 Computing the values of F 1(S 1) and optimal allocations x 1, for all states S 1, in Stage 1

Table 4.3 contains the solutions of Eqs. 4.554.58 for the third stage. Table 4.4 contains the solutions of Eqs. 4.594.61 for the second stage. Table 4.5 contains the solution of Eq. 4.62 for the first stage.

From Table 4.5 we see that, given 10 units of water available, we will obtain 53.4 net benefits and to get this we should allocate 1 unit to Firm 1. This leaves 9 units of water for the remaining two allocations . From Table 4.4 we see that for a state of 9 units of water available we should allocate 4 units to Firm 2. This leaves 5 units. From Table 4.3 for a state of 5 units of water available we see we should allocate all 5 of them to Firm 3.

Performing these calculations for various discrete total amounts of water available, say from 0 to 38 in this example, will define an allocation policy (such as the one shown in Fig. 4.5 for a different allocation problem) for situations when the total amount of water is less than that desired by all the firms. This policy can then be simulated using alternative time series of available amounts of water, such as streamflows, to obtain estimates of the time series (or statistical measures of those time series) of net benefits obtained by each firm, assuming the allocation policy is followed over time.

4.4.5 Dimensionality

One of the limitations of dynamic programming is handling multiple state variables . In our water-allocation example, we had only one state variable: the total amount of water available. We could have enlarged this problem to include other types of resources the firms require to make their products. Each of these state variables would need to be discretized. If, for example, only m discrete values of each state variable are considered, for n different state variables (e.g., types of resources) there are m n different combinations of state variable values to consider at each stage. As the number of state variables increases, the number of discrete combinations of state variable values increases exponentially. This is called dynamic programming’s “curse of dimensionality ”. It has motivated many researchers to search for ways of reducing the number of possible discrete states required to find an optimal solution to large multistate-variable problems.

4.4.6 Principle of Optimality

The solution of dynamic programming models or networks is based on a principal of optimality (Bellman 1957). The backward-moving solution algorithm is based on the principal that no matter what the state and stage (i.e., the particular node you are at), an optimal policy is one that proceeds forward from that node or state and stage optimally. The forward-moving solution algorithm is based on the principal that no matter what the state and stage (i.e., the particular node you are at), an optimal policy is one that has arrived at that node or state and stage in an optimal manner.

This “principle of optimality” is a very simple concept but requires the formulation of a set of recursive equations at each stage. It also requires that either in the last stage (j = J) for a backward-moving algorithm, or in the first stage (j = 1) for a forward-moving algorithm, the future value functions, F j+1(S j+1), associated with the ending state variable values, or past value functions, f 0(S 1), associated with the beginning state variable values, respectively, all equal some known value. Usually that value is 0 but not always. This condition is needed in order to begin the process of solving each successive recursive equation.

4.4.7 Additional Applications

Among the common dynamic programming applications in water resources planning are water allocations to multiple uses, infrastructure capacity expansion , and reservoir operation . The previous three-user water-allocation problem (Fig. 4.1) illustrates the first type of application. The other two applications are presented below.

4.4.7.1 Capacity Expansion

How much infrastructure should be built, when and why? Consider a municipality that must plan for the future expansion of its water supply system or some component of that system, such as a reservoir, aqueduct, or treatment plant. The capacity needed at the end of each future period t has been estimated to be D t . The cost, C t (s t , x t ) of adding capacity x t in each period t is a function of that added capacity as well as of the existing capacity s t at the beginning of the period. The planning problem is to find that time sequence of capacity expansions that minimizes the present value of total future costs while meeting the predicted capacity demand requirements. This is the usual capacity expansion problem.

This problem can be written as an optimization model : The objective is to minimize the present value of the total cost of capacity expansion .

$$ {\text{Minimize}}\quad \sum\limits_{t} {C_{t} \left( {s_{t} ,x_{t} } \right)} , $$
(4.96)

where C t (s t , x t ) is the present value of the cost of capacity expansion x t in period t given an initial capacity of s t .

The constraints of this model define the minimum required final capacity in each period t, or equivalently the next period’s initial capacity, s t+1, as a function of the known existing capacity s 1 and each expansion x t up through period t.

$$ s_{t + 1} = s_{1} + \sum\limits_{\tau = 1,t} {x_{\tau } } \quad {\text{for}}\;\;t = 1,2, \ldots ,T $$
(4.97)

Alternatively these equations may be expressed by a series of continuity relationships:

$$ s_{t + 1} = s_{t} + x_{t} \quad {\text{for}}\;\;t = 1,2, \ldots ,T $$
(4.98)

In this problem, the constraints must also ensure that the actual capacity s t+1 at the end of each future period t is no less than the capacity required D t at the end of that period.

$$ s_{t + 1} \ge D_{t} \quad {\text{for}}\;\;t = 1,2, \ldots ,T $$
(4.99)

There may also be constraints on the possible expansions in each period defined by a set Ω t of feasible capacity additions in each period t:

$$ x_{t} \in {\Omega }_{t} $$
(4.100)

Figure 4.10 illustrates this type of capacity expansion problem. The question is how much capacity to add and when. It is a significant problem for several reasons. One is that the cost functions C t (s t , x t ) typically exhibit fixed costs and economies of scale, as illustrated in Fig. 4.11. Each time any capacity is added there are fixed as well as variable costs incurred. Fixed and variable costs that show economies of scale (decreasing average costs associated with increasing capacity additions) motivate the addition of excess capacity, capacity not needed immediately but expected to be needed in the future to meet an increased demand for additional capacity.

Fig. 4.10
figure 10

A demand projection (solid blue line) and a possible capacity expansion schedule (red line) for meeting that projected demand over time

Fig. 4.11
figure 11

Typical cost function for additional capacity given an existing capacity. The cost function shows the fixed costs , C 0, required if additional capacity is to be added, and the economies of scale associated with the concave portion of the cost function

The problem is also important because any estimates made today of future demands, costs and interest rates are likely to be wrong. The future is uncertain. Its uncertainties increase the further the future. Capacity expansion planners need to consider the future if their plans are to be cost-effective and not myopic from assuming there is no future. Just how far into the future do they need to look? And what about the uncertainty in all future costs, demands, and interest rate estimates? These questions will be addressed after showing how the problem can be solved for any fixed-planning horizon and estimates of future demands, interest rates, and costs.

The constrained optimization model defined by Eqs. 4.964.100 can be restructured as a multistage decision-making process and solved using either a forward or backward-moving discrete dynamic programming solution procedure. The stages of the model will be the time periods t. The states will be either the capacity s t+1 at the end of a stage or period t if a forward-moving solution procedure is adopted, or the capacity s t , at the beginning of a stage or period t if a backward-moving solution procedure is used.

A network of possible discrete capacity states and decisions can be superimposed onto the demand projection of Fig. 4.9, as shown in Fig. 4.12. The solid blue circles in Fig. 4.12 represent possible discrete states, S t , of the system, the amounts of additional capacity existing at the end of each period t − 1 or equivalently at the beginning of period t.

Fig. 4.12
figure 12

Network of discrete capacity expansion decisions (links) that meet the projected demand

Consider first a forward-moving dynamic programming algorithm. To implement this, define f t (s t+1) as the minimum cost of achieving a capacity s t+1, at the end of period t. Since at the beginning of the first period t = 1, the accumulated least cost is 0, f 0(s 1) = 0.

Hence, for each final discrete state s 2 in stage t = 1 ranging from D 1 to the maximum demand D T , define

$$ f_{ 1} \left( {s_{ 2} } \right) = { \hbox{min} }\left\{ {C_{ 1} \left( {s_{ 1} ,x_{ 1} } \right)} \right\}\,{\text{in}}\,{\text{which}}\,{\text{the}}\,{\text{discrete}}\,x_{ 1} = s_{ 2} \,{\text{and}}\,s_{ 1} = 0 $$
(4.101)

Moving to stage t = 2, for the final discrete states s 3 ranging from D 2 to D T,

$$ \begin{aligned} f_{ 2} \left( {s_{ 3} } \right) & = { \hbox{min} }\left\{ {C_{ 2} \left( {s_{ 2} ,x_{ 2} } \right) \, + f_{ 1} \left( {s_{ 2} } \right)} \right\}\,{\text{over}}\,{\text{all}}\,{\text{discrete}}\,x_{ 2} \,{\text{between}}\,0 \\ & \quad {\text{and}}\,s_{ 3} - D_{ 1} \,{\text{and}}\,s_{ 2} = s_{ 3} - x_{ 2} \\ \end{aligned} $$
(4.102)

Moving to stage t = 3, for the final discrete states s 4 ranging from D 3 to D T ,

$$ \begin{aligned} f_{ 3} \left( {s_{ 4} } \right) & = { \hbox{min} }\left\{ {C_{ 3} \left( {s_{ 3} ,x_{ 3} } \right) + f_{ 2} \left( {s_{ 3} } \right)} \right\}\,{\text{over}}\,{\text{all}}\,{\text{discrete}}\,x_{ 3} \\ & \quad {\text{between}}\,0\,{\text{and}}\,s_{ 4} - {D}_{ 2} \,{\text{and}}\,s_{ 3} = s_{ 4} - x_{ 3} \\ \end{aligned} $$
(4.103)

In general for all stages t between the first and last:

$$ \begin{aligned} f_{t} \left( {s_{{{t} + 1}} } \right) & = { \hbox{min} }\{ C_{t} (s_{t} ,x_{t} ) + f_{{{t} - 1}} \left( {s_{t} } \right)\} \;{\text{over}}\,{\text{all}}\,{\text{discrete}}\,x_{t} \\ & \quad {\text{between}}\,0\,{\text{and}}\,s_{{{t} + 1}} - D_{{{t} - 1}} \,{\text{and}}\,s_{t} = s_{{{t} + 1}} - x_{t} \\ \end{aligned} $$
(4.104)

For the last stage t = T and for the final discrete state s T+1 = D T ,

$$ \begin{aligned} f_{T} \left( {s_{{{T} + 1}} } \right) & = \min \{ C_{T} ({\text{s}}_{T} ,x_{T} ) + f_{T - 1} \left( {s_{T} } \right)\} \\ & \qquad {\text{over}}\,{\text{all}}\,{\text{discrete}}\,x_{T} \\ & \qquad {\text{between}}\,0\,{\text{and}}\,D_{T} - D_{T - 1} \\ & \quad {\text{where}}\;s_{T} = s_{T + 1} - x_{T} \\ \end{aligned} $$
(4.105)

The value of f T (s T+1) is the minimum present value of the total cost of meeting the demand for T time periods . To identify the sequence of capacity expansion decisions that results in this minimum present value of the total cost requires backtracking to collect the set of best decisions x t for all stages t. A numerical example will illustrate this.

A numerical example

Consider the five-period capacity expansion problem shown in Fig. 4.12. Figure 4.13 is the same network with the present value of the expansion costs on each link. The values of the states, the existing capacities, represented by the nodes, are shown on the left vertical axis. The capacity expansion problem is solved on Fig. 4.14 using the forward-moving algorithm.

Fig. 4.13
figure 13

A discrete capacity expansion network showing the present value of the expansion costs associated with each feasible expansion decision. Finding the best path through the network can be done using forward or backward-moving discrete dynamic programming

Fig. 4.14
figure 14

A capacity-expansion example, showing the results of a forward-moving dynamic programming algorithm. The numbers next to the nodes are the minimum cost to have reached that particular state at the end of the particular time period t

From the forward-moving solution to the dynamic programming problem shown in Fig. 4.14, the present value of the cost of the optimal capacity expansion schedule is 23 units of money. Backtracking (moving left against the arrows) from the farthest right node, this schedule adds 10 units of capacity in period t = 1, and 15 units of capacity in period t = 3.

Next consider the backward-moving algorithm applied to this capacity expansion problem. The general recursive equation for a backward-moving solution is

$$ \begin{aligned} F_{t} \left( {s_{t} } \right) & = {\text{minimum}}\{ C_{t} (s_{t} ,x_{t} ) + F_{t + 1} \left( {s_{t + 1} } \right)\} \\ & \quad {\text{over all discrete}}\;x_{t} \;{\text{from}}\;D_{t} - s_{t} \;{\text{to}}\;D_{T} - s_{t} \\ & \quad {\text{for all discrete states}}\;s_{t} \;{\text{from}}\;D_{t - 1} \;{\text{to}}\;D_{T} \\ \end{aligned} , $$
(4.106)

where F T+1(D T ) = 0 and as before each cost function is the discounted cost.

Once again, as shown in Fig. 4.14, the minimum total present value cost is 23 if 10 units of additional capacity are added in period t = 1 and 15 in period t = 3.

Now consider the question of the uncertainty of future demands, D t , discounted costs, C t (s t , x t ), as well as to the fact that the planning horizon T is only 5 time periods . Of importance is just how these uncertainties and finite planning horizon affect our decisions. While the model gives us a time series of future capacity expansion decisions for the next 5 time periods, what is important to decision-makers is what additional capacity to add in the current period, i.e., now, not what capacity to add in future periods. Does the uncertainty of future demands and costs and the 5-period planning horizon affect this first decision, x 1? This is the question to ask. If the answer is no, then one can place some confidence in the value of x 1. If the answer is yes, then more study may be warranted to determine which demand and cost scenario to assume, or, if applicable, how far into the future to extend the planning horizon.

Future capacity expansion decisions in time periods 2, 3, and so on can be based on updated information and analyses carried out closer to the time those decisions are to be made. At those times, the forecast demands and economic cost estimates can be updated and the planning horizon extended, as necessary, to a period that again does not affect the immediate decision. Note that in the example problem shown in Figs. 4.14 and 4.15, the use of 4 periods instead of 5 would have resulted in the same first-period decision. There is no need to extend the analysis to 6 or more periods.

Fig. 4.15
figure 15

A capacity-expansion example, showing the results of a backward-moving dynamic programming algorithm. The numbers next to the nodes are the minimum remaining cost to have the particular capacity required at the end of the planning horizon given the existing capacity of the state

To summarize: What is important to decision-makers is what additional capacity to add now. While the current period’s capacity addition should be based on the best estimates of future costs , interest rates and demands, once a solution is obtained for the capacity expansion required for this and all future periods up to some distant time horizon, one can then ignore all but that first decision, x 1: that is, what to add now. Then just before the beginning of the second period, the forecasting and analysis can be redone with updated data to obtain an updated solution for what if any capacity to add in period 2, and so on into the future. Thus, these sequential decision making dynamic programming models can be designed to be used in a sequential decision-making process.

4.4.7.2 Reservoir Operation

Reservoir operators need to know how much water to release and when. Reservoirs designed to meet demands for water supplies, recreation , hydropower, the environment and/or flood control need to be operated in ways that meet those demands in a reliable and effective manner. Since future inflows or storage volumes are uncertain, the challenge, of course, is to determine the best reservoir release or discharge for a variety of possible inflows and storage conditions that could exist or happen in each time period t in the future.

Reservoir release policies are often defined in the form of what are called “rule curves .” Figure 4.17 illustrates a rule curve for a single reservoir on the Columbia River in the northwestern United States. It combines components of two basic types of release rules. In both of these, the year is divided into various discrete within-year time periods . There is a specified release for each value of storage in each within-year time period. Usually higher storage zones are associated with higher reservoir releases. If the actual storage is relatively low, then less water is usually released so as to hedge against a continuing water shortage or drought.

Release rules may also specify the desired storage level for the time of year. The operator is to release water as necessary to achieve these target storage levels. Maximum and minimum release constraints might also be specified that may affect how quickly the target storage levels can be met. Some rule curves define multiple target storage levels depending on hydrological (e.g., snow pack) conditions in the upstream watershed , or on the forecast climate conditions as affected by ENSO cycles, solar geomagnetic activity, ocean currents and the like.

Reservoir release rule curves for a year, such as that shown in Fig. 4.16, define a policy that does not vary from one year to the next. The actual releases will vary, however, depending on the inflows and storage volumes that actually occur. The releases are often specified independently of future inflow forecasts. They are typically based only on existing storage volumes and within-year periods —the two axes of Fig. 4.16.

Fig. 4.16
figure 16

An example reservoir rule curve specifying the storage targets and some of the release constraints , given the particular current storage volume and time of year. The release constraints also include the minimum and maximum release rates and the maximum downstream channel rate of flow and depth changes that can occur in each month

Release rules are typically derived from trial and error simulations. To begin these simulations it is useful to have at least an approximate idea of the expected impact of different alternative policies on various system performance measures or objectives. Policy objectives could be the maximization of expected annual net benefits from downstream releases, reservoir storage volumes, hydroelectric energy and flood control, or the minimization of deviations from particular release, storage volume, hydroelectric energy or flood flow targets or target ranges. Discrete dynamic programming can be used to obtain initial estimates of reservoir-operating policies that meet these and other objectives. The results of discrete dynamic programming can be expressed in the form shown in Fig. 4.17.

Fig. 4.17
figure 17

Network representation of the four-season reservoir release problem. Given any initial storage volume S t at the beginning of a season t, and an expected inflow of Q t during season t, the links indicate the possible release decisions corresponding to those in Table 4.7

A numerical example

As a simple example, consider a reservoir having an active storage capacity of 20 million cubic meters, or for that matter any specified volume units. The active storage volume in the reservoir can vary between 0 and 20. To use discrete dynamic programming, this range of possible storage volumes must be divided into a set of discrete values. These will be the discrete state variable values. In this example let the range of storage volumes be divided into intervals of 5 storage volume units. Hence, the initial storage volume, S t , can assume values of 0, 5, 10, 15, and 20 for all periods t.

For each period t, let Q t be the mean inflow, L t (S t , S t+1) the evaporation and seepage losses that depend on the initial and final storage volumes in the reservoir, and R t the release or discharge from the reservoir. Each variable is expressed as volume units for the period t.

Storage volume continuity requires that in each period t the initial active storage volume , S t , plus the inflow, Q t , less the losses, L t (S t , S t+1), and release, R t , equals the final storage, or equivalently the initial storage, S t+1, in the following period t + 1. Hence

$$ S_{t} + Q_{t} - R_{t} - L_{t} (S_{t} ,S_{{{t} + 1}} ) = S_{{{t} + 1}} \,{\text{for}}\,{\text{each}}\,{\text{period}}\,t. $$
(4.107)

To satisfy the requirement (imposed for convenience in this example) that each storage volume variable be a discrete value over the range from 0 to 20 in units of 5, the releases, R t , must be such that when Q t  − R t  − L t (S t , S t+1) is added to S t the resulting value of S t+1 is one of the five discrete numbers between 0 and 20.

Assume four within-year periods t in each year (kept small for this illustrative example). In these four seasons assume the mean inflows, Q t , are 24, 12, 6, and 18, respectively. Table 4.6 defines the evaporation and seepage losses based on different discrete combinations of initial and final storage volumes for each within-year period t.

Table 4.6 Evaporation and seepage losses based on initial and final storage volumes for example reservoir-operating problem

Rounding these losses to the nearest integer value, Table 4.7 shows the net releases associated with initial and final storage volumes. They are computed using Eq. 4.107. The information in Table 4.7 allows us to draw a network representing each of the discrete storage volume states (the nodes), and each of the feasible releases (the links). This network for the four seasons t in the year is illustrated in Fig. 4.17.

Table 4.7 Discrete releases associated with initial and final storage volumes for example reservoir-operating problem

This reservoir-operating problem is a multistage decision-making problem. As Fig. 4.17 illustrates, at the beginning of any season t, the storage volume can be in any of the five discrete states. Given the state, a release decision is to be made. This release will depend on the state: the initial storage volume and the mean inflow, as well as the losses that may be estimated based on the initial and final storage volumes, as defined in Table 4.6. The release will also depend on what is to be accomplished—that is, the objectives to be satisfied.

For this example, assume there are various targets that water users would like to achieve. Downstream water users want reservoir operators to meet their flow targets. Individuals who use the lake for recreation want the reservoir operators to meet storage volume or storage level targets. Finally, individuals living on the downstream floodplain want the reservoir operators to provide storage capacity for flood protection . Table 4.8 identifies these different targets that are to be met, if possible, for the duration of each season t.

Table 4.8 Storage volume and release targets for the example reservoir operation problem

Clearly, it will not be possible to meet all these storage volume and release targets in all four seasons, given inflows of 24, 12, 6, and 18, respectively. Hence, the objective in this example will be to do the best one can: to minimize a weighted sum of squared deviations from each of these targets. The weights reflect the relative importance of meeting each target in each season t. Target deviations are squared to reflect the fact that the marginal “losses” associated with deviations increase with increasing deviations. Small deviations are not as serious as larger deviations, and it is better to have numerous small deviations rather than a few larger ones.

During the recreation season (periods 2 and 3), deviations below or above the recreation storage lake volume targets are damaging. During the flood season (period 1), any storage volume in excess of the flood control storage targets of 15 reduces the flood storage capacity . Deviations below that flood control target are not penalized. Flood control and recreation storage targets during each season t apply throughout the season, thus they apply to the initial storage S t as well as to the final storage S t+1 in appropriate periods t.

The objective is to minimize the sum of total weighted squared deviations, TSD t , over all seasons t from now on into the future:

$$ {\text{Minimize}}\quad \sum\limits_{t} {{\text{TSD}}_{t} } {\mkern 1mu} , $$
(4.108)

where

$$ \begin{aligned} {\text{TSD}}_{t} & = {\text{ws}}_{t} \left[ {\left( {{\text{TS}} - S_{t} } \right)^{2} + ({\text{TS}} - S_{{t + 1}} )^{2} } \right] \\ & \quad + {\text{ wf}}_{t} \left[ {\left( {{\text{ES}}_{t} } \right)^{2} + {\mkern 1mu} ({\text{ES}}_{{t + 1}} )^{2} } \right] + {\text{wr}}_{t} \left[ {{\text{DR}}_{t}^{2} } \right] \\ \end{aligned} $$
(4.109)

In the above equation, when t = 4, the last period of the year, the following period t + 1 = 1, the first period in the following year. Each ES t is the storage volume in excess of the flood storage target volume, TF. Each DR t is the difference between the actual release, R t , and the target release, TR t , when the release is less than the target.

The excess storage, ES t , above the flood target storage TF at the beginning of each season t can be defined by the constraint:

$$ S_{t} \le {\text{TF}} + {\text{ES}}_{t} \quad {\text{for}}\;\;{\text{periods}}\;t = 1\;{\text{and}}\; 2. $$
(4.110)

The deficit release, DR t , during period t can be defined by the constraint:

$$ R_{t} \ge {\text{TR}}_{t} - {\text{DR}}_{t} \quad {\text{for}}\;{\text{all}}\;{\text{periods}}\,t. $$
(4.111)

The first component of the right side of Eq. 4.109 defines the weighted squared deviations from a recreation storage target, TS, at the beginning and end of season t. In this example the recreation season is during periods 2 and 3. The weights, ws t , associated with the recreation component of the objective are 1 in periods 2 and 3. In periods 1 and 4 the weights, ws t , are 0.

The second component of Eq. 4.109 is for flood control. It defines the weighted squared deviations associated with storage volumes in excess of the flood control target volume, TF, at the beginning and end of the flood season, period t = 1. In this example, the weights, wf t , are 1 for period 1 and 0 for periods 2, 3, and 4. Note the conflict between flood control and recreation at the end of period 1 or equivalently at the beginning of period 2.

Finally, the last component of Eq. 4.109 defines the weighted squared deficit deviations from a release target, TR t , In this example all release weights, wr t, equal 1.

Associated with each link in Fig. 4.17 is the release, R t , as defined in Table 4.7. Also associated with each link is the sum of weighted squared deviations, TSD t , that result from the particular initial and final storage volumes and the storage volume and release targets identified in Table 4.8. They are computed using Eq. 4.109, with the releases defined in Table 4.7 and targets defined in Table 4.8, for each feasible combination of initial and final storage volumes, S t and S t+1, for each of the four seasons or periods in a year. These computed weighted squared deviations for each link are shown in Table 4.9.

Table 4.9 Total sum of squared deviations, TSD t , associated with initial and final storage volumes

The goal in this example problem is to find the path through a multiyear network—each year of which is as shown in Fig. 4.17—that minimizes the sum of the squared deviations associated with each of the path’s links. Again, each link’s weighted squared deviations are given in Table 4.9. Of interest is the best path into the future from any of the nodes or states (discrete storage volumes) that the system could be in at the beginning of any season t.

These paths can be found using the backward-moving solution procedure of discrete dynamic programming. This procedure begins at any arbitrarily selected time period or season when the reservoir presumably produces no further benefits to anyone (and it does not matter when that time is—just pick any time) and proceeds backward, from right to left one stage (i.e., one time period) at a time, toward the present. At each node (representing a discrete storage volume S t and inflow Q t ), we can calculate the release or final storage volume in that period that minimizes the remaining sum of weighted squared deviations for all remaining seasons. Denote this minimum sum of weighted squared deviations for all n remaining seasons t as \( F_{t}^{n} \left( {S_{t} ,Q_{t} } \right) \). This value is dependent on the state (S t , Q t ), and stage, t, and the number n of remaining seasons. It is not a function of the decision R t or S t+1.

This minimum sum of weighted squared deviations for all n remaining seasons t is equal to

$$ \begin{aligned} F_{t}^{n} \left( {S_{t} ,Q_{t} } \right) & = \min \sum\limits_{t = 1,n} {{\text{TSD}}_{t} } (S_{t} ,R_{t} ,S_{t + 1} ) \\ & \quad {\text{over all feasible values of}}\;R_{t}, \end{aligned} $$
(4.112)

where

$$ S_{t + 1} = S_{t} + Q_{t} - R_{t} - L_{t} (S_{t} ,S_{t + 1} ) $$
(4.113)

and

$$ S_{t} \le K,\; {\text{the capacity of the reservoir}} $$
(4.114)

The policy we want to derive is called a steady-state policy. Such a policy assumes the reservoir will be operating for a relatively long time with the same objectives and a repeatable hydrologic time series of seasonal inputs. We can find this steady-state policy by first assuming that at some time all future benefits, losses or penalties, \( F_{t}^{^\circ } (S_{t} ,Q_{t} ) \), will be 0.

We can begin in that last season t of reservoir operation and work backwards toward the present, moving left through the network one season t at a time. We can continue for multiple years until the annual policy begins repeating itself each year. In other words, when the optimal R t associated with a particular state (S t , Q t ) is the same in two or more successive years, and this applies for all states (S t , Q t ) in each season t, a steady-state policy has probably been obtained. (A more definitive test of whether or not a steady-state policy has been reached will be discussed later.) A steady-state policy will occur if the inflows, Q t , and objectives, TSD t (S t , R t , S t+1), remain the same for specific within-year periods from year to year. This steady-state policy is independent of the assumption that the operation will end at some point.

To find the steady-state operating policy for this example problem, assume the operation ends in some distant year at the end of season 4 (the right-hand side nodes in Fig. 4.17). At the end of this season the number of remaining seasons, n, equals 0. The values of the remaining minimum sums of weighted squared deviations, \( F_{t}^{^\circ } (S_{t} ,Q_{t} ) \) associated with each state (S t , Q t ), i.e., each node, equal 0. Since for this problem there is no future. Now we can begin the process of finding the best releases R t in each successive season t, moving backward to the beginning of stage t = 4, then stage t = 3, then to t = 2, and then to t = 1, and then to t = 4 of the preceding year, and so on, each move to the left increasing the number of remaining seasons n by one.

At each stage, or season t, for each discrete state (S t , Q t ) we can compute the release R t or equivalently the final storage volume S t+1, that minimizes

$$ \begin{aligned} {\text{F}}_{t}^{n} (S_{t} ,Q_{t} ) & = {\text{Minimum}}\{ {\text{TSD}}_{t} (S_{t} ,R_{t} ,S_{{{t} + 1}} )\\&\quad+ F_{{{t} + 1}}^{{{n} - 1}} (S_{{{t} + 1}} ,Q_{{{t} +1 }} )\} \\ & \quad {\text{for}}\,{\text{all}}\;0 \le S_{t} \le 20 \\ \end{aligned} $$
(4.115)

The decision variable can be either the release, R t , or the final storage volume, S t+1. If the decision variable is the release, then the constraints on that release R t are

$$ R_{t} \le S_{t} + Q_{t} - L_{t} (S_{t} ,S_{t + 1} ) $$
(4.116)
$$ R_{t} \ge S_{t} + Q_{t} - L_{t} (S_{t} ,S_{t + 1} ) - 20\;\;\left( {\text{the capacity}} \right) $$
(4.117)

and

$$ S_{{{t} + 1}} = S_{t} + Q_{t} - R_{t} - L_{t} (S_{t} ,S_{{{t} + 1}} ) $$
(4.118)

If the decision variable is the final storage volume, S t+1, the constraints on that final storage volume are

$$ 0 \le S_{{{t} + 1}} \le 20 $$
(4.119)
$$ {\text{S}}_{{{t} + 1}} \le S_{t} + Q_{t} - L_{t} (S_{t} ,S_{{{t} + 1}} ) $$
(4.120)

and

$$ R_{t} = S_{t} + Q_{t} - S_{{{t} + 1}} - L_{t} (S_{t} ,S_{{{t} + 1}} ) $$
(4.121)

Note that if the decision variable is S t+1 in season t, this decision becomes the state variable in season t + 1. In both cases, the storage volumes in each season are limited to discrete values 0, 5, 10, 15, and 20.

Tables 4.10, 4.11, 4.12, 4.13, 4.14, 4.15, 4.16, 4.17, 4.18 and 4.19 show the values obtained from solving the recursive equations for 10 successive seasons or stages (2.5 years). Each table represents a stage or season t, beginning with Table 4.10 at t = 4 and the number of remaining seasons n = 1. The data in each table are obtained from Tables 4.7 and 4.9. The last two columns of each table represent the best release and final storage volume decision(s) associated with the state (initial storage volume and inflow).

Table 4.10 Calculation of minimum squared deviations associated with various discrete storage states in season t = 4 with only n = 1 season remaining for reservoir operation
Table 4.11 Calculation of minimum squared deviations associated with various discrete storage states in season t = 3 with n = 2 seasons remaining for reservoir operation
Table 4.12 Calculation of minimum squared deviations associated with various discrete storage states in season t = 2 with n = 3 seasons remaining for reservoir operation
Table 4.13 Calculation of minimum squared deviations associated with various discrete storage states in season t = 1 with n = 4 seasons remaining for reservoir operation
Table 4.14 Calculation of minimum squared deviations associated with various discrete storage states in season t = 4 with n = 5 seasons remaining for reservoir operation
Table 4.15 Calculation of minimum squared deviations associated with various discrete storage states in season t = 3 with n = 6 seasons remaining for reservoir operation
Table 4.16 Calculation of minimum squared deviations associated with various discrete storage states in season t = 2 with n = 7 seasons remaining for reservoir operation
Table 4.17 Calculation of minimum squared deviations associated with various discrete storage states in season t = 1 with n = 8 seasons remaining for reservoir operation
Table 4.18 Calculation of minimum squared deviations associated with various discrete storage states in season t = 4 with n = 9 seasons remaining for reservoir operation
Table 4.19 Calculation of minimum squared deviations associated with various discrete storage states in season t = 3 with n = 10 seasons remaining for reservoir operation

Note that the policy defining the release or final storage for each discrete initial storage volume in season t = 3 in Table 4.12 is the same as in Table 4.16, and similarly for season t = 4 in Tables 4.13 and 4.17, and for season t = 1 in Tables 4.14 and 4.18, and finally for season t = 2 in Tables 4.15 and 4.19. The policy differs over each state, and over each different season, but not from year to year for any specified state and season. This indicates we have reached a steady-state policy. If we kept on computing the release and final storage policies for preceding seasons, we would get the same policy as that found for the same season in the following year. The policy is dependent on the state—the initial storage volume in this case—and on the season t, but not on the year. This policy as defined in Tables 4.16, 4.17, 4.18 and 4.19 is summarized in Table 4.20.

Table 4.20 The discrete steady-state reservoir-operating policy as computed for this example problem in Tables 4.16, 4.17, 4.18 and 4.19

This policy can be defined as a rule curve, as shown in Fig. 4.18. It provides a first approximation of a reservoir release rule curve that one can improve upon using simulation.

Fig. 4.18
figure 18

Reservoir rule curve based on policy defined in Table 4.20. Each season is divided into storage volume zones. The releases associated with each storage volume zone are specified. Also shown are the storage volumes that would result if in each year the actual inflows equaled the inflows used to derive this rule curve

Table 4.20 and Fig. 4.18 define a policy that can be implemented for any initial storage volume condition at the beginning of any season t. This can be simulated under different flow patterns to determine just how well it satisfies the overall objective of minimizing the weighted sum of squared deviations from desired, but conflicting, storage and release targets. There are other performance criteria that may also be evaluated using simulation, such as measures of reliability , resilience , and vulnerability (Chap. 9).

Assuming the inflows that were used to derive this policy actually occurred each year, we can simulate the derived sequential steady-state policy to find the storage volumes and releases that would occur in each period, year after year, once a repetitive steady-state condition were reached. This is done in Table 4.21 for an arbitrary initial storage volume of 20 in season t = 1. You can try other initial conditions to verify that it requires only 2 years at most to reach a repetitive steady-state policy.

Table 4.21 A simulation of the derived operating policy in Table 4.20

As shown in Table 4.21, if the inflows were repetitive and the optimal policy was followed, the initial storage volumes and releases would begin to repeat themselves once a steady-state condition has been reached. Once reached, the storage volumes and releases will be the same each year (since the inflows are the same). These storage volumes are denoted as a blue line on the rule curve shown in Fig. 4.18. The annual total squared deviations will also be the same each year. As seen in Table 4.21, this annual minimum weighted sum of squared deviations for this example equals 186. This is what would be observed if the inflows assumed for this analysis repeated themselves.

Note from Tables 4.12, 4.13, 4.14, 4.15 and 4.16, 4.17, 4.18, 4.19 that once the steady-state sequential policy has been reached for any specified storage volume, S t , and season t, the annual difference of the accumulated minimum sum of squared deviations equals a constant, namely the annual value of the objective function. In this case that constant is 186.

$$ F_{t}^{n + 1} (S_{t} ,Q_{t} ) - F_{t}^{n} (S_{t} ,Q_{t} ) = 186\quad {\text{for}}\,{\text{all}}\;\;S_{t} ,Q_{t} \;{\text{and}}\;t. $$
(4.122)

This condition indicates a steady-state policy has been achieved.

This policy in Table 4.21 applies only for the assumed inflows in each season. It does not define what to do if the initial storage volumes or inflows differ from those for which the policy is defined. Initial storage volumes and inflows can and will vary from those specified in the solution of any deterministic model . One fact is certain: no matter what inflows are assumed in any model, the actual inflows will always differ. Hence, a policy as defined in Table 4.20 and Fig. 4.18 is much more useful than that in Table 4.21. In Chap. 8 we will modify this reservoir operation model to define releases or final storage volumes as functions of not only discrete storage volumes S t but also of discrete possible inflows Q t . However, the policy defined by any relatively simple optimization model policy should be simulated, evaluated, and further refined in an effort to identify the policy that best meets the operating policy objectives.

4.4.8 General Comments on Dynamic Programming

Before ending this discussion of using dynamic programming methods for analyzing water resources planning, management and operating policy problems, we should examine a major assumption that has been made in each of the applications presented. The first is that the net benefits or costs or other objective values resulting at each stage of the problem are dependent only on the state and decision variable values in each stage. They are independent of decisions made at other stages. If the returns at any stage are dependent on the decisions made at other stages, then dynamic programming, with some exceptions, becomes more difficult to apply. Dynamic programming models can be applied to design problems, such as the capacity expansion problem or to operating problems, such as the water-allocation and reservoir operation problems, but rarely to problems having both unknown design and operating policy decision variables at the same time. While there are some tricks that may allow dynamic programming to be used to find the best solutions to both design and operating problems encountered in water resources planning, management and operating policy studies, other optimization methods, perhaps combined with dynamic programming where appropriate, are often more useful.

4.5 Linear Programming

If the objective function and constraints of an optimization model are all linear, many readily available computer programs exist for finding its optimal solution. Surprisingly many water resource systems problems meet these conditions of linearity. These linear optimization programs are very powerful, and unlike many other optimization methods, they can be applied successfully to very large optimization problems containing many variables and constraints. Many water resources problems are too large to be easily solved using nonlinear or dynamic programming methods. The number of variables and constraints simply defining mass balances and capacity limitations in numerous time periods can become so big as to preclude the practical use of most other optimization methods. Linear programming procedures or algorithms for solving linear optimization models are often the most efficient ways to find solutions to such problems. Hence there is an incentive to convert large optimization models to a linear form. Some ways of doing this are discussed later in this chapter.

Because of the availability of computer programs that can solve linear programming problems, linear programming is arguably the most popular and commonly applied optimization algorithm in practical use today. It is used to identify and evaluate alternative plans, designs and management policies in agriculture , business, commerce, education, engineering, finance, the civil and military branches of government, and many other fields.

In spite of its power and popularity, for most real-world water resources planning and management problems, linear programming, like the other optimization methods already discussed in this chapter, is best viewed as a preliminary screening tool. Its value is more for reducing the number of alternatives for further more detailed simulations than for finding the best decision. This is not just because approximation methods may have been used to convert nonlinear functions to linear ones, but more likely because it is difficult to incorporate all the complexity of the system and all the objectives considered important to all stakeholders into a linear model . Nevertheless, linear programming, like other optimization methods, can provide initial designs and operating policy information that simulation models require before they can simulate those designs and operating policies.

Equations 4.41 and 4.42 define the general structure of any constrained optimization problem. If the objective function F(X) of the vector X of decision variables x j is linear and if all the constraints g i (X) in Eq. 4.42 are linear, then the model becomes a linear programming model. The general structure of a linear programming model is

$$ {\text{Maximize or minimize}}\quad \sum\limits_{j} {P_{j} x_{j} } $$
(4.123)

Subject to

$$ \sum\limits_j {a_{ij} x_{j} \le {\text{or}} \ge b_{i} } \quad {\text{for}}\;\;i = 1,2,3, \ldots ,m $$
(4.124)
$$ x_{j} \ge 0\quad {\text{for}}\;\;j = 1,2,3, \ldots ,n. $$
(4.125)

If any model fits this general form, where the constraints can be any combination of equalities (=) and inequalities (≥ or ≤), then a large variety of linear programming computer programs can be used to find the “optimal” values of all the unknown decision variables x j . Variable nonnegativity is enforced within the solution algorithms of most commercial linear programming programs, eliminating the need to have to specify these conditions in any particular application.

Potential users of linear programming algorithms need to know how to construct linear models and how to use the computer programs that are available for solving them. They do not have to understand all the mathematical details of the solution procedure incorporated in the linear programming codes. But users of linear programming computer programs should understand what the solution procedure does and what the computer program output means . To begin this discussion of these topics, consider some simple examples of linear programming models.

4.5.1 Reservoir Storage Capacity-Yield Models

Linear programming can be used to define storage capacity-yield functions for a single or multiple reservoirs. A storage capacity-yield function defines the maximum constant “dependable” reservoir release or yield that will be available, at a given level of reliability , during each period of operation, as a function of the active storage volume capacity. The yield from any reservoir or group of reservoirs will depend on the active storage capacity of each reservoir and the water that flows into each reservoir, i.e., their inflows. Figure 4.19 illustrates two typical storage-yield functions for a single reservoir.

Fig. 4.19
figure 19

Two storage-yield functions for a single reservoir defining the maximum minimum dependable release. These functions can be defined for varying levels of yield reliability

To describe what a yield is and how it can be increased, consider a sequence of 5 annual flows, say 2, 4, 1, 5, and 3, at a site in an unregulated stream. Based on this admittedly very limited record of flows, the minimum (historically) “dependable” annual flow yield of the stream at that site is 1, the minimum observed flow. Assuming the flow record is representative of what future flows might be, a discharge of 1 can be “guaranteed” in each period of record. (In reality, that or any nonzero yield will have a reliability less than 1, as will be considered in Chaps. 6 and 10.)

If a reservoir having an active storage capacity of 1 is built, it could store 1 volume unit of flow when the flow is greater than 2. It could then release it along with the natural flow when the natural flow is 1, increasing the minimum dependable flow to 2 units in each year. Storing 2 units when the flow is 5, releasing 1 and the natural flow when that natural flow is 2, and storing 1 when the flow is 4, and then releasing the stored 2 units along with the natural flow when the natural flow is 1, will permit a yield of 3 in each time period with 2 units of active capacity. This is the maximum annual yield that is possible at this site, again based on these five annual inflows and their sequence. The maximum annual yield cannot exceed the mean annual flow, which in this example is 3. Hence, the storage capacity-yield function equals 1 when the active capacity is 0, 2 when the active capacity is 1, and 3 when the active capacity is 2. The annual yield remains at 3 for any active storage capacity in excess of 2.

This storage-yield function is dependent not only on the natural unregulated annual flows but also on their sequence. For example if the sequence of the same 5 annual flows were 5, 2, 1, 3, 4, the needed active storage capacity is 3 instead of 2 volume units as before to obtain a dependable flow or yield of 3 volume units. In spite of these limitations of storage capacity-yield functions, historical records are still typically used to derive them. (Ways of augmenting the historical flow record are discussed in Chap. 6.)

There are many methods available for deriving storage-yield functions . One very versatile method, especially for multiple reservoir systems, uses linear programming. Others are discussed in Chap. 10.

To illustrate a storage capacity-yield model, consider a single reservoir that must provide at least a minimum release or yield Y in each period t. Assume a record of known (historical or synthetic) streamflows at the reservoir site is available. The problem is to find the maximum constant yield Y obtainable from a given active storage capacity. The objective is to

$$ {\text{maximize}}\,Y $$
(4.126)

This maximum yield is constrained by the water available in each period, and by the reservoir capacity . Two sets of constraints are needed to define the relationships among the inflows, the reservoir storage volumes, the yields, any excess release, and the reservoir capacity. The first set of continuity equations equate the unknown final reservoir storage volume S t+1 in period t to the unknown initial reservoir storage volume S t plus the known inflow Q t , minus the unknown yield Y and excess release, R t , if any, in period t. (Losses are being ignored in this example.)

$$ S_{t} + Q_{t} - Y - R_{t} = S_{{{t} + 1}} \,{\text{for}}\,{\text{each}}\,{\text{period}}\,t = 1, 2, 3, \ldots ,T. \; T + 1= 1 $$
(4.127)

If, as indicated in Eq. 4.127, one assumes that period 1 follows the last period T, it is not necessary to specify the value of the initial storage volume S 1 and/or final storage volume S T+1. They are set equal to each other and that variable value remains unknown. The resulting “steady-state” solution is based on the inflow sequence that is assumed to repeat itself as well as the available storage capacity, K.

The second set of required constraints ensures that the reservoir storage volumes S t at the beginning of each period t are no greater than the active reservoir capacity K.

$$ S_{t} \le K\quad t = {\text{l}},\, 2,\, 3, \ldots ,T $$
(4.128)

To derive a storage-yield function, the model defined by Eqs. 4.1264.128 must be solved for various assumed values of capacity K. Only the inflow values Q t and reservoir active storage capacity K are assumed known. All other storage, release and yield variables are unknown. Linear programming will be able to find their optimal values. Clearly, the upper bound on the yield regardless of reservoir capacity will equal the mean inflow (less any losses if they were included).

Alternatively, one can solve a number of linear programming models that minimize an unknown storage capacity K needed to achieve various specified yields Y. The resulting storage-yield functions will be same. The minimum capacity needed to achieve a specified yield will be the same as the maximum yield obtainable from the corresponding specified capacity K. However, the specified yield Y cannot exceed the mean inflow. If an assumed value of the yield exceeds the mean inflow, there will be no feasible solution to the linear programming model.

Box 4.1 illustrates an example storage-yield model and its solutions to find the storage-yield function. For this problem, and others in this chapter, the program LINGO (freely obtained from www.lindo.com) is used.

Box 4.1. Example storage capacity-yield model and its solution from LINGO

Before moving to another application of linear programming, consider how this storage-yield problem, Eqs. 4.1264.128, can be formulated as a discrete dynamic programming model. The use of discrete dynamic programming is clearly not the most efficient way to define a storage-yield function but the problem of finding a storage-yield function provides a good exercise in dynamic programming. The dynamic programming network has the same form as shown in Fig. 4.19, where each node is a discrete storage and inflow state, and the links represent releases. Let \( F_{t}^{n} \left( {S_{t} } \right) \) be the maximum yield obtained given a storage volume of S t at the beginning of period t of a year with n periods remaining of reservoir operation . For initial conditions, assume all values of \( F_{t}^{0} \left( {{\text{S}}_{t} } \right) \) for some final period t with no more periods n remaining equal a large number that exceeds the mean annual inflow. Then for the set of feasible discrete total releases R t :

$$ {\text{F}}_{t}^{n} \left( {S_{t} } \right) = \hbox{max} \left\{ \hbox{min} \left[R_{t} ,F_{{{t} + 1}}^{{{n} - 1}} (S_{{{t} + 1}} )\right]\right\} $$
(4.129)

This applies for all discrete storage volumes S t and for all within-year periods t and remaining periods n. The constraints on the decision variables R t are

$$ \begin{aligned} R_{t} & \le S_{t} + Q_{t} \\ R_{t} & \ge S_{t} + Q_{t} - K,\quad {\text{and}} \\ S_{{{t} + 1}} & = S_{t} + Q_{t} - R_{t} \\ \end{aligned} $$
(4.130)

These recursive Eqs. 4.129 together with constraint Eqs. 4.130 can be solved, beginning with n = 1 and then for successive values of seasons t and remaining periods n, until a steady-state solution is obtained, that is, until

$$ F_{t}^{n} \left( {S_{t} } \right) = F_{t}^{n - 1} \left( {S_{t} } \right)\quad {\text{for}}\,{\text{all}}\,{\text{values}}\,{\text{of}}\,S_{t} \,{\text{and}}\,{\text{periods}}\,t. $$
(4.131)

The steady-state yields F t (S t ) will depend on the storage volumes S t . High initial storage volumes will result in higher yields than will lower ones. The highest yield will be that associated with the highest storage volumes and it will equal the same value obtained from either of the two linear programming models.

4.5.2 A Water Quality Management Problem

Some linear programming modeling and solution techniques can be demonstrated using the simple water quality management example shown in Fig. 4.21. In addition, this example can serve to illustrate how models can help identify just what data are needed and how accurate they must be for the decisions that are being considered.

The stream shown in Fig. 4.20 receives wastewater effluent from two point sources located at sites 1 and 2. Without some wastewater treatment at these sites, the concentration of some pollutant, P j mg/l, at sites j = 2 and 3, will continue to exceed the maximum desired concentration \( P_{j}^{\hbox{max} } \). The problem is to find the level of wastewater treatment (waste removed) at sites i = 1 and 2 that will achieve the desired concentrations just upstream of site 2 and at site 3 at a minimum total cost.

Fig. 4.20
figure 20

A stream pollution problem that requires finding the waste removal efficiencies (x 1, x 2) of wastewater treatment at sites 1 and 2 that meet the stream quality standards at sites 2 and 3 at minimum total cost. W 1 and W 2 are the amounts of pollutant prior to treatment at sites 1 and 2

This is the classic water quality management problem that is frequently found in the literature, although least-cost solutions have rarely if ever been applied in practice. There are valid reasons for this that we will review later. Nevertheless, this particular problem can serve to illustrate the development of some linear models for determining data needs as well as for finding, in this case, cost-effective treatment efficiencies. This problem can also serve to illustrate graphically the general mathematical procedures used for solving linear programming problems.

The first step is to develop a model that predicts the pollutant concentrations in the stream as a function of the pollutants discharged into it. To do this we need some notation. Define W j as the mass of pollutant generated at site j (j = 1, 2) each day. Without any treatment and assuming no upstream pollution concentration, the discharge of W 1 (in units of mass per unit time, (M/T) at site j = 1 results in pollutant concentration of P 1 in the stream at that site. This concentration, (M/L3) equals the discharge W 1 (M/T) divided by the streamflow Q 1 (L3/T) at that site. For example, assuming the concentration is expressed in units of mg/l and the flow is in terms of m3/s, and mass of pollutant discharged is expressed as kg/day, and the flow component of the wastewater discharge is negligible compared to the streamflow, the resulting streamflow concentration P 1 at site j = 1 is W 1/86.4 Q 1:

$$ \begin{aligned} P_{1} \left( {{\text{mg}}/{\text{l}}} \right) & = {\text{Mass}}\;W_{1} \;{\text{discharged at site 1 }}\left( {{\text{kg}}/{\text{day}}} \right)/ \\ & \quad {\text{streamflow}}\,Q_{ 1} \,{\text{at}}\,{\text{site}}\, 1\left( {{\text{m}}^{3} /{\text{s}}} \right)/ \\ & \quad \left( {{\text{kg}}/ 10^{ 6}\,{\text{mg}}} \right)\left( {86 ,400\,{\text{s}}/{\text{day}}} \right)\,\left( {10^{3}\,{\text{L}}/{\text{m}}^{3} } \right) \\ & = W_{1} / 8 6. 4\,Q_{1} \\ \end{aligned} $$
(4.132)

Each unit of a degradable pollutant mass in the stream at site 1 in this example will decrease as it travels downstream to site 2. Similarly each unit of the pollutant mass in the stream at site 2 will decrease as it travels downstream to site 3. The fraction α ij of the mass at site i that reaches site j is often assumed to be

$$ \alpha_{ij} = \exp\left( { - kt_{ij} } \right), $$
(4.133)

where k is a rate constant (1/time unit) that depends on the pollutant and the temperature , and t ij is the time (number of time units) it takes a particle of pollutant to flow from site i to site j. The actual concentration at the downstream end of a reach will depend on the streamflow at that site as well as on the initial pollutant mass, the time of travel and decay rate constant k.

In this example problem, the fraction of pollutant mass at site 1 that reaches site 3 is the product of the transfer coefficients α 12 and α 23:

$$ \alpha_{ 1 3} = \alpha_{ 1 2} \alpha_{ 2 3} $$
(4.134)

In general, for any site k between sites i and j:

$$ \alpha_{ij} = \alpha_{ik} \alpha_{kj} $$
(4.135)

Knowing the α ij values for any pollutant and the time of flow t ij permits the determination of the rate constant k for that pollutant and reach, or contiguous series of reaches, from sites i to j, using Eq. 4.133. If the value of k is 0, the pollutant is called a conservative pollutant; salt is an example of this. Only increased dilution by less saline water will reduce its concentration.

For the purposes of determining wastewater treatment efficiencies or other capital investments in infrastructure designed to control the pollutant concentrations in the stream, some “design” streamflow conditions have to be established. Usually the design streamflow conditions are set at low-flow values (e.g., the lowest monthly average flow expected once in twenty years, or the minimum 7-day average flow expected once in ten years). Low design flows are based on the assumption that pollutant concentrations will be higher in low-flow conditions than in higher flow conditions because of less dilution. While low-flow conditions may not provide as much dilution, they result in longer travel times, and hence greater reductions in pollutant masses between water quality monitoring sites. Hence the pollutant concentrations may well be greater at some downstream site when the flow conditions are higher than those of the design low-flow value.

In any event, given particular design streamflow and temperature conditions, our first job is to determine the values of these dimensionless transfer coefficients α ij . They will be independent of the amount of waste discharged into the stream as long as the stream stays aerobic. To determine both α 12 and α 23 in this example problem (Fig. 4.20) requires a number of pollutant concentration measurements at sites 1, 2 and 3 during design streamflow conditions. These measurements of pollutant concentrations must be made just downstream of the wastewater effluent discharge at site 1, just upstream and downstream of the wastewater effluent discharge at site 2, and at site 3.

Assuming no change in streamflow and no extra pollutant entering the reach that begins at site 1 and ends just upstream of site 2, the mass (kg/day) of pollutants just upstream of site 2 will equal the mass at site 1, W 1, times the transfer coefficient α 12:

$$ {\text{Mass}}\,{\text{just}}\,{\text{upstream}}\,{\text{of}}\,{\text{site}}\, 2= W_{1} \alpha_{ 1 2} $$
(4.136)

From this equation and 4.132 one can calculate the concentration of pollutants just upstream of site 2.

The mass of additional pollutant discharged into site 2 is W 2. Hence the total mass just downstream of site 2 is W 1 α 12 + W 2. At site 3 the pollutant mass will equal the mass just downstream of site 2, times the transfer coefficient a23. Given a streamflow of Q 3 m3/s and pollutant masses W 1 and W 2 kg/day, the pollutant concentration P 3 expressed in mg/l will equal

$$ P_{ 3} = [W_{1} {\alpha}_{ 1 2} + W_{2} ]\,\alpha_{ 2 3} /( 8 6. 4 { }Q_{ 3} ) $$
(4.137)

4.5.2.1 Model Calibration

Sample measurements are needed to estimate the values of each reach’s pollutant transport coefficients a ij . Assume five pairs of sample pollutant concentration measurements have been taken in the two stream reaches (extending from site 1 to site 2, and from site 2 to site 3) during design flow conditions. For this example, also assume that the design streamflow just downstream of site 1 and just upstream of site 2 are the same and equal to 12 m3/s. The concentration samples taken just downstream from site 1 and just upstream of site 2 during this design flow condition can be used to solve for the transfer coefficients α 12 and α 23 after adding error terms. More than one sample is needed to allow for measurement errors and other random effects such as those from varying temperature , wind, incomplete mixing or varying wasteload discharges within a day.

Denote the concentrations of each pair of sample measurements s in the first reach (just downstream of site 1 and just upstream of site 2) as P 1s and P 2s and their combined error as E s. Thus

$$ {\text{P}}_{{ 2 {\text{s}}}} + E_{\text{s}} = P_{{ 1 {\text{s}}}} \alpha_{ 1 2} ({Q}_{1} / Q_{2} ) $$
(4.138)

The problem is to find the best estimates of the unknown α 12. One way to do this is to define “best” as those values of α 12 and all E s that minimize the sum of the absolute values of all the error terms E s. This objective could be written

$$ {\text{Minimize}}\quad \sum\limits_{\text{s}} {\left| {E_{\text{s}} } \right|} $$
(4.139)

The set of Eqs. 4.138 and 4.139 is an optimization model . The absolute value signs in Eq. 4.139 can be removed by writing each error term as the difference between two nonnegative variables, PEs − NEs. Thus for each sample pair s:

$$ E_{\text{s}} = {\text{PE}}_{\text{s}} - {\text{NE}}_{\text{s}} $$
(4.140)

If any E s is negative, PEs will be 0 and −NEs will equal E s. The actual value of NE s is nonnegative. If E s is positive, it will equal PE s, and NE s will be 0. The objective function, Eq. 4.139, that minimizes the sum of absolute value of error terms, can now be written as one that minimizes the sum of the positive and negative components of E s:

$$ {\text{Minimize}}\quad \sum\limits_{\text{s}} {({\text{PE}}_{\text{s}} + {\text{NE}}_{\text{s}} )} $$
(4.141)

Equations 4.139 and 4.140, together with objective function 4.141 and a set of measurements, P 1s and P 2s, upstream and downstream of the reach between sites 1 and 2 define a linear programming model that can be solved to find the transfer coefficient α 12. An example illustrating the solution of this model for the stream reach between site 1 and just upstream of site 2 is presented in Box 4.2. (In this model the measured concentrations are denoted as SP js rather than P js. Again, the program LINGO (www.lindo.com) is used to solve the model).

Box 4.3 contains the model and solution for the reach beginning just downstream of site 2 to site 3. In this reach the design streamflow is 12.5 m3/s due to the addition of wastewater flow at site 2.

As shown in Boxes 4.2 and 4.3, the values of the transfer coefficients are α 12 = 0.25 and α 23 = 0.60. Thus from Eq. 4.134, α 12 α 23 = α 13 = 0.15.

4.5.2.2 Management Model

Now that these parameter values α ij are known, a water quality management model can be developed. The water quality management problem, illustrated in Fig. 4.20, involves finding the fractions x i of waste removal at sites i = 1 and 2 that meet the stream quality standards at the end of the two reaches at a minimum total cost.

The pollutant concentration, P 2, just upstream of site 2 that results from the pollutant concentration at site 1 equals the total mass of pollutant at site 1 times the fraction α 12 that remains at site 2, divided by the streamflow Q 2 at site 2. The total mass of pollutant at site 1 at the wastewater discharge point is the sum of the mass just upstream of the discharge site, P 1 Q 1, plus the mass discharged into the stream, W 1(1 − x 1), at site 1. The parameter W 1 is the total mass of pollutant entering the treatment plant at site 1. Similarly for site 2. The fraction of waste removal, x 1, at site 1 is to be determined. Hence the concentration of pollutant just upstream of site 2 is

$$ P_{ 2} = [P_{ 1} Q_{ 1} + W_{ 1} ( 1- x_{ 1} )]\alpha_{ 1 2} /Q_{ 2} $$
(4.142)

The terms P 1 and Q 1 are the pollutant concentration (M/L3) and streamflow (L3/T) just upstream of the wastewater discharge outfall at site 1. Their product is the mass of pollutant at that site per unit time period (M/T).

The pollutant concentration, P 3, at site 3 that results from the pollutant concentration at site 2 equals the total mass of pollutant at site 2 times the fraction a 23. The total mass of pollutant at site 2 at the wastewater discharge point is the sum of what is just upstream of the discharge site, P 2 Q 2, plus what is discharged into the stream, W 2(1 − x 2). Hence the concentration of pollutant at site 3 is

$$ P_{ 3} = [P_{ 2} Q_{ 2} + W_{ 2} ( 1- x_{ 2} )]a_{ 2 3} /Q_{ 3} $$
(4.143)

Box 4.2. Calibration of water quality model transfer coefficient parameter a 12

Equations 4.142 and 4.143 will become the predictive portion of the water quality management model . The remaining parts of the model include the restrictions on the pollutant concentrations just upstream of site 2 and at site 3, and limits on the range of values that each waste removal efficiency, x i, can assume.

$$ P_{j} \le P_{j}^{\hbox{max} } \quad {\text{for}}\;\;j = 2\;{\text{and}}\, 3 $$
(4.144)
$$ 0 \le {x}_{i} \le 1.0\quad {\text{for}}\,{i} = 1\,{\text{and}}\, 2. $$
(4.145)

Finally, the objective is to minimize the total cost of meeting the stream quality standards \( P_{2}^{\hbox{max} } \) and \( P_{3}^{\hbox{max} } \) specified in Eqs. 4.144. Letting C i (x i ) represent the cost function of wastewater treatment at sites i = 1 and 2, the objective can be written:

$$ {\text{Minimize}}\quad C_{ 1} \left( {x_{ 1} } \right) + C_{ 2} \left( {x_{ 2} } \right) $$
(4.146)

The complete optimization model consists of Eqs. 4.1424.146. There are four unknown decision variables, x 1; x 2, P 2, and P 3.

Some of the constraints of this optimization model can be combined to remove the two unknown concentration values, P 2 and P 3. Combining Eqs. 4.142 and 4.144, the concentration just upstream of site 2 must be no greater than \( P_{2}^{\hbox{max} } \):

$$ [P_{ 1} Q_{ 1} + W_{ 1} \left( { 1- x_{ 1} } \right)]\alpha_{ 1 2} /Q_{ 2} \le P_{2}^{\hbox{max} } $$
(4.147)

Combining Eqs. 4.143 and 4.144, and using the fraction α 13 (see Eq. 4.134) to predict the contribution of the pollutant concentration at site 1 on the pollutant concentration at Site 3:

$$ \left \{ \left[ {P_{ 1} Q_{ 1} + W_{ 1} \left( { 1- x_{ 1} } \right)} \right]\alpha_{ 1 3} + \left[ {W_{ 2} \left( { 1- x_{ 2} } \right)} \right]a_{ 2 3} \right \} /Q_{ 3} \le P_{3}^{\hbox{max} } $$
(4.148)

Box 4.3. Calibration of water quality model transfer coefficient parameter a 23

Equation 4.148 assumes that each pollutant discharged into the stream can be tracked downstream, independent of the other pollutants in the stream. Alternatively, Eq. 4.148 computes the sum of all the pollutants found at site 2 and then uses that total mass to compute the concentration at site 3. Both modeling approaches give the same results if the parameter values and cost functions are the same.

To illustrate the solution of either of these models, assume the values of the parameters are as listed in Table 4.22. Rewriting the water quality management model defined by Eqs. 4.1454.148 and substituting the parameter values in place of the parameters, and recalling that kg/day = 86.4 (mg/l)(m3/s):

Table 4.22 Parameter values selected for the water quality management problem illustrated in Fig. 4.20

The water quality constraint at site 2, Eq. 4.147, becomes

$$ \left[ {\left( { 3 2} \right)\left( { 10} \right) + 250 ,000\left( { 1- x_{ 1} } \right)/ 8 6. 4} \right]0. 2 5/ 1 2 \le 20 $$

that when simplified is

$$ x_{1} \ge 0.78. $$
(4.149)

The water quality constraint at site 3, Eq. 4.148, becomes

$$ \begin{aligned} \left\{\left[(32)(10)+25,000(1-x_1)/86.4\right]0.15+\left[80,000(1-x_2)/86.4\right]0.60\right\}/13 \le 20\end{aligned} $$

that when simplified is

$$ x_{1} + 1.28x_{2} \ge 1.79. $$
(4.150)

Restrictions on fractions of waste removal, Eq. 4.145, must also be added to this model.

The feasible combinations of x 1 and x 2 can be shown on a graph, as in Fig. 4.21. This graph is a plot of each constraint, showing the boundaries of the region of combinations of x 1 and x 2 that satisfy all the constraints. This red shaded region is called the feasible region.

Fig. 4.21
figure 21

Plot of the constraints of water quality management model identifying those values of the unknown (decision) variables x 1 and x 2 that satisfy all the constraints . These feasible values are contained in and on the boundaries of the red region

To find the least-cost solution we need the cost functions C 1(x 1) and C 2(x 2) in Eqs. 4.146. Suppose these functions are not known. Can we determine the least-cost solution without knowing these costs? Models like the one just developed can be used to determine just how accurate these cost functions (or the values of any of the model parameters) need to be for the decisions being considered.

While the actual cost functions are not known in this example, their general form can be assumed, as shown in Fig. 4.22. Since the wasteloads produced at site 1 are substantially greater than those produced at site 2, and given similar site, labor, and material cost conditions, it seems reasonable to assume that the cost of providing a specified level of treatment at site 1 would exceed (or certainly be no less than) the cost of providing the same specified level of treatment at Site 2. It would also seem the marginal costs at site 1 would be greater than, or at least no less than, the marginal costs at site 2 for any given treatment efficiency. The relative positions of the cost functions shown in Fig. 4.23 are based on these assumptions.

Fig. 4.22
figure 22

General form of total cost functions for wastewater treatment efficiencies at sites 1 and 2 in Fig. 4.20. The dashed straight-line slopes c 1 and c 2 are the average cost per unit (%) removal for 80% treatment. The actual average costs clearly depend on the values of the waste removal efficiencies x 1 and x 2, respectively

Fig. 4.23
figure 23

Plots of various objective functions (dashed lines) together with the constraints of the water quality management model

Rewriting the cost function, Eq. 4.146, as a linear function converts the model defined by Eqs. 4.1454.148 into a linear programming model. For this example problem, the linear programming model can be written as:

$$ {\text{Minimize}}\quad c_{1} x_{1} + c_{2} x_{2} $$
(4.151)

Equation 4.151 is minimized subject to constraints 4.145, 4.149 and 4.150. The values of c 1 and c 2 depend on the values of x 1 and x 2 and both pairs are unknown. Even if we knew the values of x 1 and x 2 before solving the problem, in this example the cost functions themselves (Fig. 4.22) are unknown. Hence, we cannot determine the values of the marginal costs c 1 and c 2. However, we might be able to judge which marginal cost will likely be greater than the other for any particular values of the decision variables x 1 and x 2. In this example that is all we need to know.

First, assume c 1 equals c 2. Let c 1 x 1 + c 2 x 2 equal c and assume c/c 1 = 1. Thus the cost function is x 1 + x 2 = 1.0. This line can be plotted onto the graph in Fig. 4.21, as shown by line “a” in Fig. 4.23.

Line “a” in Fig. 4.23 represents equal values for c 1 and c 2, and the total cost, c 1 x 1 + c 2 x 2, equal to 1. Keeping the slope of this line constant and moving it upward, representing increasing total costs, to line “b”, where it covers the nearest point in the feasible region, will identify the least-cost combination of x 1 and x 2, again assuming the marginal costs are equal. In this case the solution is approximately 80% treatment at both sites.

Note this particular least-cost solution also applies for any value of c 1 greater than c 2 (for example line “c” in Fig. 4.23). If the marginal cost of 80% treatment at site 1 is no less than the marginal cost of 80% treatment at site 2, then c 1 ≥ c 2 and indeed the 80% treatment efficiencies will meet the stream standards for the design streamflow and wasteload conditions at a total minimum cost. In fact, from Fig. 4.23 and Eq. 4.150, it is clear that c 2 has to exceed c 1 by a multiple of 1.28 before the least-cost solution changes to another solution. For any other assumption regarding c 1 and c 2, 80% treatment at both sites will result in a least-cost solution to meeting the water quality standards for those design wasteload and streamflow conditions.

If c 2 exceeds 1.28c 1, as illustrated by line “d”, then the least-cost solution would be x 1 = 100% and x 2 = 62%. Clearly, in this example the marginal cost, c 1, of providing 100% wasteload removal at site 1 will exceed the marginal cost, c 2, of 60% removal at site 2, and hence, that combination of efficiencies would not be a least-cost one. Thus we can be confident that the least-cost solution is to remove 80% of the waste produced at both waste-generating sites.

Note the least-cost wasteload removal efficiencies have been determined without knowing the cost functions. Why spend money defining these functions more precisely? The answer: costs need to be known for financial planning, if not for economic analyses. No doubt the actual costs of installing the least-cost treatment efficiencies of 80% will have to be determined for issuing bonds or making other arrangements for paying the costs. However, knowing the least-cost removal efficiencies means we do not have to spend money defining the entire cost functions C i (x i ). Estimating the construction and operating costs of achieving just one wastewater removal efficiency at each site, namely 80%, should be less expensive than defining the total costs for a range of practical treatment plant efficiencies that would be required to define the total cost functions, such as shown in Fig. 4.22.

Admittedly this example is relatively simple. It will not always be possible to determine the “optimal ” solutions to linear programming problems, or other optimization problems, without knowing more about the objective function than was assumed for this example. However, this exercise illustrates the use of modeling for purposes other than finding good or “optimal” solutions. Models can help define the necessary precision of the data needed to find those solutions.

Modeling and data collection and analysis should take place simultaneously. All too often planning exercises are divided into two stages: data collection and then analysis. Until one knows what data one will need, and how accurate those data must be, one need not spend money and time collecting them. Conversely, model development in the absence of any knowledge of the availability and cost of obtaining data can lead to data requirements that are costly, or even impossible, to obtain, at least in the time available for decision-making . Data collection and model development are activities that should be performed simultaneously.

Because software is widely available to solve linear programming programs, because these software programs can solve very large problems containing thousands of variables and constraints, and finally because there is less chance of obtaining a local “nonoptimal” solution when the problem is linear (at least in theory), there is an incentive to use linear programming to solve large optimization problems. Especially for large optimization problems, linear programming is often the only practical alternative for finding at least an approximate optimal solution. Yet models representing particular water resources systems may not be linear. This motivates the use of methods that can approximate nonlinear functions with linear ones, or the use of other search algorithms such as those discussed in Chap. 5).

The following simple groundwater supply problem illustrates the application of some linearization methods commonly applied to nonlinear separable functions—functions of only one unknown variable.

These approximation methods typically increase the number of variables and constraints in a model. Some of these methods require integer variables, or variables that can have values of only 0 or 1. There is a practical limit on the number of integer variables any linear programming software program can handle. Hence, for large models there may be a need to perform some preliminary screening designed to reduce the number of alternatives that should be considered in more detail. This example can be used to illustrate an approach to preliminary screening .

4.5.3 A Groundwater Supply Example

Consider a water-using industry that plans to obtain water from a groundwater aquifer . Two wellfield sites have been identified. The first question is how much will the water cost, and the second, given any specified amount of water delivered to the user, is how much should come from each wellfield. This situation is illustrated in Fig. 4.24.

Fig. 4.24
figure 24

Schematic of a potential groundwater supply system that can serve a water-using industry. The unknown variables are the flows, Q A and Q B, from each wellfield

Wells and pumps must be installed and operated to obtain water from these two wellfields. The annual cost of wellfield development will depend on the pumping capacity of the wellfield. Assume that the annual costs associated with various capacities Q A and Q B for Wellfields A and B, respectively, are as shown in Fig. 4.25. These are nonlinear functions that contain both fixed and variable costs and hence are discontinuous. The fixed costs result from the fact that some of the components required for wellfield development come in discrete sizes. As indicated in the figure, the maximum flow capacity of Wellfields A and B are 17 and 13, respectively.

Fig. 4.25
figure 25

Annual cost functions associated with the Wellfields A and B as shown in Fig. 4.24. The actual functions are shown on the left, and two sets of piecewise linear approximations are shown on the right

In Fig. 4.25, the nonlinear functions on the left have been approximated by piecewise linear functions on the right. This is a first step in linearizing nonlinear separable functions. Increasing the number of linear segments can reduce the difference between the piecewise linear approximation of the actual nonlinear function and the function itself. At the same time it will increase the number of variables and possibly constraints.

When approximating a nonlinear function by a series of straight lines, model developers should consider two factors. The first is just how accurate need be the approximation of the actual function for the decisions that will be made, and second is just how accurate is the actual (in this case nonlinear) function in the first place. There is little value in trying to eliminate relatively small errors caused by the linearization of a function when the function itself is highly uncertain. Most cost and benefit functions, especially those associated with future activities, are indeed uncertain.

4.5.3.1 A Simplified Model

Two sets of approximations are shown in Fig. 4.26. Consider first the approximations represented by the light blue dot-dash lines. These single straight lines are very crude approximations of each function. In this example these straight-line cost functions are lower bounds of the actual nonlinear costs. Hence, the actual costs may be somewhat higher than those identified in the solution of a model.

Fig. 4.26
figure 26

Least-cost wellfield use given total demand Q based on model defined by Eqs. 4.152 to 4.160

Using the blue dot-dash linear approximations in Fig. 4.26, the linear programming model can be written as follows:

$$ {\text{Minimize}}\quad {\text{Cost}}A + {\text{Cost}}B $$
(4.152)

Subject to

$$ \begin{aligned} {\text{Cost}}A & = 8I_{A} + \left[ {\left( {40 - 8} \right)/17} \right]Q_{A} \\ & \quad {\text{linear approximation of }}C\left( {Q_{A} } \right) \\ \end{aligned} $$
(4.153)
$$ \begin{aligned} {\text{Cost}}B & = 1 5I_{B} + \left[ {\left( { 2 6 - 1 5} \right)/ 1 3} \right]Q_{B} \\ & \quad {\text{linear}}\,{\text{approximation}}\,{\text{of}}\,C\left( {Q_{B} } \right) \\ \end{aligned} $$
(4.154)
$$ I_{A} ,{\text{I}}_{B} \,{\text{are}}\,0, 1\;{\text{integer}}\;\left( {\text{binary}} \right)\;{\text{variables}} $$
(4.155)
$$ Q_{A} \le 1 7I_{A} \,{\text{limits}}\,Q_{A} \,{\text{to}}\, 1 7\,{\text{and}}\,{\text{forces}}\,I_{A} = 1\quad {\text{if}}\,Q_{A} > 0 $$
(4.156)
$$ Q_{B} \le 1 3I_{B} \,{\text{limits}}\,Q_{B} \,{\text{to}}\, 1 3\,{\text{and}}\,{\text{forces}}\,I_{B} = 1\quad {\text{if}}\;Q_{B} > 0 $$
(4.157)
$$ Q_{A} + Q_{B} = Q\,{\text{mass}}\,{\text{balance}} $$
(4.158)
$$ \begin{aligned} &Q, Q_{A} ,Q_{B} \ge 0\,&\\&{\text{non}}{\text{-negativity}}\,{\text{of}}\,{\text{all}}\,{\text{decision}}\,{\text{variables}}& \end{aligned}$$
(4.159)
$$ Q = {\text{some}}\,{\text{specified}}\,{\text{amount}}\,{\text{from}}\,0\,{\text{to}}\, 30. $$
(4.160)

The expressions within the square brackets, [ ], in Eqs. 4.154 and 4.155 above represent the slopes of the dot-dash linear approximations of the cost functions. The integer 0, 1 variables are required to include the fixed costs in the model.

Solving this linear model for various values of the water demand Q provides some interesting results. Again, they are based on the dot-dash linear cost functions in Fig. 4.25. As Q increases from 0 to just under 6.8, all the water will come from the less expensive Wellfield A. For any Q from 6.8 to 13, Wellfield B becomes less expensive and all the water will come from it. For any Q greater than the capacity of Wellfield B of 13 but no greater than the capacity of Wellfield A, 17, all of it will come from Wellfield A. Because of the fixed costs, it is cheaper to use one rather than both wellfields. Beyond Q = 17, the maximum capacity of A, water needs to come from both wellfields. Wellfield B will pump at its capacity, 13, and the additional water will come from Wellfield A.

Figure 4.26 illustrates these solutions. One can understand why in situations of increasing demands for Q over time, capacity expansion modeling might be useful. One would not close down a wellfield once developed, just to achieve what would have been a least-cost solution if the existing wellfield had not been developed.

4.5.3.2 A More Detailed Model

A more accurate representation of these cost functions may change these solutions for various values of Q, although not significantly. However consider the more accurate cost minimization model that includes the red solid-line piecewise linearizations shown in Fig. 4.26.

$$ {\text{Minimize}}\quad {\text{Cost}}A + {\text{Cost}}B $$
(4.161)

Subject to

linear approximation of cost functions:

$$ \begin{aligned} {\text{Cost}}A & = \left\{ { 8I_{A1} + \left[ {\left( { 20 - 8} \right)/ 5} \right]Q_{A1} } \right\} \\ & \quad + \left\{ { 2 6I_{A2} + [\left( { 30 - 2 6} \right)/( 10 - 5)]Q_{A2} } \right\} \\ & \quad + \left\{ { 3 5I_{A3} + [\left( { 40 - 3 5} \right)/\left( { 1 7- 10} \right)]Q_{A3} } \right\} \\ \end{aligned} $$
(4.162)
$$ \begin{aligned} {\text{Cost}}B & = \left\{ { 1 5I_{B1} + \left[ {\left( { 1 8- 1 5} \right)/ 3} \right]Q_{B1} } \right\} \\ & \quad + \left\{ { 1 8I_{B2} + \left[ {\left( { 20 - 1 8} \right)/\left( { 10 - 3} \right)} \right]Q_{B2} } \right. \\ & \quad \left. { + \left[ {\left( { 2 6- 20} \right)/\left( { 1 3- 10} \right)} \right]Q_{B3} } \right\} \\ \end{aligned} $$
(4.163)

Q A and Q B defined.

$$ Q_{A} = Q_{A1} + \left( { 5I_{A2} + Q_{A2} } \right) + \left( { 10I_{A3} + Q_{A3} } \right) $$
(4.164)
$$ Q_{B} = Q_{B1} + \left( { 3I_{B2} + Q_{B2} + Q_{B3} } \right) $$
(4.165)
$$ I_{Ai} \;{\text{and}}\;I_{Bi} \;{\text{are}}\;0,1\;{\text{integer}}\;{\text{variables}}\;{\text{for}}\;{\text{all}}\; {\text{segments}}\;{i} $$
(4.166)
$$ \begin{aligned} Q_{A1} & \le 5I_{A1} \\ Q_{A2} & \le \left( { 10 - 5} \right)I_{A2} , \\ Q_{A3} & \le \left( { 1 7- 10} \right)I_{A3} \quad {\text{limits}}\,Q_{Ai} \,{\text{to}}\,{\text{width}}\,{\text{of}}\\ & \quad {\text{segment}}\,i\,{\text{and}}\,{\text{forces}}\,{I}_{Ai} = 1\,{\text{if}}\,Q_{Ai} > 0 \\ \end{aligned} $$
(4.167)
$$ \begin{aligned} I_{{A1}} + I_{{A2}} + {\text{I}}_{{A3}} \le 1\quad {\text{limits solution to at most }} \\ & \quad {\text{only one cost function segment }}i. \\ \end{aligned} $$
(4.168)
$$ \begin{aligned} Q_{B1} & \le 3I_{B1} , \\ Q_{B2} & \le \left( { 10 - 3} \right)I_{B2} , \\ Q_{B3} & \le \left( { 1 3- 10} \right)I_{B2} \quad {\text{limits}}\,Q_{Bi} \,{\text{to}}\,{\text{width}}\,{\text{of}}\,{\text{segment}}\,i\,{\text{and}}\,{\text{forces}}\,{\text{I}}_{Bi} = 1\,{\text{if}}\,{Q}_{{B}i} > 0. \\ \end{aligned} $$
(4.169)
$$ I_{B1} + I_{B2} \le 1 $$
(4.170)
$$ {Q} = Q_{A} + Q_{B} \,{\text{mass}}\,{\text{balance}} $$
(4.171)
$$ \begin{aligned} &Q,Q_{A} ,Q_{B} \ge 0\,\\&{\text{non}}{\text{-negativity}}\,{\text{of}}\,{\text{all}}\,{\text{decision}}\,{\text{variables}} \end{aligned}$$
(4.172)
$$ Q = {\text{some}}\,{\text{specified}}\,{\text{amount}}\,{\text{from}}\,0\,{\text{to}}\, 30 $$
(4.173)

Constraint (4.170) limits the solution to at most only the first segment or to the second and third segments of the cost function for wellfield B. Note that a 0, 1 integer variable for the fixed cost of the third segment of this function is not needed since its slope exceeds that of the second segment. However the flow, Q B3, in that segment must be bounded using the integer 0, 1 variable, I B2, associated with the second segment, as shown in the third of Eqs. 4.169.

The solution to this model, shown in Fig. 4.27, differs from the solution of the simpler model, but only in the details. Wellfield A supplies all the water for Q ≤ 4.3. For values of Q in excess of 4.3 up to 13 all the water comes from Wellfield B. For values of Q in excess of 13 up to 14.8, the capacity of Wellfield B remains at its maximum capacity of 13 and Wellfield A provides the additional amount of needed capacity over 13. As Q increases from 14.9 to 17, the capacity of Wellfield B drops to 0 and the capacity of Wellfield A increases from 14.9 to 17. For values of Q between 17 and 18 Wellfield B provides 13, its maximum capacity, and the capacity of A increases from 4 to 5. For values of Q from 18.1 to 20, Wellfield B decreases to a constant 10, and Wellfield A increases from 8.1 to 10. For values of Q from 20 to 23, Wellfield A remains at 10 and Wellfield B increases from 10 to 13. For values of Q from 23 to 27, Wellfield B again drops to a constant 10 and Wellfield A increases from 13 to 17. For values of Q in excess of 27, Wellfield A remains at its maximum capacity of 17, and Wellfield B increases from 10 to 13.

Fig. 4.27
figure 27

Least-cost wellfield use given total demand Q based on Eqs. 4.161 to 4.173

As in the previous example, this shows the effect on the least-cost solution when one cost function has relatively lower fixed and higher variable costs compared with another cost function having relatively higher fixed and lower variable costs.

4.5.3.3 An Extended Model

In this example, the simpler model (Eqs. 4.1524.160) and the more accurate model (Eqs. 4.1614.173) provided essentially the same allocations of wellfield capacities associated with a specified total capacity Q. If the problem contained a larger number of wellfields, the simpler (and smaller) model might have been able to eliminate some of these wellfields from further consideration. This would reduce the size of any new model that approximates the cost functions of the remaining wellfields more accurately.

The model just described, like the capacity expansion model and water quality management model , is another example of a cost-effective model. The objective was to find the least-cost way of providing a specified amount of water to a water user. It does not address the problem of planning for an increasing demand for Q over time. Clearly it makes no sense to implement the particular cost-effective solution for any value of Q, as shown in Fig. 4.27, as the demand for Q increases, as in this example, from 0 to 30. This is the capacity expansion problem, the solution of which will benefit from models that take time into account and that are not static as illustrated previously in this chapter.

Next, consider a cost–benefit analysis in which the question is just how much water should users use. To address this question we assume the user has identified the annual benefits associated with various amounts of water. The annual benefit function, B(Q), and its piecewise linear approximations, are shown in Fig. 4.28.

Fig. 4.28
figure 28

Benefit function of the amount of water provided to the water user. Piecewise linear approximations of that function of flow are shown on the right

The straight, blue, dot-dash linear approximation of the benefit function shown in Fig. 4.28 is an upper bound of the benefits . Incorporating it into a model that uses the dot-dash linear lower bound approximations of each cost function, as shown in Fig. 4.25 will produce an optimistic solution. It is unlikely that the value of Q that is based on more accurate and thus less optimistic benefit and cost functions will be any greater than the one identified by this simple optimistic model. Furthermore, if any wellfield is not in the solution of this optimistic model, with some care we might be able to eliminate that wellfield from further consideration when developing a more accurate model.

Any component of a water resources system that does not appear in the solution of a model that includes optimistic approximations of performance measures that are to be maximized, such as benefits, or that are to be minimized, such as costs, are candidates for omission in any more detailed model. This is an example of the process of preliminary screening.

The model defined by Eqs. 4.1524.160 can now be modified. Equation 4.160 is eliminated and the cost minimization objective Eq. 4.152 is replaced with:

$$ {\text{Maximize}}\quad {\text{Benefits}} - \left( {{\text{Cost}}A + {\text{Cost}}B} \right) $$
(4.174)

where

$$ {\text{Benefits}} = 10 + \left[ {\left( { 4 5- 2 5} \right)/\left( { 2 1- 9} \right)} \right]Q\quad {\text{linear}}\,{\text{approximation}}\,{\text{of}}\,B\left( Q \right) $$
(4.175)

The solution of this model, Eqs. 4.1534.159, 4.174, and 4.175 (plus the condition that the fixed benefit of 10 only applies if Q > 0, added because it is clear the benefits would be 0 with a Q of 0) indicates that only Wellfield B needs to be developed, and at a capacity of 10. This would suggest that Wellfield A can be omitted in any more detailed modeling exercise. To see if this assumption, in this example, is valid, consider the more detailed model that incorporates the red, solid-line linear approximations of the cost and benefit functions shown in Figs. 4.25 and 4.28.

Note that the approximation of the generally concave benefit function in Fig. 4.29 will result in negative values of the benefits for small values of Q. For example, when the flow Q, is 0 the approximated benefits are −10. Yet the actual benefits are 0 as shown in the left part of Fig. 4.28. Modeling these initial fixed benefits the same way as the fixed costs have been modeled, using another 0, 1 integer variable, would allow a more accurate representation of the actual benefits for small values of Q.

Alternatively, to save having to add another integer variable and constraint to the model, one can allow the benefits to be negative. If the model solution shows negative benefits for some small value of Q, then obviously the more preferred value of Q, and benefits, would be 0. This more approximate trial-and-error approach is often preferred in practice, especially when a model contains a large number of variables and constraints. This is the approach taken here.

4.5.3.4 Piecewise Linear Model

There are a number of ways of modeling the piecewise linear concave benefit function shown on the right side of Fig. 4.28. Several are defined in the next several sets of equations. Each method will result in the same model solution.

One approach to modeling the concave benefit function is to define a new unrestricted (possibly negative valued) variable. Let this variable be Benefits. When being maximized this variable cannot exceed any of the linear functions that bound the concave benefit function:

$$ {\text{Benefits}} \le - 10 + \left[ {\left( { 2 5- \left( { - 10} \right)} \right)/ 9} \right]Q $$
(4.176)
$$ {\text{Benefits}} \le 10 + \left[ {\left( { 4 5- 2 5} \right)/\left( { 2 1- 9} \right)} \right]Q $$
(4.177)
$$ {\text{Benefits}} \le 3 3+ \left[ {\left( { 50 - 4 5} \right)/\left( { 30 - 2 1} \right)} \right]Q $$
(4.178)

Since most linear programming algorithms assume the unknown variables are nonnegative (unless otherwise specified), unrestricted variables, such as Benefits, can be replaced by the difference between two nonnegative variables, such as Pben − Nben. Pben will equal Benefits if its value is greater than 0. Otherwise −Nben will equal Benefits. Thus in place of Benefits in Eqs. 4.1764.178, and those below, one can substitute Pben − Nben.

Another modeling approach is to divide the variable Q into parts, q i , one for each segment i of the function. These parts sum to Q. Each q i , ranges from 0 to the width of the user-defined segment i. Thus for the piecewise linear benefit function shown on the right of Fig. 4.28:

$$ {q}_{ 1} \le 9 $$
(4.179)
$$ {q}_{ 2} \le 2 1- 9 $$
(4.180)
$$ {q}_{ 3} \le 30 - 2 1 $$
(4.181)

and

$$ Q = q_{ 1} + q_{ 2} + q_{ 3} $$
(4.182)

The linearized benefit function can now be written as the sum over all three segments of each segment slope times the variable q i :

$$ \begin{aligned} {\text{Benefits}} & = - 10 + [(25 + 10)/9]q_{1} \\ & \quad + \left[ {\left( {45 - 25} \right)/\left( {21 - 9} \right)} \right]q_{2} \\ & \quad + \left[ {\left( {50 - 45} \right)/\left( {30 - 21} \right)} \right]q_{3} \\ \end{aligned} $$
(4.183)

Since the function being maximized is concave (decreasing slopes as Q increases), we are assured that each q i  + 1 will be greater than 0 only if q i is at its upper limit, as defined by constraint Eqs. 4.1794.181.

A third method is to define unknown weights w i associated with the breakpoints of the linearized function. The value of Q can be expressed as the sum of a weighted combination of segment endpoint values. Similarly, the benefits associated with Q can be expressed as a weighted combination of the benefits evaluated at the segment endpoint values. The unknown weights must also sum to 1. Hence, for this example:

$$ {\text{Benefits}} = \left( { - 10} \right)w_{ 1} + 2 5w_{ 2} + 4 5w_{ 3} + 50w_{ 4} $$
(4.184)
$$ Q = 0w_{ 1} + 9w_{ 2} + 2 1w_{ 3} + 30w_{ 4} $$
(4.185)
$$ 1= w_{ 1} + w_{ 2} + w_{ 3} + w_{ 4} $$
(4.186)

For this method to provide the closest approximation of the original nonlinear function, the solution must include no more than two nonzero weights and those nonzero weights must be adjacent to each other. For concave functions that are to be maximized, this condition will be met, since any other situation would yield less benefits.

The solution to the more detailed model defined by Eqs. 4.174, 4.1624.172, and either 4.1764.178, 4.1794.183, or 4.1844.186, indicates a value of 10 for Q will result in the maximum net benefits . This flow is to come from Wellfield B. This more precise solution is identical to the solution of the simpler model. Clearly the simpler model could have successfully served to eliminate Wellfield A from further consideration.

4.5.4 A Review of Linearization Methods

This section reviews the piecewise linearization methods just described and some other approaches for incorporating nonlinear conditions into linear programming models. All of these methods maintain linearity.

If-then-else conditions

There exist a number of ways “if-then-else” and “and” and “or” conditions (that is, decision trees) can be included in linear programming models. To illustrate some of them, assume X is an unknown decision variable in a model whose value may depend on the value of another unknown decision variable Y. Assume the maximum value of Y would not exceed Y max and the maximum value of X would not exceed X max. These upper bounds and all the linear constraints representing “if-then-else” conditions must not restrict the values of the original decision variable Y. Four “if-then-else” (with “and/or”) conditions are presented below using additional integer 0.1 variables, denoted by Z. All the X, Y, and Z variables in the constraints below are assumed to be unknown. These constraints would be included in the any linear programming model where the particular “if-then-else” conditions apply.

These illustrations are not unique. At the boundaries of the “if” constraints in the examples below, either of the “then” or “else” conditions can apply. All variables (X, Y) are assumed nonnegative. All variables Z are assumed to be a binary (0, 1) variables. Note the constraints are all linear.

  1. (a)

    \( {\text{If}}\;Y \le 50\;{\text{then}}\;X \le 10,\;{\text{else}}\;X \ge 15 . \)

    Define constraints:

    $$ \begin{aligned} Y & \le 50\,Z + Y_{\max} \left( { 1- Z} \right) \\ Y & \ge 50\left( { 1- Z} \right) \\ X & \le 10Z + X_{\max} \left( { 1- Z} \right) \\ X & \ge 1 5\left( { 1- Z} \right) \\ \end{aligned} $$
  2. (b)

    \( {\text{If}}\;Y \le 50\;{\text{then}}\;X \le Y,\;{\text{else}}\;X \ge Y. \)

    Define constraints :

    $$ \begin{aligned} & Y \ge 50Z \\ & Y \le 50\left( {1 - Z} \right) + Y_{\hbox{max} } Z \\ & X \le Y + X_{\hbox{max} } Z \\ & X \ge Y - Y_{\hbox{max} } \left( {1 - Z} \right) \\ \end{aligned} $$
  3. (c)

    \( {\text{If}}\;Y \le 20\;{\text{or}}\;Y \ge 80\;{\text{then}}\;X = 5,\;{\text{else}}\;X \ge 10. \)

    Define constraints:

    $$ \begin{aligned} & Y \le 20Z_{ 1} + 80Z_{ 2} + Y_{\max} \left( { 1- Z_{ 1} - Z_{ 2} } \right) \\ & Y \ge 20Z_{ 2} + 80\left( { 1- Z_{ 1} - Z_{ 2} } \right) \\ & Z_{ 1} + Z_{ 2} \le 1\\ & {X} \le 5\left( {Z_{ 1} + \left( { 1- Z_{ 1} - Z_{ 2} } \right)} \right) + X_{\max} Z_{ 2} \\ & X \ge 5 { }(Z_{ 1} + ( 1- Z_{ 1} - Z_{ 2} )) \\ & X \ge 10Z_{ 2} \\ \end{aligned} $$
  4. (d)

    If 20 ≤ Y ≤ 50 or 60 ≤ Y ≤ 80, then X ≤ 5, else X ≥ 10.

    Define constraints:

    $$ \begin{aligned} & Y \le 20Z_{ 1} + 50Z_{ 2} + 60Z_{ 3} + 80Z_{ 4} \\ & \qquad + Y_{\max}\left( { 1- Z_{ 1} - Z_{ 2} - Z_{ 3} - Z_{ 4} } \right). \\ & Y \ge 20Z_{ 2} + 50Z_{ 3} + 60Z_{ 4} \\ & \qquad + 80\left( { 1- Z_{ 1} - Z_{ 2} - Z_{ 3} - Z_{ 4} } \right) \\ & {\text{Z}}_{ 1} + {\text{Z}}_{ 2} + {\text{Z}}_{ 3} + {\text{Z}}_{ 4} \le 1\\ & X \le 5\left( {Z_{ 2} + Z_{ 4} } \right) + X_{\max}\left( { 1- Z_{ 2} - Z_{ 4} } \right) \\ & X \ge 10\left( {\left( {Z_{ 1} + Z_{ 3} } \right) + \left( { 1- Z_{ 1} - Z_{ 2} - Z_{ 3} - Z_{ 4} } \right)} \right) \\ \end{aligned} $$

Minimizing the absolute value of the difference between two unknown nonnegative variables:

Minimize |X − Y| is equivalent to

$$ {\text{Minimize}}\;D $$

subject to

$$ \begin{aligned} & X - Y \le D; \\ & Y - X \le D; \\ & X,Y,{\text{D}} \ge 0. \\ \end{aligned} $$

or

$$ {\text{Minimize}}\;\left( {{\text{PD}} + {\text{ND}}} \right) $$

subject to

$$ \begin{aligned} & X - Y = {\text{PD}} - {\text{ND}}; \\ & {\text{PD}},{\text{ND}}, X, Y \ge 0. \\ \end{aligned} $$

Minimizing the maximum or maximizing the minimum

Let the set of variables be {X 1, X 2, X 3, …, X n }, Minimizing the maximum of {X 1, X 2, X 3, …, X n } is equivalent to

$$ {\text{Minimize}}\;\;U $$

subject to

$$ U \ge X_{j} ,\quad j = 1,2,3, \ldots ,n. $$

Maximizing the minimum of {X 1, X 2, X 3, …, X n } is equivalent to

$$ {\text{Maximize}}\;\;L $$

subject to

$$ L \le X_j ,\quad j = 1, 2, 3, \ldots ,n. $$

Linearization of convex functions for maximization or concave function for minimization involves 0, 1 binary variables.

Fixed costs in cost functions

Consider functions that have fixed components if the argument of the function is greater than 0.

$$ \begin{array}{*{20}c} {{\text{Cost}} = C_{0} + CX} & {{\text{if}}\;\;X > 0,} \\ { = 0} & {{\text{otherwise}} .} \\ \end{array} $$

To include these fixed costs in a LP model, define

$$ {\text{Cost}} = C_{0} I + CX $$

Subject to

$$ X \le MI $$

where M is the maximum value of X, and I is an unknown 0, 1 binary variable.

Minimizing convex functions or maximizing concave functions .

$$ {\text{Maximize}}\;\; G\left( X \right) = {\text{Maximize}}\;\;B $$

Subject to

$$ \begin{aligned} & I_{ 1} + S_{ 1} X \ge B \\ & I_{ 2} + S_{ 2} X \ge B \\ & I_{ 3} + S_{ 3} X \ge B \\ \end{aligned} $$
$$ \begin{aligned} & {\text{Minimize}}\;\;F\left( X \right) = S_{1} x_{1} + S_{2} x_{2} + S_{3} x_{3} \\ & {\text{Maximize}}\;\;G\left( X \right) = S_{ 1} x_{ 1} + S_{ 2} x_{ 2} + S_{ 3} x_{ 3} \\ \end{aligned} $$

Subject to

$$ \begin{aligned} X & = x_{ 1} + x_{ 2} + x_{ 3} \\ x_{ 1} & \le a \\ x_{ 2} & \le b - a \\ \end{aligned} $$
$$ \begin{aligned} {\text{Minimize}}\;\; F\left( X \right) & = F( 0 )w_{ 1} + F\left( {a} \right)w_{2} + F\left( {b} \right)w_{3} + F\left( {c} \right)w_{4} \\ {\text{Maximize}}\;\;G\left( X \right) & = G( 0 )w_{1} + G\left( {a} \right)w_{ 2} + G\left( {b} \right)w_{ 3} + G\left( {c} \right)w_{ 4} \\ \end{aligned} $$

Subject to

$$ \begin{aligned} & X = 0w_{ 1} + { a}w_{ 2} + {b}\,w_{ 3} + {c}\,w_{ 4} \\ & w_{ 1} + w_{ 2} + w_{ 3} + w_{ 4} = 1\\ \end{aligned} $$

Minimizing concave functions or maximizing convex functions

$$ {\text{Minimize}}\;\;G\left( X \right) \cong 5x_{ 1} + (20z_{2} + 3x_{2} ) + ( 4 4z_{ 3} + 2x_{ 3} ) $$

Subject to

$$ \begin{aligned} & x_{ 1} + ( 4z_{ 2} + x_{ 2} ) + ( 1 2z_{ 3} + x_{ 3} ) = X \\ & z_{\text{s}} = 0\; {\text{or}}\; 1\,{\text{for}}\;{\text{all}}\;{\text{segments}}\,{\text{s}} \\ \end{aligned} $$
$$ \begin{aligned} & x_{1} \le 4z_{1} ; \\ & x_{2} \le 8z_{2} ; \\ & x_{3} \le 99z_{3} ; \\ & z_{1} + z_{2} + z_{3} = 1. \\ \end{aligned} $$

Minimizing or maximizing combined concave–convex functions

$$ {\text{Maximize}}\quad C\left( X \right) = \left( {5z_1 + 6x_1 + 3x_2} \right) + \left( {53z_3 + 5x_3} \right) $$

Subject to

$$ \begin{aligned} & \left( {x_{1} + x_{2} } \right) + \left( {12z_{3} + x_{3} } \right) = X \\ & x_{1} \le 4z_{1} \\ & x_{2} \le 8z_{1} \\ & x_{3} \le 99z_{3} \\ & z_{1} + z_{3} = 1 \\ & z_{1} ,z_{3} = 0,1 \\ \end{aligned} $$
$$ {\text{Minimize}}\quad C(X) = \left( 5z_{1} + 6x_{1} \right) + \left( 29z_{2}+ 3x_{2} + 5x_{3} \right) $$

Subject to

$$ \begin{aligned} & z_{1} ,z_{2} = 0,1. \\ & x_{1} + (4z_{2} + x_{2} + x_{3} ) = X \\ & x_{1} \le 4z_{1} \\ & x_{2} \le 8z_{2} \\ & x_{3} \le 99z_{2} \\ & z_{1} + z_{2} \le 1 \\ \end{aligned} $$
$$ {\text{Maximize}} \quad C\left( X \right) = ({5}z_{1} + {6}x_{1} + {3}x_{2} ) + \left( { - {17}z_{3} + {5}x_{3} } \right) $$

Subject to

$$ \begin{aligned} \left( {x_{1} + x_{2} } \right) + x_{3} = X \\ z_{1} ,z_{3} = 0,{1} \\ x_{1} \le 4z_{1} \\ x_{2} \le 8z_{1} \\ x_{3} \le 99z_{3} \\ z_{1} + z_{3} = {1}; \\ \end{aligned} $$
$$ {\text{Minimize}} \quad C\left( X \right) = ({5}z_{1} + {6}x_{1} ) + ({17}z_{2} + {3}x_{2} + {5}x_{3} ) $$

Subject to

$$ \begin{aligned} & x_{1} + \left( {{4}z_{2} + x_{2} + x_{3} } \right) = X \\ & z_{1} ,z_{2} = 0,{1}. \\ & x_{1} \le {4}z_{1} \\ & x_{2} \le {12}z_{2} \\ & x_{3} \le {99}z_{2} \\ & z_{1} + z_{2} \le {1} \\ \end{aligned} $$

Maximize or Minimize F(X)

$$ F\left( X \right) = ( 5z_{ 1} + 6x_{ 1} ) + ( 3 5z_{ 2} + 3x_{ 2} ) + ( 3 2z_{ 3} {-} 2x_{ 3} ) + 2 2z_{ 4} $$

Subject to

$$ \begin{aligned} & x_{1} + ({4}z_{2} + x_{2} ) + ({12}z_{3} + x_{3} ) + ({17}z_{ 4} + {x}_{4} ) = X \\ & x_{1} \le {4}{z}_{1} \\ & {x}_{2} \le {8}z_{2} \\ & x_{3} \le {5}z_{3} \\ & x_{4} \le {99}z_{4} \\ & z_{1} + z_{2} + z_{3} + z_{4} = {1}; \\ & z_{\text{s}} = 0,1\quad {\text{for all segments s}} \\ \end{aligned} . $$

4.6 A Brief Review

Before proceeding to other optimization and simulation methods in the following chapters, it may be useful to review the topics covered so far. The focus has been on model development as well as model solution. Several types of water resources planning and management problems have been used to illustrate model development and solution processes. Like their real-world counterparts, the example problems all had multiple unknown decision variables and multiple constraints. Also like their real-world counterparts, there are multiple feasible solutions to each of these problems. Hence, the task is to find the best solution, or a number of near-best solutions. Each solution must satisfy all the constraints .

Constraints can reflect physical conditions, environmental regulations and/or social or economic targets . Especially with respect to environmental or social conditions and goals, it is often a matter of judgment to decide what is considered an objective that is to be minimized or maximized and what is considered a constraint that has to be met. For example, do we minimize the costs of meeting specified maximum levels of pollutant concentrations or minimize pollutant concentrations without exceeding specified costs?

Except for relatively simple problems, the use of these optimization models and methods is primarily for reducing the number of alternatives that need to be further analyzed and evaluated using simulation methods . Optimization is generally used for preliminary screening —eliminating inferior alternatives before more detailed analyses are carried out. Presented were some approaches to preliminary screening involving hill-climbing, calculus-based Lagrange multiplier , numerical nonlinear programming, discrete dynamic programming, and linear programming methods. Each method has its strengths and limitations. Both linear and nonlinear programming models are typically solved using software packages. Many of these software programs are free and readily available. But before any model can be solved, it has to be built. Building models is an art and that is what this chapter has attempted to introduce.

The example problems used to illustrate these modeling and model solution methods have been relatively simple. However, simple applications such as these can form the foundation of models of more complex problems, as will be shown in following chapters.