Controlled wholesale market experiments

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

Controlled wholesale market experiments

susobhang70
Hello John,

I would like to control tariff and balancing market feedback to the brokers, while running experiments on the wholesale market. Could you please help out? Specifically, I'd like to:

1. Alert each participating broker that they have subscribers with a fixed energy usage of X in every timeslot.
2. Have each broker pay the same balancing price per unit, if there is an imbalance.
3. Enable/Disable genco and miso buyer from wholesale market, and modify their attributes.

I came across this post, but they it's a bit difficult to follow and doesn't answer all my queries - http://power-tac-developers.975333.n3.nabble.com/Running-wholesale-market-separately-td4026470.html

Thanks
Susobhan
Reply | Threaded
Open this post in threaded view
|

Re: Controlled wholesale market experiments

grampajohn
Administrator
susobhang70 wrote
Hello John,

I would like to control tariff and balancing market feedback to the brokers, while running experiments on the wholesale market. Could you please help out? Specifically, I'd like to:

1. Alert each participating broker that they have subscribers with a fixed energy usage of X in every timeslot.
I've had to think about this for a few days, sorry for the delay.

I guess for this you can strip down the simulator. The set of modules included when you start the server is determined by the modules list in powertac-server/pom.xml. You would have to eliminate all the customer models, and then add one of your own. It would have to subscribe to a tariff for each broker. If you are going to use real brokers, you will have to decide how this will work and make sure the brokers accept your solution. For example, it's not clear that every broker issues tariffs at the start of a game; it's hard to see how you could subscribe to a tariff that does not (yet) exist. To avoid reallly confusing the brokers, you may have to restrict subscriptions to simple CONSUMPTION tariffs. Some brokers try to improve their competitive positions by canceling existing tariffs and replacing them with new ones. You would either have to make sure their subscriptions get transferred, or just not use those brokers.

Customer energy use is communicated through TariffSubscription.usePower().
2. Have each broker pay the same balancing price per unit, if there is an imbalance.
That would require a new SettlementProcessor in the balancing-market module. It should be very simple. You can configure which settlement processor is used -- see the line for balancemkt.balancingMarketService.settlementProcess in server-distribution/config/server.properties.
3. Enable/Disable genco and miso buyer from wholesale market, and modify their attributes.
genco configuration is also set in server.properties.

Does this help?

John
Reply | Threaded
Open this post in threaded view
|

Re: Controlled wholesale market experiments

susobhang70
Thank you John for the detailed response. That certainly helps. I have one more query - I'd like to disable all bids in the wholesale market by the default broker. How do I go about doing that?

Also if possible, how do I go about disabling default broker altogether?

Regards,
Susobhan
Reply | Threaded
Open this post in threaded view
|

Re: Controlled wholesale market experiments

grampajohn
Administrator
susobhang70 wrote
I'd like to disable all bids in the wholesale market by the default broker. How do I go about doing that?

Also if possible, how do I go about disabling default broker altogether?
Removing the DefaultBroker from the configuration will probably cause problems, but you could try it and see what happens. I think most of the dependencies on it are from other customers during tariff evaluation. Some brokers probably depend on it as well, so it may be necessary to allow it to issue its default tariffs. This happens in DefaultBrokerService.initialize(). The remainder of the activity arises from per-timeslot activation and from responding to incoming messages. The per-timeslot activation happens in the activate() method, and incoming messages all pass through receiveBrokerMessage(). It should be enough to short-circuit those two methods.

Hope this helps -

John