Different objective state functions for different stages SDDP.jl

Hi,

I am quite new to optimization with SDDP so may be a silly question. I am working on optimising a bidding strategy for a wind power producer in consecutive markets (day ahead, Intraday, ancillary) using SDDP, with uncertainty regarding market prices and wind generation. My current formulation relies on having different objective state update functions for different stages. However, I am not sure if this is supported. Am I able to do this, or do I have to come up with another alternative?

Thanks for the help!

1 Like

Hi @tumpelopumpelo, welcome to the forum :smile:

I take it you are meaning this: Objective states · SDDP.jl?

The objective state must be the same inn every node, but you can have transition functions that depend on t. For example:

   SDDP.add_objective_state(
        subproblem,
        initial_value = 50.0,
        lipschitz = 10_000.0,
        lower_bound = 50.0,
        upper_bound = 150.0,
    ) do fuel_cost, ω
        if t < 10
            return ω.fuel * fuel_cost  # multiplicative error
        else
            return fuel_cost + ω.fuel  # additive error 
        end
    end

Wonderful, thanks a lot! I implemented this now, however I am running into quite a strange error:

“Unable to write cuts to file because model contains objective states or belief states.”

Do you have any idea what could cause this?

You cannot write cuts to file if you use objective states.