Direct Load Control

classic Classic list List threaded Threaded
10 messages Options
FH
Reply | Threaded
Open this post in threaded view
|

Direct Load Control

FH
Hi all,

I have another question, which is related to direct load control.
If I have a consumer, who has subscribed to a tariff, is it possible to not deliver the power?
To phrase it differently, I want to implement a tariff that makes no guarantees about the actual delivery.

Best regards and thanks in advance,
Fabian
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

grampajohn
Administrator
Hello, Fabian -

FH wrote
I have another question, which is related to direct load control.
If I have a consumer, who has subscribed to a tariff, is it possible to not deliver the power?
To phrase it differently, I want to implement a tariff that makes no guarantees about the actual delivery.
Any customer who has a Power Type pt for which pt.isInterruptible() is true can subscribe to a tariff of type INTERRUPTIBLE_CONSUMPTION. This type allows the broker to interrupt a portion of the load they would otherwise deliver in a given timeslot by issuing an EconomicControlEvent specifying the portion of the load to be curtailed, against the tariff. Customers will of course expect lower energy prices in exchange for the possibility of being interrupted.

Interruptible customers include all the storage types, like THERMAL_STORAGE_CONSUMPTION or ELECTRIC_VEHICLE, as well as INTERRUPTIBLE_CONSUMPTION. These types may find tariffs with regulation rates more attractive, depending of course on their energy cost projections.

Does this help?

John
FH
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

FH
Hi John,

yes, this is exactly what I need.
I assume the information that a consumer is requesting power reaches the broker through PortfolioManagerService.handleMessage(TariffTransaction).
Maybe you could just give me a last hint, which method I have to call in order to interrupt the respective consumer in reaction to this?

Thanks,
Fabian
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

grampajohn
Administrator
Hello again, Fabian -
FH wrote
I assume the information that a consumer is requesting power reaches the broker through PortfolioManagerService.handleMessage(TariffTransaction).
Maybe you could just give me a last hint, which method I have to call in order to interrupt the respective consumer in reaction to this?
I updated the Sample broker to post economic control events every four timeslots against all the INTERRUPTIBLE_CONSUMPTION tariffs. It's in github, so you can download the latest source to see how that works.

However -- when I tried it, nothing happened (see Issue #958). Turns out the CapacityControlService was not being activated in every timeslot. So I fixed that, and pushed and deployed an updated server 1.5.0-SNAPSHOT. You will now see the economic controls being applied in the server trace log, and the correct TariffTransactions are generated in response to controls.

You cannot control consumption in the current timeslot after seeing the tariff transactions. To see why, take a look at Figure 2 in the specification -- customers consume and produce energy early in the cycle, and the transactions go out during the Accounting process at the end. The economic controls are applied at the same time as balancing controls, after customers run and before accounting runs. So if you wait until you see the tariff transactions in timeslot 32, it's too late to post economic controls for ts 32. You have to plan one timeslot ahead. Even if we sent out the TariffTransactions while the customer models were running, there's not enough time for a broker to receive the message, act on it, and send back a control event before the CapacityControlService and BalancingMarketService modules run. The interval on the server side can be 10 msec or less.

When economic or balancing controls are applied, you will see two TariffTransactions for those customers, one for its actual consumption, and another for the "correction" that's applied by the controls.

Does this help?

John
FH
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

FH
Hi John,

can I also access the information about the consumers that subsribed to my tariff one timestep (t - 1) ahead?
I would like to calculate the total power consumption for t at t - 1 and apply suitable economic controls for t (also at t - 1).

Sorry if the answer to this question is too obvious, I am just not very experienced in PowerTAC. ;)

Thanks,
Fabian
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

grampajohn
Administrator
Interesting question, Fabian -
FH wrote
can I also access the information about the consumers that subsribed to my tariff one timestep (t - 1) ahead?
I would like to calculate the total power consumption for t at t - 1 and apply suitable economic controls for t (also at t - 1).
No, you cannot get customers to tell you what they are going to do any more than a broker/aggregator could do that in the real world. You have to make predictions and condition your behavior on your own predictions. In the real world, curtailable loads are automated systems like electric water heaters or heat pumps. In a population, these random events add up into fairly predictable time series -- heat pumps run more when their load increase, water heaters run when folks are using hot water. Electric vehicles get plugged in when people arrive home from work (or in many cases when they arrive at work).

You can learn much of this information off-line by analyzing game logs. That's what most of the more successful broker developers do - off-line learning, conditioned by on-line observation. During a sim session, your broker initially gets the boot record, which gives market prices, customer consumption and production, and weather during the boot session. Once the sim is running, you get all the broker-private data for your broker, and all the public data as described in Section 3.3 of the specification.

In the powertac-tools repo there are a number of tools for pulling data out of logs, along with tools for pulling down and unpacking logs. If you want to extract some sort of data from the logs and don't see a tool for doing it, you can use the examples to see how it's done, and of course you can use this forum to discuss how it might be done.

Does this help?

John
FH
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

FH
Hi John,

Thanks again for your detailed answers.
I think I know now everything that I need.

Best regards,
Fabian
FH
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

FH
In reply to this post by grampajohn
Hi John,

have you also updated the server's distribution package (server-distribution) on GitHub?
Then I only need to download it and do not have to compile it from powertac-server and powertac-core.

Fabian
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

grampajohn
Administrator
FH wrote
have you also updated the server's distribution package (server-distribution) on GitHub?
Then I only need to download it and do not have to compile it from powertac-server and powertac-core.
The server-distribution 1.5.0-SNAPSHOT package, the one you get by cloning or downloading from the current HEAD, does not need updating. That's the thing with SNAPSHOT deployments, they are development snapshots that get updated periodically as development proceeds. Release versions are stable, SNAPSHOT versions are not. This fix did not change anything in server-distribution. Take a look at server-distribution/pom.xml - the version shown in the parent clause should be 1.5.0-SNAPSHOT.

Does this make sense?

John
FH
Reply | Threaded
Open this post in threaded view
|

Re: Direct Load Control

FH
This makes sense, thank you. ;)