Closed opfsolver closed 1 year ago
Is there any chance this could be answered? It's still relevant and valuable to know about this for me.
The goal of this procedure is to remove cost blocks which will never be used due to the bounds of the generator's output. The second step, which extends the cost block by 10% above the generator limit is to avoid some numerical issue in the solvers.
Thanks for your response! My understanding is that block
pmax refers to the size of the block, regardless of the position in the sequence of blocks, i.e. two 5MW blocks would have sizes of (5MW, 5MW) rather than cumulative (5MW, 10MW). points
would be the cumulative one right?
So in this case we are checking whether any individual block size is larger than the generator pmax (maybe never happens?).
Also, I think the second part of the condition should be reversed (see https://github.com/lanl-ansi/PowerModelsSecurityConstrained.jl/pull/40 which I've edited a little from the original PR)
So in this case we are checking whether any individual block size is larger than the generator pmax (maybe never happens?).
I am sure it did happen at some point, these checks were added to address some issue that was encountered in some dataset. But it is reasonable to check if this is really important or not given the final version of competition datasets.
Ok, thanks for your response!
I'm trying to understand the generator cost block preprocessing code. It first removes the blocks which are too expensive: https://github.com/lanl-ansi/PowerModelsSecurityConstrained.jl/blob/8e2ac90dbb9cb2cc7f9b81fa4821113b49c565e3/src/io/goc_c2.jl#L258-L263
and then does some other transformation: https://github.com/lanl-ansi/PowerModelsSecurityConstrained.jl/blob/8e2ac90dbb9cb2cc7f9b81fa4821113b49c565e3/src/io/goc_c2.jl#L265-L275
There are a couple of things I don't understand here: 1) The if statement condition checks if a block
pmax
is larger than the generatorpmax
. Given thecost_pmax = sum(cblock["pmax"] for cblock in gen["cblocks"])
line above this is never possible for generators with more than one block? 2) Why do we limit the blockpmax
to 1.1 of the generatorpmax
? Is it for numerical reasons to help optimisation? 3) There is also the if condition statement which seems unlikely to be what's intended (https://github.com/lanl-ansi/PowerModelsSecurityConstrained.jl/pull/40)