Package org.powertac.common
Class RegulationRate
java.lang.Object
org.powertac.common.state.XStreamStateLoggable
org.powertac.common.RateCore
org.powertac.common.RegulationRate
@Domain(fields={"tariffId","response","upRegulationPayment","downRegulationPayment"}) public class RegulationRate extends RateCore
Tariffs are composed of Rates, including RegulationRates.
A RegulationRate specifies payments for
up-regulation and down-regulation
that might be used for balancing and might be different from the payments
for ordinary consumption and/or production.
Typically, the payment for up-regulation is positive (the customer is paid
for energy supplied), and the payment for down-regulation is negative
(the customer pays for energy delivered).
The response of the regulated capacity is either fast (ResponseTime.SECONDS)
or slow (ResponseTime.MINUTES).
Examples of fast devices include resistance heaters and battery chargers.
A heat pump is an example of a slow device --
once it's running, it must be kept running for several minutes; if it is
stopped, it must be left off for several minutes before re-starting it.
Typically, fast-response capacity is more valuable, and in the real world
would be completely automated, perhaps by sensing grid frequency and
up-regulating when the frequency drops, or down-regulating when frequency
rises.
Most tariffs that wish to pay for regulation capacity will include two
RegulationRate instances, one for fast response and one for slower response.
The determination of which one applies is delegated to the interaction
between the balancing market and the customer models that are subscribed
to the tariff.
Note that
(1) Up to two RegulationRates can be attached to a TariffSpecification --
one for fast response, and one for slow response; and
(2) the inclusion of a RegulationRate overrides the maxCurtailment
attribute of any Rates attached to the same TariffSpecification.
In addition, any Customer model that subscribes to RegulationRates must
post their available regulation capacity to their applicable
TariffSubscriptions at the end of their per-timeslot activation processing.
- Author:
- John Collins
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRegulationRate.ResponseTime -
Constructor Summary
Constructors Constructor Description RegulationRate()Default constructor only. -
Method Summary
Modifier and Type Method Description doublegetDownRegulationPayment()RegulationRate.ResponseTimegetResponse()doublegetUpRegulationPayment()booleanisValid(TariffSpecification spec)Returns true just in case this Rate is internally valid, and valid with respect to the given TariffSpecification.StringtoString()RegulationRatewithDownRegulationPayment(double payment)Sets the payment for down-regulationRegulationRatewithResponse(RegulationRate.ResponseTime time)Sets the response timeRegulationRatewithUpRegulationPayment(double payment)Sets the payment for up-regulation
-
Constructor Details
-
RegulationRate
public RegulationRate()Default constructor only. You create one of these with the constructor and the fluent-style setter methods. The tariff ID gets set when you attach one of these to a TariffSpecification.
-
-
Method Details
-
withResponse
Sets the response time -
getResponse
-
withUpRegulationPayment
Sets the payment for up-regulation -
getUpRegulationPayment
public double getUpRegulationPayment() -
withDownRegulationPayment
Sets the payment for down-regulation -
getDownRegulationPayment
public double getDownRegulationPayment() -
isValid
Returns true just in case this Rate is internally valid, and valid with respect to the given TariffSpecification. -
toString
-