frapac / DualSDDP.jl

7 stars 1 forks source link

Data #4

Open bonnkleiford opened 3 years ago

bonnkleiford commented 3 years ago

Hello,

I'm Bikey, a PhD student. I'm trying to replicate the hydro-power problem which is used in the paper (Dual SDDP). I'm trying to get the data but I can't seem to find the other parameters (upper and lower bounds) and the price data did not state if it is for the thermal, recourse, and transportation price.

I hope you can help me.

You can also reach me through bonnkleiford@gmail.com

Thank you very much!

frapac commented 3 years ago

Dear Bikey, thanks for your interest in DualSDDP! To answer your questions:

Let me know if you need any further information about DualSDDP!

bonnkleiford commented 3 years ago

Dear Francois,

Thank you very much for your response.

I will check everything out and try to do the problem. Thank you again.

BIKEY

frapac commented 3 years ago

Dear Bikey, the two prices are specified here: https://github.com/frapac/DualSDDP.jl/blob/master/src/data.jl#L39L40

bonnkleiford commented 3 years ago

Dear François,

This is great! Thank you very very much!

BIKEY

On Wed, Sep 16, 2020, 2:54 PM François Pacaud notifications@github.com wrote:

Dear Bikey, the two prices are specified here: https://github.com/frapac/DualSDDP.jl/blob/master/src/data.jl#L39L40

  • CPENAL is the recourse price
  • CTANS is the transportation price

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/frapac/DualSDDP.jl/issues/4#issuecomment-693384941, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJAVHMXQRC5TTQ6I5G4USGLSGCYOXANCNFSM4RKAXJXQ .

bonnkleiford commented 3 years ago

Hi Francois,

Thanks again for the response. I just have some follow up questions, if you don't mind.

(1) Regarding the DEMANDS and INFLOWS data, the .txt files [for every country] is composed of 49 rows x 50 columns. Does this mean we have 50 scenarios [for demand and inflow] for 49 time steps/horizon? or I might be interpreting this wrong?

(2) I could not make sense with the Thermal Generation costs for the moment. We have the data "czpl" for the 'thermal cost" but it is a 8x4 array. I understand the 8 rows represent the countries, but what about the 4 columns?

Thank you again for the help! I hope you are having a great week!

BIKEY

frapac commented 3 years ago

Dear Bikey, to answer your questions:

  1. I confirm that for DEMANDS and INFLOWS, we have 49 time steps (48 weeks + 1 final time step) and 50 scenarios. These scenarios were generated using a generator developed at EDF R&D.
  2. I acknowledge that the documentation does not cover the generation costs, that should be improved. czpl is a piecewise linear cost, where each column represents a coefficient, and each row a country, as you assumed. However, in the article, we considered only the first coefficient (hence giving a linear cost): https://github.com/frapac/DualSDDP.jl/blob/master/src/data.jl#L62

Let me know if you have any other question!

bonnkleiford commented 3 years ago

Dear Francois,

Thank you very much for the clear response. One more thing, it was noted in the paper that there is a lower bound and an upper bound for the energy flow between country j and country I (f_jit). Where may I find the data you have used for this?

Thank you very much.

BIKEY

frapac commented 3 years ago

Good question. The bounds on the energy flowing through the edges are deduced from the weighted node-node incidence matrix: https://github.com/frapac/DualSDDP.jl/blob/master/src/data.jl#L30-L37 using the function buildincidence to build i) the standard node-node incidence matrix ii) the bounds on the flows: https://github.com/frapac/DualSDDP.jl/blob/master/src/utils.jl#L31-L47

bonnkleiford commented 3 years ago

Okay. That sounds perfect. I'll try it out.

Thanks, Francois! I'll let you know how it goes.

BIKEY

bonnkleiford commented 3 years ago

Hi Francois,

I'm really sorry for bothering you a lot. I just really enjoyed the problem. Anyway, I have another question:

After using the function buildincidence using the incidence matrix (as you've explained above), I got the following: i) the standard node-node incidence matrix [1 1 0 0 0 0 0 0 0 0; 0 0 1 1 0 0 0 0 0 0; -1 0 -1 0 1 1 1 1 0 0; 0 -1 0 0 -1 0 0 0 1 0; 0 0 0 0 0 -1 0 0 0 1; 0 0 0 -1 0 0 0 0 0 0; 0 0 0 0 0 0 -1 0 -1 -1; 0 0 0 0 0 0 0 -1 0 0],

ii) the bounds on the flows [1440.0, 720.0, 720.0, 720.0, 2160.0, 720.0, 1440.0, 720.0, 720.0, 720.0]

For the standard node-node incidence matrix , it now has 10 columns same with the bounds which now has 10 elements in the array. I am hoping I am getting the right one. I just wanna make sure. Should I use the standard node-node incidence matrix then as the flow incidence for every country (i.e. f_ijt variable)? Or should I still use this:

F_ji = [[0,0,1440,720,0,0,0,0], [0,0,720,0,0,720,0,0], [1440,720,0,2160,720,0,1400,720], [720,0,2160,0,0,0,720,0], [0,0,720,0,0,0,720,0], [0,720,0,0,0,0,0,0], [0,0,1440,720,720,0,0,0], [0,0,720,0,0,0,0,0]]

Thank you again for the help. I really wanna get the exact same solution as you did in the paper.

Thanks and have a great day!

BIKEY

frapac commented 3 years ago

Dear Bikey, your node-node incidence matrix and bounds on the flows both look correct. You have as many columns as lines in the network. In the article, the Kirchoff current law states that: A q + f = 0 with f a n dimensional vector corresponding to the flows arriving at each node (n being the number of nodes) and q a m dimensional vector corresponding to the flows through the arcs (m being the number of arcs). So the number of columns in A should match the number of arcs. In your optimization model, I would recommend using the following formulation :

Aq + f = 0
- bound_flow <= q <= bound_flow

with bound_flow the vector you defined before as [1440.0, 720.0, 720.0, 720.0, 2160.0, 720.0, 1440.0, 720.0, 720.0, 720.0]. Your constraints are all linear.

Note that A is rank deficient. To overcome this issue, it is usual to remove one node in the network (aka the slack node) to improve the numerical stability of the algorithm, and ensure that the optimal multiplier is unique.