Wholesale power story - Pyosch/powertac-server GitHub Wiki

up
The original "Liquidity Provider" basically fed bids in to the wholesale market from a body of historical price data that was correlated with historical consumption data. But we are not using historical consumption data any more, we are using our own customer models. Brokers need to learn about the relationships among weather data, tariff terms, customer behavior, and market prices. If we use historical market prices without the corresponding historical consumption data, there will be nothing to learn, and therefore no way for brokers to formulate competitive yet profitable tariffs, and then trade effectively in the wholesale market to serve their customers.

Therefore, the Power TAC simulation will use "GenCo" models, and possibly a wholesale buyer, to support the wholesale side of the forward market, and potentially the balancing market as well.

GenCo models

A GenCo is a producer of power connected to the transmission grid, as opposed to the distribution grid where the Brokers operate. Each GenCo has a few basic properties:

  • Total capacity, some of which is available to Brokers, and some of which is presumably committed in other markets.
  • Cost/mWh.
  • Existing commitments to Brokers, which reduce available capacity.
  • In operation or not. Some production facilities must be taken offline periodically for maintenance, refueling, etc.
  • Commitment leadtime, the number of hours needed to start up or shut down a plant. This can range from 0 to as much as 24 hr.
  • Net carbon emission rate in kg/kWh. Older coal plants are typically around 1.0 kg/kWh.
  • Renewable or not. Wind, solar, hydro, and biomass are renewable with zero carbon emission. Nuclear is non-renewable with zero carbon emission.

Of course, some production facilities have stable, predictable output, and others do not. A thermal plant is much more predictable than a wind farm. Presumably a wind farm will use weather forecasts and a simple probability model to sell portions of its output on the day-ahead market, such that it has a high probability of being able to meet its commitments. On the other hand, a thermal plant has to plan its operations further in advance.

Market balance

Since we will no longer be using correlated time series of prices and loads, we need a way to ensure that the power available in the wholesale market is sufficient to meet the local demand, while not being so freely available that there is no relationship between consumption and price. The simplest way I can see to handle this is to use data from a "test run" of our customer models to generate mean and peak load values, then scale the GenCo model collection so that it can handle the peaks, but only with virtually all available resources.

Market interaction

Our GenCo models need to sell power, and need to commit those sales, so the same power does not get sold twice. That way, when the cheap power is sold out, we move up the cost curve. This means that when the market clears, it needs to generate transactions for both the brokers and for the GenCo models, and those transactions need to be communicated back to the models. Do we really need different kinds (classes) of market transactions for brokers and GenCo models, or are GenCo models actually abstract brokers? If the latter, do they need to communicate through the broker proxy?

⚠️ **GitHub.com Fallback** ⚠️