On Nov 30, 2007, at 7:00 PM, Martin Elfstadius wrote:

I wanted to simulate the loads beeing totally inelastic and not tie
down the generators competition that I'm simulating.
I must have misunderstood how the auction works. I thought that
bids.P.prc held the maximum price per Mw accepted by the corresponding
load. But something goes horribly wrong when I push those values too
high.

So,first I wonder what those values are used for.

bids.P.prc contains the maximum that a load is willing to pay for active power. Using high values should simulate inelastic demand, however, if the prices are too high you may run into numerical issues due to a badly scaled problem (just a guess).

Secondly I am curious on exactly how the LMP:s are calculated (the
values in co.P.prc). Both for DC and AC. I am using last accepted
offer mode, but how are prices inherited between the areas? Even when
using DC (lossless) the prices sometimes differ from pricelevels that
are offered.

The price differences between nodes with a lossless system (DC) come from binding transmission limits.

About how prices are computed ... I'm going to copy my answer to some else a few weeks ago ...

On Nov 16, 2007, at 2:31 PM, I wrote:
The nodal prices are determined from the shadow prices (lambdas) on the power balance equations at each bus. At any given bus, lambda is equal to the cost to the system of serving one more unit of load at that location. When there are binding constraints and/or losses in the system, the value of lambda may not be trivial to determine by inspection. But it is calculated by the optimization routine used to solve the problem. This all applies to AC and DC cases. It turns out that for any generator that is partially dispatched, lambda is equal to that generator's marginal cost at the dispatch point. But lambda can be above the marginal cost if the generator is at an upper limit, or below it's marginal cost if at a lower limit.

OK, now the tricky part ... the various auction types. Since lambda is a measure of the value to the system of a unit of energy at that location, we can use the ratios of lambdas as exchange rates between locations. We can pick a reference node and compute exchange rates with respect to that node and use those exchange rates to normalize all bids & offers to a reference location. These normalized bids and offers can be rank ordered by price, just like you would in a standard 2-sided auction. In a standard auction, there may be a gap between the last accepted offer price and the last accepted bid price. Different auctions use different conventions for setting a uniform clearing price, since any price within that gap is acceptable to all parties. It turns out that the lambda at the reference node will be equal to the last accepted bid or offer price, depending which one is marginal. But we can choose to always use last accepted offer, for example, if we don't want bids to be able to set the price even when they are marginal. So we can set the uniform price at the reference bus anywhere within the bid/offer gap, then use the exchange rates to convert this "uniform" price back to the location specific nodal prices.

So, for example, suppose you have a case where a bid is marginal and all accepted offers are below the lambda's at their bus. If you are using LAO, prices will be adjusted downward according to the normalized bid/offer gap and the resulting price of (at least) one of the generators will be equal to its offer.

Now, I should mention that I've never seen anyone else talk about LAO vs. FRO vs. etc, etc. for markets solved by OPFs. Typically, they just use the lambda's directly, which corresponds to what I call the 1st price auction in MATPOWER.

Hope this helps,

--
Ray Zimmerman
Senior Research Associate
428-B Phillips Hall, Cornell University, Ithaca, NY 14853
phone: (607) 255-9645


Reply via email to