Question about SDDP.jl

Hello,

I am new to SDDP.jl, so my question may be naive.

I currently have a working SDDP model in which the generation profits are computed using a fixed hydraulic head effect (so the efficiency does not depend on the reservoir volume).

I would now like these profits to depend on the hydraulic head, which itself is a function of the volume stored in the reservoir. My idea was to recompute the profits at each stage using the incoming storage (`V.in`), since this storage corresponds to the volume resulting from the decision taken at the previous stage.

Concretely, this would look something like:

function create_ucd_profitsSDDP(model, ep::EtudeParameters, pdt::Int, scenario::Int)

(; T, lac_index) = get_time_step_dimensions(ep, pdt)



model\[:ucd_profits\] = Dict(

    u => \[

        \[
            ucd_profit( get_ucd(ep, u), ep, pdt, scenario,g,t,  V\[lac_index\].in,) for t ∈ T \]

        for g ∈ groups(get_ucd(ep, u))

    \]

    for u ∈ ucd_energetic_range(ep)

)



return nothing

end

```

However, this does not work because `V[lac_index].in` is a `JuMP.VariableRef` and not a `Float64`. The functions used to compute efficiencies and profits expect numerical values, not decision variables.

My questions are therefore the following:

* Is it possible in SDDP.jl to access the numerical value of `V.in` during the construction or update of a subproblem?

* Or does the SDDP framework completely prevent this kind of dependence of the objective coefficients on the value of the state variable?

* If this is not possible directly, what would be the recommended approach to model an efficiency that depends on the storage level (and therefore a hydraulic head that depends on reservoir volume)?

What confuses me is that when I inspect the LPs exported during a simulation, I see lines such as:

Bounds
V_1__in = 0
V_1__out free
V_2__in = 53.2514
V_2__out free

This gives me the impression that at some point `V.in` does have a numerical value. I do not understand at which stage of the algorithm this value becomes available, nor whether it is possible to use it to update the profits.

I could approximate the hydraulic head effect with additional piecewise-linear constraints, but the function ucd_profits is complex and this would make the model considerably larger, so I am wondering whether there is a more direct approach in SDDP.jl. Note that I assume that the hydraulic head effect remains constant during a given transition step and only depends on V.in

Thank you in advance for your help!