On Nov 16, 2007, at 1:09 PM, Daniel Gecer wrote:

I have problem solving an UOPF with a DC-network. I would like to set up an auction and use the smartmarket. When I do that it only works from time
to time.
<snip>
 What is it that I dont understand? Or is it just a
bug?

I'm not sure what is going on. If you send me the case file and two script files that set up offers and options and call runmarket. Send me one case that solves correctly with the low prices and another with higher prices that does not solve, then I'll look into it. To be honest, I have done very little testing of the smartmarket code with the DC OPF, so there might very well be bugs.

<snip>
Can someone explain
to me how the calculation of nodal prices are made for DC aswell as for AC
networks.

Yes, I know ... I really need to write a paper on this.

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.

Hopefully, that helps,

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

Reply via email to