Intra-period Market Clearing for a Multi-Use Catchment via CDDP Indra Mahakalanda, Shane Dye, E. Grant Read, John F. Raffensperger Department of Management, University of Canterbury, New Zealand. [email protected] Abstract In this paper, we show how to efficiently optimise consumptive and non-consumptive water use in any river catchment that can be represented as a tree radiating from a single reservoir. We describe a deterministic Constructive Dual Dynamic Programming (CDDP) algorithm which implicitly clears a market, across all nodes in the catchment, to construct a net demand curve for water released from the reservoir, in each period. Given these intra-period demand curves, a stochastic CDDP algorithm can construct the demand curve for water stored in the reservoir, thus clearing an inter-temporal market to optimise both consumptive and non-consumptive water use across time. Key words: Reservoir optimization, water markets, CDDP 1 Introduction A reservoir operator faces the difficult decision as to how much water to release to users in the current period, and how much to store or release later. Her decision depends on the amount of water available, on uncertain inflows into the catchment, and on present and future consumptive and non-consumptive demands. This paper addresses this decision problem, with a focus on market clearing. Read and Hindsberger (2010) survey applications of Constructive Dual Dynamic Programming (CDDP) for intertemporal reservoir optimization, some of which have been in market contexts. (Scott & Read, 1996). Dye, Read, Read, and Starkey (2012) describe experiments using CDDP to determine the value that could be added by using stochastic optimisation in an intertemporal market clearing context (Starkey, Dye, Read, & Read, 2012). However, those previous studies do not explicitly address the structure of the river network, and interactions between consumptive and non-consumptive water users at various points within it, whether by a market or otherwise. The stochastic CDDP algorithm decomposes the inter-temporal optimisation into a sequence of single period trade-offs between the benefits of immediate release and the expected benefits of storage for later release. The benefit from immediate release is modelled by a “Demand Curve for Release” (DCR), in each period. This paper describes an efficient intra-period CDDP algorithm to determine the DCRs from a river network. The intra-period optimisations are deterministic, forming sub-problems to an overall stochastic model. River networks have a number of features affecting the demand for reservoir release. A stream or inflow that flows into the catchment is known as a tributary flow. These tributary flows are often subject to temporal variations. The river flow is often diverted to cater for ecological demands and consumptive uses; these diversions typically have only a remote chance to return to the catchment directly. Non-consumptive uses, on the other hand, gain benefit (or in the case of pumps, incur costs) based on water flow. The water itself is still available for further use downstream. Both contribute to defining a DCR. The DCR defines the amount of water the reservoir manager should economically release, given the benefit from supplying water to consumptive and non-consumptive users, as a function of the marginal value (or price) of stored water. The DCR could be determined using benefit curves estimated by the reservoir manager, but in this application we envisage the benefits being defined by clearing a market within which each consumptive user bids for water to be delivered to their node, and each nonconsumptive user bids for water flow on their arc. To clear the full inter-temporal market requires the determination of a DCR for every inflow state in every period over the planning horizon. 2 Intra-period multi nodal market model To construct a DCR solely as a function of long term reservoir storage, we assume that the costs and benefits of consumptive and non-consumptive use at different locations within the river network are independent. We also assume that those costs and benefits are independent of supplies and demands met in previous periods, and can be described by functions of water use which are convex for costs and concave for benefits. The resulting DCR forms input for the CDDP market clearing module. We let nb be the net demand curve for water at a particular node, representing the net quantity of water demanded at that node as a function of price. We construct nodal net demand curves for water by combining the consumptive demands, distributary requirements and tributary flows at each node with the nodal net demand curves from neighbouring nodes, in a way which respects all constraints. 2.1 Tree representation of a catchment We assume that the river network has a tree structure. Each node will have a parent (“next”) node, being the neighbouring node on the unique path towards the reservoir. Figure 1 illustrates the various features of a catchment. The CDDP algorithm produces a DCR by aggregating the water demand curves of all nodes towards the reservoir. Trading, and consumptive use, can occur at any node, except node 0 which is the reservoir. We generalise the DCR concept by defining a Demand Curve for Water, whether “released” or not, at each node. Non-consumptive uses occur on arcs between nodes, and affect marginal benefits in the demand curve for water for the parent node. Figure 1: A single reservoir multi node catchment. Our multi-nodal CDDP algorithm works inwards from the “leaves” of this tree, back to the reservoir (node 0), irrespective of flow direction. We first describe the model in terms of the demands, supplies and water flows as they would usually be modelled. We then describe the algorithm, which generates net demand curves. For this purpose nodal data is re-cast as net demands and arcs are reoriented towards the reservoir. 2.2 The catchment optimisation sub- problem In this section we simply set up a mathematical description of the catchment optimisation sub-model which would need to be solved in order to determine the optimal benefit, B(r), from any particular level of reservoir release, r. A DCR could then be defined by differencing these B(r) values, but the CDDP algorithm that follows actually computes the DCR directly. Let T = ( =0..n,A) be a tree with the reservoir at the root node 0, and nodes indexed so that child nodes (further from the reservoir) have a larger index than their parents. Arcs A are denoted j with j~(i,k) indicating that the usual water flow direction for arc j is from node i to node k. Each non-root node i ∈ has Fimax ≥ 0 units of tributary inflow. (Flows directly into the reservoir are dealt with in the stochastic optimisation described later.) Variable fi represents the amount of this inflow captured at node i, 0 ≤ fi ≤ Fimax. Inflow not captured is lost to the system. For full generality, CFi (f) denotes the increasing convex cost function associated with the capture of this flow. This generality allows for supply participants who incur costs or who charge for the flow injection, but for a typical tributary flow CFi(f)=0. Each node i has Ci ≥ 0 units of (potential) consumptive demand, with the associated decreasing convex benefit function CBi(ci). Variable 0 ≤ ci ≤ Ci, represents the consumptive demand met at node i. Variable 0 ≤ di ≤ Ei represents the distributary flow from node i. The minimum flow into node i is modelled as a target flow Ei (≥ 0), with a convex increasing cost function CEi(Ei – di) associated with missing the target by (Ei – di) units. Ei = 0 and CEi=0 for nodes with no distributary flow, but distributary flows could be required to meet minimum environmental flow requirements. Each arc j ∈ A has an associated variable xj representing downstream flow, with a lower bound of Lj and upper bound of Uj. The lower bound could be positive to meet a strict environmental flow requirement, or negative if pumping or some other upstream transfer were available. The variable ℝ represents the release from the reservoir. For a given release r, we solve the following model: ∑ [1] = − − − +∑ ∈ Subject to: [2] + ∑ ~ #, = + + ∑ ~ ,# ∀ % = 1,2, … . . , * ∑ ~ #,+ [3] − ∑ ~ +,# ≤ [4] −- ≤ ≤ . ; 0 ≤ ≤ ; 0 ≤ ≤ , 0 ≤ ≤ 123 2.3 The multi-nodal CDDP algorithm Rather than solve a whole series of sub-problems explicitly, the CDDP algorithm for clearing the intra-period nodal market implicitly defines (marginal) benefit as a function of release, across the whole range of possible releases in this period, by directly constructing marginal water value curves to compute the reservoir DCR. Note that this is equivalent to optimising model [1]-[4] for all values of r simultaneously, in a single pass. Arc bounds restrict the opportunities which may be exploited at connected nodes. The cumulative effect of these restrictions is maintained by a domain associated with each marginal value curve. We use the notation : 5 to denote function f restricted to domain S. The model data is pre-processed to simplify the algorithm description. All cost and benefit functions at nodes are converted to marginal net demand functions. Here, these are described as defining marginal prices as a function of water supplied. But they could, equivalently, be expressed as defining net demand as a function of price. Specifically, for each node i, the pre-processing calculates the following net demand functions. 8 • Tributary flows form net demand : 6− 123 , 07 where = 89 − . • • Consumptive demands form net demand : : 60, Distributary flows form net demand ; : 60, 7 where : 7 where ; = 89 = 89 8 8 − . . By convention, arcs are directed away from the reservoir. The flow bounds for arc j are adjusted to account for this, setting -< = - and . < = . if water flow is away from the reservoir, and -< = −. and . < = −- if water flow is directed towards the reservoir. Non-consumptive uses are similarly affected forming net demand function * : =-< , . < > where * * =− 8 = 83 8 83 − for arcs with water flow away from the reservoir and otherwise. The algorithm starts from the node with the largest index. We first form a nodal net demand curve (nb:S) by “horizontally adding” all tributary flows, distributary and consumptive demands at the node. This net demand curve, (nb:S), is transferred to the next node by first truncating using arc flow bounds; then “vertically adding” any nonconsumptive flow demand components to form @ *:? : 5A? . This defines the net demand curve at the parent node, and the process is repeated until we reach the reservoir (node 0), through the tree. Description of horizontal [+h] addition and vertical [+v] addition. When the net demand functions are piecewise constant over a regular domain, we can efficiently implement both horizontal and vertical addition. Vertical addition amounts to adding corresponding function values, while horizontal addition amounts to sorting a collection of bid sections. Vertical addition is point-wise addition with respect to the horizontal axis over the coincident domain. Formally: ℎ: 6C, D7 = : 6 , :7+E F: 6 , 7 is defined by C = min , , D = max :, , and +F ∈ 6 , :7 ∩ 6 , 7 ∈ 6 , :7 ∖ 6 , 7 ℎ =L F ∈ 6 , 7 ∖ 6 , :7 Horizontal addition is point-wise addition with respect to the vertical axis over the coincident range. It corresponds to adding the horizontal axis quantities for each fixed value on the vertical axis. We define horizontal addition for decreasing functions only. Formally: ℎ: 6C, D7 = : 6 , :7+O F: 6 , 7 is defined by C = + , D = : + , and − − ≥F F − F − ≥ min{R|∃U ∈ 6 , :7, U ≥ R, F − U ≥ R} otherwise ^ ^ ^ (We can alternatively write h(x) as ℎ = +F where this is well defined.) To incorporate non-consumptive use, the algorithm adds the non-consumptive benefit (cost) to the incoming truncated nb(.) from the previous node. A nonconsumptive “user” does not actually use water. She transfers water from one node to another, at some cost (e.g. for a pump) or to gain some benefit (e.g. for generation). The trade-off between the upstream/downstream difference in marginal benefit, and the cost or benefit of non-consumptive use, determines the net value from each flow. So we account for non-consumptive use by adding demand curves vertically, thus affecting the prices transferred to the parent node to each increment of flow between the two nodes. It is straightforward to show that the following combined procedure constructs the DCR corresponding to B(r) from the previous model. We omit the proof for brevity. ℎ =L Procedure Demand Curve for release DCR for single tree reservoir network *: : 5 is the nodal demand curve for flow , *: = 0, 5 = ∅, ∀% = 0, … , * l % = * Dl 1 5D;m − 1 l *: : 5 ← =*: : 5 +O : : 60, 7+O ; : 60, 7+O : 6− 1 , − 123 7 > C;D o~ %, m % l o~ m % , % , whichever exists pppp? : 5q? = D r* D; =*: : 5 , 6-< , . < 7> // Truncated to arc limits *: @? : 5A? = =*: pppp : 5q? +E * : 6-< , . < 7> *: @?: 5A? > // m % is the parent to node % *:u2v : 5u2v ← =*:u2v : 5u2v +O *: ; D % // Repeat process until reach node 0. xrDmrD: y z ← *:+ : 5+ 3 Illustration of multi-nodal CDDP algorithm We next illustrate the CDDP algorithm to construct the DCR in a single catchment, as shown in Figure 1. For simplicity, we assume that the catchment has no suppliers, but only consumptive users submitting demand bids, and non-consumptive users submitting bids for flow. 3.1 Constructing demand curves for the nodes above the reservoir Consider a single node located upstream from the reservoir, as in Figure 2 (which shows detail from Figure 1). As shown in Figure 3, we first stack consumptive demands in descending price order, to form the consumptive demand curve for water, cb7(c). We also form a notional bid stack representing a relatively high marginal value for distributary flow demands to meet local environmental constraints. We represent tributary flow ‘supplies’ as negative quantities in the “net demand curve”. The algorithm then constructs the nodal demand curve for water nb(.) incrementally, by horizontal addition: *:{ : 5{ ← 6 :{ : 60,47+O ;{ : 60,27+O { : 6−4,07 7. This is equivalent to sorting all increments of consumptive, distributary and (net) tributary demand by decreasing incremental value. Figure 2: A node located above the reservoir Figure 3: Horizontal addition (+h) of distributive, consumptive and tributary flows to form nodal demand curve, nb(q) Earlier, we defined flow away from the reservoir as positive, and flow towards reservoir (or reverse flow) as negative. Therefore, when we work towards the reservoir from upstream, the flow is negative. In line with the flow direction, we set the upper and lower limits for flow as6−.{ , −-{ 7. The resulting net demand curve represents the willingness of upstream participants to pay in order to limit flows to the next downstream node. The arc bounds truncate this nodal demand curve, as shown in Figure 3, reflecting limits on the ability of the downstream node to take advantage of the opportunity this represents. But here there is also a non-consumptive use to account for. The benefit of non-consumptive flow is accounted for by the vertical addition @ pppp{ : 6−3,07 +E * { : 6−3,07> as in Figure 4. Note that, since flow from *:{ : 6−3,07 = =*: node 7 to the reservoir gains additional non-consumptive benefit, the net benefit gained by using water at node 7, rather than letting it flow through to the reservoir is reduced, and the prices in the net demand curve passed through to the reservoir are also reduced. This effect is achieved by the pre-processing, which will make ncf7 ≤ 0, implying vertical ‘subtraction’. pppp{ *: @{ *: Figure 4: Vertical addition with non-consumptive flow demands (ncf) 3.2 Constructing demand curves for node 4 The next nodes processed are nodes 6 and 5. Both might be considered “downstream” from the reservoir. But the processing of nb6 and nb5, the net demand curves for these nodes, follows the process for node 7, because the flow direction from both is “towards” the reservoir. In this case, arcs (5,4) and (6,4) have no non-consumptive uses, so the net demand curves constructed at nodes 6 and 5 can be transferred directly to node 4 after @~ : 5A~ and truncation for flow limits on the corresponding arcs. In this case, *: @• : 5A• represent the willingness of participants at nodes 6 and 5, respectively, to pay *: to limit flows to node 4. These are treated as further consumptive net demand curves at node 4, in addition to the local demands there, when determining nb4. 3.3 Truncating for siphon flow limits @€ : 5A€ for input into the formation of nb3, follows an Processing node 4 and forming *: identical process. Figure 5 illustrates processing node 3 and, in particular, accounting for arc (3,2). This arc represents a syphon which allows flow in either direction. To account for the unknown flow direction, the processing truncates nb3 by using a domain interval with a negative lower bound and a positive upper bound. @• : 5A• represents the willingness of participants to provide flow The resulting *: from node 3 to node 2 for quantities in the negative part of the interval, and the desire of participants for flow from node 2 to node 3 for quantities in the positive part of the interval. To put this another way, if the price of water were low enough, then node 3 would like to ‘buy’ water from node 2 (at prices to the right of the vertical axis). However, if the price were high enough, node 3 would be willing to ‘sell’ water to node 2 (at the prices to the left of the vertical axis). @€ *: *:• Figure 5: Processing node 3 and truncating across arc (3,2) 3.4 Processing upstream The flow direction on the syphon was indeterminate, while the other arcs processed so far have had water flow ‘towards” the reservoir. But the water flow direction on arc (1,2) is away from the reservoir. The flow limits are on such arcs will imply nonnegative upper/lower limits on the net demand curve passed back through the tree, towards the reservoir. And non-consumptive uses on such arcs will add positive increments to the prices in those demand curves, representing the additional nonconsumptive benefit from flow away from the reservoir, in this case. Figure 6 illustrates @‚ : 60,47. the formation of *: Figure 6: Left: horizontal addition of DCF of previous nodes. Right: local demands at node 1 and vertical addition of non-consumptive flows Node 1 is then processed in a similar manner. Finally, we reach node 0, where we obtain the DCR for the reservoir itself by horizontal addition of the net demand curves @ and node 7 *: @{ . for node 1 *: 4 Using the multi-nodal DCR in a long term Stochastic CDDP model The multi-nodal CDDP constructs a monotone decreasing DCR for each period. But that only defines the optimal release, and intra-period market-clearing, as a function of the reservoir’s marginal water value (MWV). We do not know what the release should actually be, and have not “cleared the multi-period market”, until we know the reservoir MWV. So the final step in the process must be to identify a particular solution (at least for the first market period), starting from a particular storage level. Before we do that, though, we must determine the optimal release policy, over time. And we do that by applying the stochastic CDDP model of Starkey et al. (2012) to determine a DCS, defining the MWV of stored water, as a function of storage level, in each period. That algorithm assumes a DCS for the last period, and works backwards to determine the DCS for the beginning of each period from the DCS at the end of that period, and the intra-period DCR for that period, as determined by the algorithm above. 5 Conclusions and further research In this paper, we illustrated a nodal catchment model that can be applied to optimise usage over time, or to clear an inter-temporal market for any catchment with one reservoir and a tree configuration. To solve the model, we proposed a simple and efficient two-level application of CDDP. First, a multi-nodal deterministic CDDP, presented here, constructs aggregate demand curves for release in each period. Then a stochastic CDDP constructs aggregate demand curves for storage in the single reservoir for each period. The complexity of the intra-period network can readily be increased by adding upstream and downstream nodes, and physical links, while still maintaining efficient computation. Increasing the number of long term storage reservoirs will increase the complexity of the algorithm, because the “curse of dimensionality” will eventually apply to any DPbased technique for multiple reservoirs. But Read and Hindsberger (2010) describe several two reservoir implementations of stochastic CDDP, while Read, Dye and Read (2012) describe development work on a multi-reservoir generalisation of the stochastic inter-period algorithm. 6 References Dye, S., Read, E. G., Read, R. A., & Starkey, S. R. (2012). Easy Implementations of Generalised Stochastic CDDP Models for Market Simulation Studies Paper presented at the 4th IEEE and Cigré International Workshop on Hydro Scheduling in Competitive Markets, Bergen, Norway. Read, E., & Hindsberger, M. (2010). Constructive dual DP for reservoir optimization. Handbook of Power Systems I, 3-32. Read, R., Dye, S., & Read, E. G. (2012). Generalized CDDP for Reservoir Management. Working paper, . Department of Management, University of Canterbury. Scott, T. J., & Read, E. G. (1996). Modelling hydro reservoir operation in a deregulated electricity market. International Transactions in Operational Research, 3(3), 243-253. Starkey, S. R., Dye, S., Read, E. G., & Read, R. A. (2012). Stochastic vs. Deterministic Water Market Design: Some Experimental Results. Paper presented at the 4th IEEE and Cigré International Workshop on Hydro Scheduling in Competitive Markets, Bergen, Norway.
© Copyright 2026 Paperzz