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 class
RegulationRate.ResponseTime
-
Constructor Summary
Constructors Constructor Description RegulationRate()
Default constructor only.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
getDownRegulationPayment()
RegulationRate.ResponseTime
getResponse()
double
getUpRegulationPayment()
boolean
isValid(TariffSpecification spec)
Returns true just in case this Rate is internally valid, and valid with respect to the given TariffSpecification.String
toString()
RegulationRate
withDownRegulationPayment(double payment)
Sets the payment for down-regulationRegulationRate
withResponse(RegulationRate.ResponseTime time)
Sets the response timeRegulationRate
withUpRegulationPayment(double payment)
Sets the payment for up-regulation-
Methods inherited from class org.powertac.common.RateCore
getId, getTariffId, setTariffId
-
Methods inherited from class org.powertac.common.state.XStreamStateLoggable
readResolve
-
-
-
-
Method Detail
-
withResponse
@StateChange public RegulationRate withResponse(RegulationRate.ResponseTime time)
Sets the response time
-
getResponse
public RegulationRate.ResponseTime getResponse()
-
withUpRegulationPayment
@StateChange public RegulationRate withUpRegulationPayment(double payment)
Sets the payment for up-regulation
-
getUpRegulationPayment
public double getUpRegulationPayment()
-
withDownRegulationPayment
@StateChange public RegulationRate withDownRegulationPayment(double payment)
Sets the payment for down-regulation
-
getDownRegulationPayment
public double getDownRegulationPayment()
-
isValid
public boolean isValid(TariffSpecification spec)
Returns true just in case this Rate is internally valid, and valid with respect to the given TariffSpecification.
-
-