Co-optimizing renewables - SDDP.jl - Policy Graph


I am working on co-optimizing renewables (wind and hydro) expansion and generation while accounting for uncertainty in the generation part. In these problems, one of the common issues is non-linearity in the constraint:

wind generation ≤ random wind energy×installed capacity

Here, random wind energy is the random variable, and installed capacity is the investment decision variable.

By using the policy graph concept, we can easily model the co-optimized problem using SDDP.jl; however, the non-linearity poses a challenge.

Has anyone encountered this issue? How can we avoid this non-linearity or address it?

P.S.: The literature on co-optimizing expansion and generation under uncertainty is limited. The most relevant paper in this regard is:

Generation expansion planning under uncertainty with emissions quotas, Rebbenack 2014

He used a combination of Benders (investment) and SDDP (generation). By using this structure, we can feed a linear problem to SDDP.jl. To the best of my knowledge, SDDP.jl is not easily combined with other approaches yet.

1 Like

SDDP.jl is well suited to this problem :smile:

We’re currently working on

You can do something like:

@variable(sp, x_cap >= 0, SDDP.State, initial_value = 0)
@variable(sp, u_gen >= 0)
@constraint(sp, c_rand, 1.0 * >= u_gen)
SDDP.parameterize(sp, Omega) do omega
    set_normalized_coefficient(c_rand,, omega)

Yes, I read the manuscript.
Yeah, now I think I can better understand the approach you employed to model the random lambda factor in your problem.

So, to make sure I understood what you said, by this trick, set_normalized_coefficient, we can model the random variable without explicitly defining it, and then our constraint, the multiplication of state and random variable, will be linear. Am I right?

1 Like

Yes, exactly.

See also Add noise in the constraint matrix · SDDP.jl

1 Like

I am not sure how this pertains to the topic, but I will try my chance.

While reading the old and new documentation for SDDP.jl, as well as the SDDP literature, it appears that addressing coefficient uncertainty involves more effort than dealing with RHS uncertainty. Am I right? I would be grateful if you could give me some short hints on the reasons.

My guess is that this is because the uncertainty in the matrix coefficients leads the dual feasibility (our sub-gradients) to be dependent on the realizations since they occur at the dual problem constraint. In other words, the feasible region of the dual problem varies with each realization, which requires a few additional steps to address while implementing SDDP.jl.

P.S: We see the same situation for uncertainty in the objective function.

You are correct on all points.

Nice paper, thanks for sharing!

1 Like