Skip to content

State Augmentation

This chapter defines the state the stage LP carries from one stage to the next: the state vector and its four families, the pinning of the incoming state by column bounds, the outgoing state and the cut row written over it, the mechanics of the families beyond storage — the inflow lags, the commitments of anticipated thermals and the water in transit on travel-time arcs — and the projection of each stage’s cuts onto the state components it selects.

Reading order: LP Formulation → this chapter → Block Formulation Variants

The state of stage tt is the vector that stage tt passes to stage t+1t + 1 and over which the cuts of stage tt are written. It has four families:

  • storage: the end-of-stage storage of each hydro (§2);
  • inflow lags: Pmax⁡P^{\max} lagged inflows per hydro (§4);
  • in-transit buckets: the water still travelling on the travel-time arcs into each receiving plant, one bucket per maturity lag (§6);
  • commitment-ring slots: the decided, undelivered commitments of each anticipated thermal, kmaxk_{max} slots per plant (§5).

With N=∣H∣N = \lvert\mathcal{H}\rvert hydros, BB in-transit buckets and AA anticipated thermals, the state dimension is

nstate=N(1+Pmax⁡)+B+A kmaxn_{\text{state}} = N(1 + P^{\max}) + B + A \, k_{max}

The state is ordered canonically: storage, inflow lags, in-transit buckets, commitment-ring slots, and within each family the hydros, receiving plants or anticipated thermals in the canonical entity order of Notation Conventions (lag-major for the lags, slot-major for the ring slots). Each stage pins its incoming copy of the state by column bounds (§2), and each cut of a stage is a row over the stage’s outgoing state (§3).

The water balance (LP Formulation §4), FPHA hyperplanes (LP Formulation §6), the evaporation row (LP Formulation — Evaporation Row) and generic constraints (LP Formulation §10) all involve the incoming storage value v^h\hat{v}_h. Rather than embedding v^h\hat{v}_h as a constant in the RHS of each of these constraints (which would require collecting duals from all of them to compute cut coefficients), Novomodelo introduces an explicit incoming storage LP variable vhinv^{in}_h that every such constraint references, and pins it to the trial value.

For each hydro h∈Hh \in \mathcal{H}, the incoming-storage column (LP Layout and Scaling §1) is pinned by setting equal lower and upper column bounds:

v‾hin=vˉhin=v^h\underline{v}^{in}_h = \bar{v}^{in}_h = \hat{v}_h

where:

  • vhinv^{in}_h = LP variable representing the incoming storage for hydro hh
  • v^h\hat{v}_h = incoming state value (end-of-stage storage from the previous stage)

Cut coefficient: the storage cut coefficient βhv\beta^v_h is the reduced cost of the pinned incoming-storage column (unscaled by its prescaler column factor — see LP Layout and Scaling §2 and Cut Management). No fixing-constraint dual is involved.

Why this design: By LP duality, when a column is pinned at x‾=xˉ\underline{x} = \bar{x} its reduced cost equals the sensitivity ∂Qt/∂v^h\partial Q_t / \partial \hat{v}_h of the optimal value to the pinned bound — exactly the multiplier the equivalent equality row vhin=v^hv^{in}_h = \hat{v}_h would have carried (KKT parity). This sensitivity automatically accounts for all downstream effects through water balance, FPHA, evaporation and generic constraints, so a single reduced-cost value suffices — no combination of duals from multiple constraint types is needed. The AR lags (§4), in-transit buckets (§6) and commitment-ring slots (§5) are pinned the same way.

Column count: NN pinned incoming-storage columns, where N=∣H∣N = |\mathcal{H}| is the number of hydros, whatever their lifecycle phase. There are no state-fixing rows: every incoming-state column is pinned by its bounds.

On a stage that completes a lag period of its own, as every stage of a uniform single-resolution study with a season map does apart from the 52nd and 53rd weeks of a 53-week year under a weekly cycle, the outgoing state of stage tt is the vector stage t+1t+1 pins as its incoming state. A stage that shares a lag period passes its lags on unchanged until the period completes (Multi-Resolution Studies §2), and at a resolution change the lag state is rebuilt from the completed coarse periods (Multi-Resolution Studies §3).

The outgoing state is the outgoing storage vhv_h; the outgoing inflow lags (zh,ah,1,…,ah,Pmax⁡−1)(z_h, a_{h,1}, \ldots, a_{h,P^{\max}-1}), in which the realized inflow becomes lag 1, each incoming lag ah,ℓa_{h,\ell} with ℓ<Pmax⁡\ell < P^{\max} becomes lag ℓ+1\ell + 1, and ah,Pmax⁡a_{h,P^{\max}} leaves the state; the outgoing buckets bh,doutb^{\mathrm{out}}_{h,d}; and the outgoing ring slots xs,iax^{\mathrm{a}}_{s,i}. Stage t+1t+1 pins each incoming column at the value of the matching outgoing column in the solution of stage tt, canonicalized onto its bounds (SDDP Algorithm §3.1).

State familyOutgoing columnPinned incoming column at the next stage
Storagevhv_hvhinv^{in}_h
Inflow lagszhz_h (lag 1) and ah,ℓ−1a_{h,\ell-1} (lag ℓ≥2\ell \ge 2)ah,ℓa_{h,\ell}
In-transit bucketsbh,doutb^{\mathrm{out}}_{h,d}bh,dinb^{\mathrm{in}}_{h,d}
Ring slotsxs,iax^{\mathrm{a}}_{s,i}xs,ia,inx^{\mathrm{a,in}}_{s,i}

Each cut of stage tt is a row over these outgoing columns:

θ≥β0+∑h∈Hβhv vh+∑h∈H(βh,1lag zh+∑ℓ=2Pmax⁡βh,ℓlag ah,ℓ−1)+⋯\theta \geq \beta_0 + \sum_{h \in \mathcal{H}} \beta^v_h \, v_h + \sum_{h \in \mathcal{H}} \Big( \beta^{lag}_{h,1} \, z_h + \sum_{\ell=2}^{P^{\max}} \beta^{lag}_{h,\ell} \, a_{h,\ell-1} \Big) + \cdots

where ⋯\cdots stands for the bucket and ring-slot terms, each coefficient on its outgoing column by identity. Each coefficient is the reduced cost of the matching pinned incoming column of stage t+1t+1, unscaled (LP Layout and Scaling §2): the lag coefficient βh,ℓlag\beta^{lag}_{h,\ell} prices lag ℓ\ell of the next stage’s incoming state, so against the lag columns of stage tt the lag terms are re-indexed by one stage. A storage or lag component that the cut’s state projection drops has no term (§7).

The AR dynamics equation (LP Formulation §5) uses lagged inflows ah,ℓa_{h,\ell} as LP variables. To maintain the Markov property in the SDDP decomposition, each lag variable is pinned to its incoming state value via equal lower and upper column bounds on its lag column. This binds the lag variables to the known incoming state, and the reduced cost of each pinned column provides the cut coefficient βh,ℓlag\beta^{lag}_{h,\ell} for the corresponding inflow-lag dimension of the Benders cuts (LP Formulation §11). Whether these lag dimensions enter the cut is set by the cut-state projection, which the successor stage configures: when it projects out the inflow lags, the lag columns are still pinned for the AR dynamics, but their reduced costs carry no cut coefficient, giving a storage-only cut even under a PAR(pp) fit — see §7.

For each hydro h∈Hh \in \mathcal{H} and each lag ℓ∈{1,…,Pmax⁡}\ell \in \{1, \ldots, P^{\max}\}:

a‾h,ℓ=aˉh,ℓ=a^h,ℓ\underline{a}_{h,\ell} = \bar{a}_{h,\ell} = \hat{a}_{h,\ell}

where:

  • ah,ℓa_{h,\ell} = LP variable representing the inflow at lag ℓ\ell for hydro hh
  • a^h,ℓ\hat{a}_{h,\ell} = incoming state value: the inflow of the ℓ\ell-th most recently completed lag period (Multi-Resolution Studies §2); a lag period completes only under a season map, so without one no period completes and the lags keep their initial values
  • Pmax⁡P^{\max} = the lag depth of the state, the same for every hydro: the largest AR order, at least twelve when any hydro carries the annual component, and widened as below when a terminal boundary is loaded

Column count: N×Pmax⁡N \times P^{\max} pinned lag columns, where N=∣H∣N = |\mathcal{H}| is the number of hydros, whatever their lifecycle phase, and Pmax⁡P^{\max} is the lag depth of the state defined above. All hydros store Pmax⁡P^{\max} lags regardless of their individual AR order PhP_h; a hydro whose inflow model has no annual component reads only its first PhP_h lags, so its slots ℓ>Ph\ell > P_h carry zero coefficients in the dynamics row, while a hydro with the annual component (PAR(p) Inflow Model §7) reads every slot; every lag column is still present and pinned. This uniform layout keeps the lag columns contiguous, so all lag cut coefficients are read in a single slice of the reduced-cost vector (LP Layout and Scaling §1).

The lag slots a hydro does not read are structurally zero and are left out of the cut row, like a ring slot no stage holds; with a terminal boundary loaded, the cut row keeps every hydro’s slots up to the boundary depth, the deepest lag any boundary cut references, to which the lag state is widened (Post-Study Boundary & Chained Studies — Compatibility Conditions).

Cut coefficient: βh,ℓlag\beta^{lag}_{h,\ell} (marginal value of inflow history at lag ℓ\ell for hydro hh) is the reduced cost of the pinned lag column, unscaled by its prescaler column factor (LP Layout and Scaling §2) — see Cut Management.

An anticipated thermal plant decides the commitment of each delivery before its delivery stage and holds every decided, undelivered commitment as state in a per-plant commitment ring (see System Element Modeling Overview §4). Its lead is a stage count or a physical lead time. The decision stage of the delivery at stage mm is ti(m)=m−Kit_i(m) = m - K_i for a stage-count lead; for a physical lead it is the stage containing the instant one lead time before the end of stage mm, where an instant on a stage boundary belongs to the earlier stage. A delivery whose decision falls before the study (m≤Kim \leq K_i under a stage-count lead, an instant at or before the study start under a physical lead) is decided before the study and has no decision stage. A delivery with ti(m)=mt_i(m) = m is not anticipated: at that stage the plant dispatches as an ordinary thermal. Every commitment is bounded, costed, and commissioning-gated at its delivery stage, not at its decision stage.

The ring depth KiK_i of plant ii is the lead for a stage-count lead; for a physical lead it is the largest number of commitments the plant’s ring holds at the start of any stage, the first stage after the study included, counting the deliveries at or after that stage whose commitment was decided at an earlier stage, with the deliveries decided before the study held from the first stage. Every ring has kmax=max⁡iKik_{max} = \max_i K_i slots, labelled by the residues s∈{0,…,kmax−1}s \in \{0, \ldots, k_{max} - 1\}.

The ring position ri(m)r_i(m) of the delivery at stage mm is mm on the study stages. Past the horizon, the plant’s deliveries decided before the study come first and hold no ring position (they are fixed commitments, see Post-Study Boundary & Chained Studies), and rir_i continues from T+1T + 1 over the later deliveries. The delivery at stage mm holds slot si(m)=ri(m) mod kmaxs_i(m) = r_i(m) \bmod k_{max}, so the slot maturing at study stage tt is t mod kmaxt \bmod k_{max}.

Each slot is two LP columns: the outgoing slot xs,iax^{\mathrm{a}}_{s,i}, the state carried to the next stage, and the incoming slot xs,ia,inx^{\mathrm{a,in}}_{s,i}, pinned by equal column bounds to its trial value like all incoming state (§2):

x‾s,ia,in=xˉs,ia,in=x^s,ia\underline{x}^{\mathrm{a,in}}_{s,i} = \bar{x}^{\mathrm{a,in}}_{s,i} = \hat{x}^{\mathrm{a}}_{s,i}

The trial value is the previous stage’s outgoing slot. At the first stage it is the committed rate of the delivery, decided before the study, that the slot holds (see System Element Modeling Overview §4), and 00 in a slot that holds none.

At stage tt, three families of equality rows couple plant ii‘s ring to its decision and to its generation. The deposit row writes the commitment decided at stage tt into the slot of its delivery:

xsi(m),ia−gi,ta=0x^{\mathrm{a}}_{s_i(m),i} - g^{\mathrm{a}}_{i,t} = 0

for the delivery m>tm > t with ti(m)=tt_i(m) = t, when mm lies inside the study or the declared post-study calendar and the plant is commissioned at stage mm. The carry row holds a decided commitment in its slot:

xsi(m),ia−xsi(m),ia,in=0x^{\mathrm{a}}_{s_i(m),i} - x^{\mathrm{a,in}}_{s_i(m),i} = 0

for every delivery m>tm > t in the ring, decided at an earlier stage or before the study, that lies inside that calendar. The fish (delivery) row binds the stage’s generation to the commitment maturing there:

∑k∈Kτk gi,k−Ht xsi(t),ia,in=0\sum_{k \in \mathcal{K}} \tau_k \, g_{i,k} - H_t \, x^{\mathrm{a,in}}_{s_i(t),i} = 0

at every study stage tt whose delivery was decided at an earlier stage or before the study, whether or not the plant is commissioned there; τk\tau_k is the duration of block kk and Ht=∑k∈KτkH_t = \sum_{k \in \mathcal{K}} \tau_k.

A commitment keeps one slot from its deposit row to its delivery. An outgoing slot that no deposit or carry row holds at the stage is frozen at 00 by its bounds, and every held slot is free in sign. The decision column gi,tag^{\mathrm{a}}_{i,t} of the delivery mm with ti(m)=tt_i(m) = t lies in [G‾i(m),Gˉi(m)][\underline{G}_i(m), \bar{G}_i(m)], the plant’s generation bounds at the delivery stage inside the study or its declared post-study capability past it (00 where none is declared), and is fixed at 00 when the deposit row is absent; a delivery to a stage where the plant is not commissioned therefore matures as 00, and inside the study its fish row pins that stage’s generation to 00. A delivery past the horizon that the study decides is carried, never fished, into the terminal stage’s outgoing state, where the terminal boundary prices it (see Post-Study Boundary & Chained Studies). A plant has at most one deposit row per stage, and the decision column enters the ring only through it.

The decision column of an anticipated plant enters the objective of stage tt with the term

ci(m) Hm dt→m gi,ta,dt→m=d1→m/d1→tc_i(m) \, H_m \, d_{t \to m} \, g^{\mathrm{a}}_{i,t}, \qquad d_{t \to m} = d_{1 \to m} / d_{1 \to t}

for the commitment the plant decides at stage tt for its delivery stage mm, ti(m)=tt_i(m) = t. Here ci(m)c_i(m) is the plant’s unit cost at the delivery stage (the delivery stage’s cost inside the study, the declared post-study cost past it), HmH_m is the delivery stage’s hours (a post-study stage’s declared duration past the horizon), and dt→md_{t \to m} is the discount from the delivery stage back to the decision stage (Discount Rate Formulation §5). Like every objective coefficient other than that of θ\theta, the term is scaled as LP Layout and Scaling §2.1 states. The one-step factor on θ\theta at every stage carries a cost entered at stage tt to stage 1 multiplied by d1→td_{1 \to t}, so the commitment cost reaches stage 1 as ci(m)Hmd1→mc_i(m) H_m d_{1 \to m}, discounted exactly once (Discount Rate Formulation).

The plant’s per-block generation carries no cost at a stage where its delivery is fished, so the energy of a commitment is priced once, on its decision column; at a stage where the plant dispatches as an ordinary thermal, its generation is priced per block like that of any thermal. The ring columns carry no cost.

The coefficient of slot (s,i)(s, i) in a cut of stage tt is the reduced cost of the pinned incoming slot xs,ia,inx^{\mathrm{a,in}}_{s,i} of stage t+1t + 1, unscaled like every state coefficient (LP Layout and Scaling §2.3). The cut row multiplies it by the outgoing slot xs,iax^{\mathrm{a}}_{s,i} of stage tt, the same residue and plant: the column the deposit row ties to the decision gi,tag^{\mathrm{a}}_{i,t}, or the carry row to the incoming slot xs,ia,inx^{\mathrm{a,in}}_{s,i}. A commitment keeps one slot from its deposit row to its delivery, so the cut prices that slot by identity at every stage of the hold, and the marginal value of a commitment the study decides reaches its decision column through the deposit row of its decision stage. The ring slots are always part of the cut’s state projection; which of them carry structurally zero coefficients is stated in §7.

When an upstream release takes appreciable time to travel down the cascade, only the share νh′,t,0\nu_{h',t,0} of a release (LP Formulation §4) reaches the downstream neighbour in the release stage, and the rest arrives in later stages. Novomodelo models this as an augmented in-transit state: the volume still in transit on a cascade arc is carried through the Bellman recursion as extra state coordinates, exactly like storage (§2) and AR lags (§4).

Scope. A hydro hh declares a travel-time arc when it has a downstream plant and the arc to it has a strictly positive travel time; the diversion and pumping arcs carry no travel time (main cascade arc only). An absent or zero travel time is an instantaneous transfer — the upstream release enters the downstream water balance in the same stage (LP Formulation §4) and no state is added.

For each receiving (downstream) plant hh that has at least one incoming travel-time arc, the in-transit water destined for hh is discretized into maturity lags d∈{1,…,Lh}d \in \{1, \ldots, L_h\}. Each lag carries the aggregate volume, summed over every upstream arc feeding hh, in two buckets (hm³): the incoming bucket bh,dinb^{\mathrm{in}}_{h,d} holds the volume that matures into plant hh‘s reservoir d−1d - 1 stages after the current one, so lag 11 matures at the current stage, and the outgoing bucket bh,doutb^{\mathrm{out}}_{h,d} holds the volume that matures dd stages after it. The per-plant depth LhL_h is the deepest maturity lag any arc into hh can reach on the stage calendar. The confluence of several arcs into one plant collapses into this single aggregated bucket block.

The buckets extend the state vector (§1), with B=∑hLhB = \sum_h L_h the total bucket count. The bucket block sits after the AR inflow lags and before the commitment-ring slots in the canonical state order (LP Layout and Scaling §1). Buckets are ordered canonically by (plant,lag)(\text{plant}, \text{lag}) — the receiving plant in the canonical entity order every state block uses, then ascending maturity lag. When no arc is declared, B=0B = 0 and the state has no bucket block.

Like every other incoming state coordinate, each incoming bucket is carried on its own LP column (LP Layout and Scaling §1) and pinned to its trial value by equal lower and upper column bounds:

b‾h,d in=bˉh,d in=b^h,d\underline{b}^{\,\mathrm{in}}_{h,d} = \bar{b}^{\,\mathrm{in}}_{h,d} = \hat{b}_{h,d}

where b^h,d\hat{b}_{h,d} is the incoming in-transit volume, the previous stage’s outgoing bucket (or, at the first stage, the seed derived from the in-transit releases declared before the study — see System Element Modeling Overview — Cascade Travel Time and Hydro Production Function Models — Implementation in Novomodelo). The reduced cost of the pinned bucket column is the cut coefficient for that in-transit dimension (see below) — the same regime used for storage (§2) and AR lags (§4).

The bucket maturing at the current stage, bh,1inb^{\mathrm{in}}_{h,1}, delivers its volume into receiving plant hh‘s water balance (LP Formulation §4). Because the bucket is already an accumulated volume (hm³), it enters the balance directly — outside the ζ\zeta flow-to-volume conversion — with a −1.0-1.0 coefficient in the all-variables-on-the-LHS form:

vh−vhin−bh,1in−ζ[ ⋯ ]=0v_h - v^{\mathrm{in}}_h - b^{\mathrm{in}}_{h,1} - \zeta\big[\,\cdots\,\big] = 0

Equivalently, bh,1inb^{\mathrm{in}}_{h,1} is a stage-level inflow added to the reservoir. Because the confluence of several upstream arcs is already summed inside the single state coordinate, exactly one delayed-arrival entry appears per receiving plant.

Under the parallel-blocks formulation the maturing bucket is a single stage-level entry. Under the chronological-blocks formulation, the same volume is delivered across the arrival stage’s own blocks, weighted by a fixed arrival density ϕh,k≥0\phi_{h,k} \ge 0 with ∑kϕh,k=1\sum_k \phi_{h,k} = 1, resolved against the arrival stage’s block partition. The arrival density is a single fixed split per maturing bucket — it does not depend on which source block released the water, an accepted modeling bound when the release and arrival stages partition their hours differently. A chronological stage that no in-study release reaches — the first stage among them — spreads the maturing volume by the block weights, ϕh,k=wk\phi_{h,k} = w_k.

On a declared travel-time arc the share νh′,t,0\nu_{h',t,0} of each release (νh′,tk′→k\nu^{k' \to k}_{h',t} on a chronological stage) reaches the downstream row in the release stage (LP Formulation §4); the remaining share is deposited into the buckets at release and reaches the downstream plant as this delayed-arrival term at maturity.

The entry belongs to the receiving plant’s water balance at every stage where that balance is formed. At a stage where the plant is PreFilling, its row is the frozen identity (PreFilling Pass-Through), and the maturing bucket enters the row of the first non-PreFilling plant downstream: with coefficient −1-1 on a parallel stage, and −ϕh,k-\phi_{h,k} on each block row of a chronological stage, ϕh,k\phi_{h,k} being the PreFilling plant’s own arrival density. It leaves the modeled system only when no such plant exists.

Within a stage, each active outgoing lag dd of a receiving plant hh has one definition row:

bh,dout=bh,d+1in+(deposits into lag d)b^{\mathrm{out}}_{h,d} = b^{\mathrm{in}}_{h,d+1} + \text{(deposits into lag } d\text{)}

with bh,Lh+1in=0b^{\mathrm{in}}_{h,L_h+1} = 0: the deepest lag holds only deposits. The water advances one lag per stage: the row moves the incoming bucket of lag d+1d + 1 into the outgoing bucket of lag dd, and the cross-stage identity carries the outgoing bucket into the next stage’s incoming bucket of the same lag. An outgoing lag deeper than the deepest one reached at the stage, by the stage’s own releases or by the water released before the study, has no row, and its outgoing bucket is fixed at 00. The outgoing buckets are LP columns, part of nstaten_{\text{state}}.

Each upstream release is written into the outgoing lags it reaches, scaled by the fraction of it maturing at each lag: on a parallel stage these fractions sum to 1−νh′,t,01 - \nu_{h',t,0} (LP Formulation §4); on a chronological stage the sum holds after the per-block shares are weighted by block duration; a lag that would mature past the horizon has no row when no boundary is loaded, and its share is discarded (Horizon limitation, below).

Because the incoming bucket column is pinned at equal bounds, its reduced cost is the sensitivity ∂Qt/∂b^h,d\partial Q_t / \partial \hat{b}_{h,d} of the optimal stage cost to the in-transit volume, unscaled by the column prescaler (LP Layout and Scaling §2):

βh,db=cˉh,d b/dh,dcol\beta^{b}_{h,d} = \bar{c}^{\,b}_{h,d} / d^{col}_{h,d}

Transit buckets are always in the cut projection, whatever the stage’s selection for the storage and inflow-lag dimensions (§7). Each cut therefore carries one coefficient per bucket dimension, contiguous with the storage, lag, and anticipated coefficients and read from the same reduced-cost mechanism (LP Formulation §11).

In-transit volume that would mature after the study’s last stage is dropped and not credited to terminal storage — but only when no terminal boundary future-cost function is loaded. Absent a boundary, a release late in the horizon whose travel time carries it past the final stage TT leaves the modeled system without arriving: the deepest maturity lag active at stage tt is capped at T−tT - t, so no bucket ever points beyond the horizon and the share is discarded rather than misdirected onto an earlier lag. When a terminal boundary is loaded instead, this cap is lifted: the terminal deep-lag in-transit slots are held live rather than capped away, carried in the terminal stage’s outgoing state, and reach the boundary-priced cut-state projection. The still-in-transit water is valued at the boundary rather than discarded, priced through the same reduced-cost cut mechanism the buckets already use (see Cut coefficient, above).

A stage need not project the cuts it generates onto the full state of §1. Each stage selects whether the cuts it generates carry the storage components and whether they carry the inflow-lag components; the selection sets the dimension of those cuts, not the state the stage pins and passes on (§2, §3). A component left out is projected out of the subgradient: its reduced cost is not read into the cut, and the cut carries no coefficient for it. The intercept β0\beta_0 is the optimal value at the trial point less the products of the kept coefficients with their trial values, so the linear term of a projected-out component at its trial value is absorbed into β0\beta_0: the cut is a lower-dimensional supporting hyperplane of the cost-to-go’s slice through the trial point, not a full cut with the omitted coordinates zero-padded.

  • With the inflow lags projected out, the N×Pmax⁡N \times P^{\max} lag coefficients are omitted, not zeroed, even under a PAR(p) inflow model; the lag columns stay pinned for the AR dynamics (§4). With the inflow lags kept, their reduced costs enter the cut as §4 states.
  • With the storage projected out, the NN storage coefficients are omitted in the same way, and the cut spans the components it keeps: the inflow lags when they are kept, and the buckets and ring slots when the study has them.
  • The in-transit buckets (§6) and the commitment-ring slots (§5) are always projected, whatever the selection, which toggles only the storage and inflow-lag components. Every slot of every anticipated plant’s ring carries a coefficient; a slot that no stage holds has a structurally zero coefficient, so the cut row holds entries only for the slots some stage holds.

The dimension of a stage’s cut pool is set by the selection of its successor stage, since the pool holds the cuts the successor generates; the terminal pool, which has no successor, carries the full state whatever the selection.

Because a boundary loads into the terminal pool, a study’s selection does not change what its boundary must carry: a counterpart for every storage and inflow-lag component of the study’s terminal state (Post-Study Boundary & Chained Studies §5.2, condition (c)), where the study’s lag state extends to the deepest lag that any pool of the boundary policy references (condition (d)). A pool whose cuts project out the inflow lags, as under a storage-only projection, prices no inflow-lag component, so it is admitted as a boundary source only by a study whose terminal state holds no inflow lag. The terminal pool of a policy produced by training carries every inflow lag of the policy’s state, which extends the loading study’s lag state by condition (d); the pools of such a policy that project out the inflow lags are therefore refused as boundary sources whenever its state holds inflow lags.

A cut that projects out a component the cost-to-go depends on is guaranteed to lie below the cost-to-go only on the slice through its trial point; the consequence for the lower bound is Cut Management — condition 4, and the case of the inflow lags under a PAR(p) model is in the storage-only cut projection note. Each stage’s selection is set in the cut-management Configure tab.