KTH ROYAL INSTITUTE OF TECHNOLOGY Optimal Order Strategies on the Day- Ahead Electricity Market Martin Biel 20/9-2017
Outline Background Problem Description Contribution Optimal Strategies Outlook on Future Work 2/39
Outline Background Problem Description Contribution Optimal Strategies Outlook on Future Work 2/39
Background - Motivation ◮ Simulation of hydro power operations → Decision-support 3/39
Background - Motivation ◮ Simulation of hydro power operations → Decision-support ◮ Price forecasts ◮ Irregular power production: solar and wind ◮ Nuclear power phase-out 3/39
Background - Motivation ◮ Simulation of hydro power operations → Decision-support ◮ Price forecasts ◮ Irregular power production: solar and wind ◮ Nuclear power phase-out ◮ Common: Trade-off between accuracy and computation time 3/39
2017 2041 Figure: Simulations of hydro power operations
Background - Aim Provide reliable decision-support in real time 5/39
Background - Aim Provide reliable decision-support in real time ◮ Accurate models ◮ Fast computations 5/39
Background - Aim Provide reliable decision-support in real time ◮ Accurate models ◮ Optimal model reductions ◮ Fast computations 5/39
Background - Aim Provide reliable decision-support in real time ◮ Accurate models ◮ Optimal model reductions ◮ Fast computations ◮ Scalable algorithms that make efficient use of commodity hardware 5/39
Backgound - Approach Stochastic programming for hydro power operations: ◮ Optimal orders on the day-ahead market ◮ Maintenance scheduling ◮ Long-term investments ◮ Wind/solar uncertainties 6/39
Backgound - Approach Stochastic programming for hydro power operations: ◮ Optimal orders on the day-ahead market ◮ Maintenance scheduling ◮ Long-term investments ◮ Wind/solar uncertainties Improvements ◮ Multiple scenarios → More accurate models ◮ Parallel decomposition → Faster computations 6/39
Backgound - Approach Stochastic programming for hydro power operations: ◮ Optimal orders on the day-ahead market ◮ Maintenance scheduling ◮ Long-term investments ◮ Wind/solar uncertainties Improvements ◮ Multiple scenarios → More accurate models ◮ Parallel decomposition → Faster computations 6/39
Outline Background Problem Description Contribution Optimal Strategies Outlook on Future Work 6/39
Problem Description - Scandinavian Electricity Market Electricity markets in Scandinavia deregulated since 90s ◮ Norway 1991 ◮ Sweden 1996 ◮ Finland 1998 ◮ Denmark 2000 7/39
Problem Description - Scandinavian Electricity Market Electricity markets in Scandinavia deregulated since 90s ◮ Norway 1991 ◮ Sweden 1996 ◮ Finland 1998 ◮ Denmark 2000 Energy volumes actively traded on a competitive market: Nord Pool ◮ Day-ahead market ◮ Intraday market 7/39
Problem Description - Electricity Market Actor 1 P 1 E 1 Day- Ahead P 2 E 2 Actor 2 8/39
Problem Description - Electricity Market Actor 1 P 1 E 1 Day- Ahead P 2 E 2 Actor 2 Market closes 8/39
Problem Description - Electricity Market Balance responsible Actor 1 Actor 1 P M , E 1 P 1 E 1 Day- Ahead P 2 E 2 P M , E 2 Actor 2 Actor 2 Balance responsible Next day Market closes 8/39
Problem Description - Electricity Market Balance responsible Actor 1 Actor 1 P M , E 1 P 1 E 1 P E Day- Intraday Ahead P E P 2 E 2 P M , E 2 Actor 2 Actor 2 Balance responsible Next day Market closes 8/39
Problem Description - The Day-Ahead Market Order Types ◮ Single Hourly Order ◮ Price independent ◮ Price Dependent ◮ Block Order ◮ Regular ◮ Linked ◮ Exclusive Group ◮ Flexible Order 9/39
Problem Description - The Day-Ahead Market Order Types ◮ Single Hourly Order ◮ Price independent ◮ Price Dependent ◮ Block Order ◮ Regular ◮ Linked ◮ Exclusive Group ◮ Flexible Order 9/39
Problem Description - Single Order Order Curve Price Independent Order Price Dependent Order 52.46 Price [EUR/MWh] 34.97 17.49 0.00 0.00 203.32 406.63 609.95 813.27 Order Volume [MWh/h] Figure: Single hourly order 10/39
Problem Description - Single Order Order Curve Price Independent Order Price Dependent Order Trading Outcome 52.46 Price [EUR/MWh] 34.97 17.49 0.00 0.00 203.32 406.63 609.95 813.27 Order Volume [MWh/h] Figure: Interpolated energy volume for a given market price 10/39
Block Order 36.85 [EUR/MWh] 3.37 [MWh/h] 0 15 Hour Figure: Block order between 00:00-15:00
Block Order Rejected Order Market price 42.37 36.85 [EUR/MWh] 3.37 [MWh/h] 35.42 Price [EUR/MWh] 28.47 21.52 0 15 Hour Figure: Rejected after market price settlement
Block Order Accepted Order 49.50 Market price 47.28 45.06 42.84 40.62 Price [EUR/MWh] 38.40 36.85 [EUR/MWh] 3.37 [MWh/h] 36.17 33.95 31.73 29.51 27.29 25.07 0 15 Hour Figure: Accepted after market price settlement
Problem Description - Optimal Order Strategies ◮ Optimal orders given price forecasts ◮ Price taking hydro power producer ◮ Next day production governed by hydroelectric model 12/39
Outline Background Problem Description Contribution Model Framework Stochastic Day-Ahead Model Optimization Algorithms Optimal Strategies Outlook on Future Work 12/39
Outline Background Problem Description Contribution Model Framework Stochastic Day-Ahead Model Optimization Algorithms Optimal Strategies Outlook on Future Work 12/39
Contribution - Model Framework Data ◮ Physical data of Swedish hydro power stations ◮ Topologies ◮ Capacitites ◮ Flow times ◮ Financial data from Nord Pool ◮ historic prices 13/39
Contribution - Model Framework Data ◮ Physical data of Swedish hydro power stations ◮ Topologies ◮ Capacitites ◮ Flow times ◮ Financial data from Nord Pool ◮ historic prices Julia: JuMP + StructJuMP ◮ Domain-specific modeling language for mathematical optimization ◮ Optimization models can be processed programatically 13/39
HydroModels.jl # Variables # ======================================================== @variable ( internalmodel , xt_d [ i = model . bids , t = model . hours ] >= 0) @variable ( internalmodel , yt [ t = model . hours ] >= 0) @variable ( internalmodel ,H[ t = model . hours ] >= 0) # Define objective # ======================================================== @objective ( internalmodel , Max, n e t _ p r o f i t + value_of_stored_water ) # Constraints # ======================================================== # Load balance @constraint ( internalmodel , loadbalance [ s = model . scenarios , t = model . hours ] , yt [ s , t ] + sum( yb [ s , b ] for b = f i n d (A − > in ( t ,A) , model . hours_per_block ) ) − H[ s , t ] == z_up [ s , t ] − z_do [ s , t ] )
HydroModels.jl # Variables # ======================================================== @variable ( internalmodel , xt_d [ i = model . bids , t = model . hours ] >= 0) @variable ( internalmodel , yt [ t = model . hours ] >= 0) @variable ( internalmodel ,H[ t = model . hours ] >= 0) # Define objective # ======================================================== @objective ( internalmodel , Max, n e t _ p r o f i t + value_of_stored_water ) # Constraints # ======================================================== # Load balance @constraint ( internalmodel , loadbalance [ s = model . scenarios , t = model . hours ] , yt [ s , t ] + sum( yb [ s , b ] for b = f i n d (A − > in ( t ,A) , model . hours_per_block ) ) − H[ s , t ] == z_up [ s , t ] − z_do [ s , t ] ) +
HydroModels.jl # Variables # ======================================================== @variable ( internalmodel , xt_d [ i = model . bids , t = model . hours ] >= 0) @variable ( internalmodel , yt [ t = model . hours ] >= 0) @variable ( internalmodel ,H[ t = model . hours ] >= 0) # Define objective # ======================================================== @objective ( internalmodel , Max, n e t _ p r o f i t + value_of_stored_water ) # Constraints # ======================================================== # Load balance @constraint ( internalmodel , loadbalance [ s = model . scenarios , t = model . hours ] , yt [ s , t ] + sum( yb [ s , b ] for b = f i n d (A − > in ( t ,A) , model . hours_per_block ) ) − H[ s , t ] == z_up [ s , t ] − z_do [ s , t ] ) + = data = HydroModelData ( " data / plantdata . csv " , " data / spotpricedata . csv " ) dayahead = DayAheadModel ( data ,5 , " Ljusnan " ) plan ! ( dayahead )
Outline Background Problem Description Contribution Model Framework Stochastic Day-Ahead Model Optimization Algorithms Optimal Strategies Outlook on Future Work 14/39
Contribution - Stochastic Day-Ahead Model Profit + Water Value − Balance Cost maximize subject to Day-Ahead Orders Physical Limitations Economic/Legal Limitations 15/39
Contribution - Stochastic Day-Ahead Model Day-Ahead Orders - x ∈ X ◮ Indices t ∈ T := { 1 , . . . , 24 } , b ∈ B := { b = ( t a , . . . , t b ) : t i ∈ T } ◮ Price independent: x i t ≥ 0 ◮ Price dependent: 0 ≤ x d i , t ≤ x d i , t + 1 ◮ Block: x b j , b ≥ 0 16/39
Recommend
More recommend