Release History

= Release types =

Releases are labeled with names of the form major.minor.point[-status]. There are two kinds of releases, full releases and "snapshot" releases. A full release such as 0.2.0 is distinguished by a missing status indicator. A snapshot release such as 0.2.0-SNAPSHOT is distinguished by the status label.

Full releases are stable; they will not be changed at all once announced. Instead, point releases may be made if required. Each full release includes a small downloadable distribution package for the server, sources for the sample broker, and detailed release notes. The actual server modules will be available through Maven Central, and will be automatically downloaded by maven when you first run the server.

Snapshot releases represent reasonably stable points along a development path, and will made when new features become available that are of interest to agent developers. They may or may not include downloadable distribution packages or release notes, but their status can be roughly assessed by looking at the current list of open issues on github. The latest deployed snapshot is always available in the server-distribution repo. Instructions for using particular snapshot releases will be sent out through the developer's mailing list; here's an example. Instructions for setting up a full server development environment are provided on the Power TAC developer's wiki at github.

= Release history =

The most recent release is shown first. For the more recent releases, the download links are given at the top of the release notes. For older versions, downloads are available on the github download page. This feature of github is now deprecated, so we can no longer use it for newer versions.

Power TAC simulation server, sample broker, and game visualizer, version 1.1.0, August 2014
-- under development --

Downloads:
 * Simulation server binary package tar.gz zip,
 * Sample broker source package tar.gz, zip

This is the version used in the May and June 2014 competitions, with a few minor fixes.

Server release notes
In addition to a number of stability improvements, there were also quite a few visible changes since the previous release, including:


 * Weather forecasts are more accurate (issue #645) and contain prediction 1-24 hours into the future, rather than 0-23 (issue #682).
 * Loading weather data from a file (rather than from the weather server) now works more reliably (issue #730).
 * Weather reports from the bootstrap period are now stored in the WeatherRepo (issue #745).
 * Tariff revocation messages are now sent to all brokers (issue #719) rather than just to the broker that issued the revoked tariff.
 * The server now supports thermal and battery storage devices, with a new PowerType and the ability to specifically pay for balancing events rather than just offering a general discount (issues #724, #653). This feature makes use of the new RegulationRate type (issue #740). The balancing market now handles curtailment of both production and consumption (issue #671).
 * CustomerInfo now specifies the maximum available controllable capacity (issue #697).
 * The BalancingMarket is now a separate module, making it easier to experiment with different implementations (issue #578).
 * Brokers can no longer supersede each others' tariffs (issue #731).
 * The household and officecomplex customer models do a better job of evaluating tariffs (issue #735). Other problems with tariff evaluation have been fixed (issues #763, #768).
 * Additional validation checking on Orders (issues #738, #739).
 * The wholesale market now requires a minimum order quantity (issue #742).
 * A rare problem with wholesale market clearing has been fixed (issue #767).
 * The default genco model now produces prices that mimic the price curve at a load node subject to congestion pricing (issue #737). The core pricing model is a configurable polynomial function, in which the constant and quadratic coefficients vary through a configurable random walk.
 * Slippage of the sim clock now causes a sim to abort (issue #729). This is the only approach we have been able to find that handles the problem of the sim not getting control (because of processor contention) for more than one tick.
 * Customers are no longer charged withdrawal fees for revoked tariffs (issue #762).
 * Corrections in Visualizer display (issue #744).

Sample Broker release notes

 * The sample broker now includes examples of annotation-based configuration -- see for example MarketManagerService (issue #717). This works in all packages (issue #723), but only classes in org.powertac can be specified without the full package path.
 * Javadoc documentation has been improved significantly (issue #720) and is now being automatically generated when changes are pushed to the master branch (issue #713).
 * TariffRepo now works correctly in brokers, where it can be used to track competing tariffs (issue #722).
 * The tariff supersede example in PortfolioManager now works correctly (issue #736).
 * Tariff id values are now constrained to conform to the prefix sent by the server (issue #734).
 * Methods that handle incoming messages are now synchronized to allow for correct operation of multi-threaded broker designs.
 * Packaged brokers (distributed as executable jar files) can now read their default configuration files correctly (issue #778).

Known issues
There are a few unresolved issues at the time of release, including:


 * There is a possibility of discontinuity in the interaction of balancing orders and tariff subscription changes (issue #733).
 * Re-running games with stored random seeds does not behave exactly as expected (issue #667).
 * Customer tariff evaluation does not handle tariffs with negative signup payments as well as it should (issue #766). There are a few other potential problems remaining with tariff evaluation (issues #771, #777).
 * Total imbalance per timeslot should be public information. There is currently no way to communicate this to brokers (issue #775).

Power TAC simulation server and game visualizer, version 1.0.1, July 2013
This is the version of the server actually used in the July 2013 competition. It differs slightly from version 1.0.0 in two ways:
 * Weather data is fetched asynchronously, reducing the probability of pauses every 24 hours due to delays fetching this data.
 * There are some small improvements to the Visualizer.

This version is compatible with version 1.0.0 of the sample broker, so there is no corresponding release of the sample broker.

Download the binary package in tar.gz or zip format.

Power TAC server, sample broker framework, and game visualizer, version 1.0.0, June 2013
Downloads:
 * Simulation server binary package tar.gz zip,
 * Sample broker source package tar.gz, zip

This is the version intended for the July 2013 annual competition. The server and broker are far more stable, and a number of issues related to their interactions in multiple-game tournament environments have been resolved.

Server release notes

 * The Visualizer has been completely re-designed, and mostly re-written. The presentation is much more consistent, and the mouse-over behavior is more informative. Visualizer displays can be exported to multiple graphical formats, including svg, which can be used in publications.
 * Customer tariff evaluation has been completely re-designed, documented, and re-written (Issues #673, #633, #689).
 * Representation of time in domain types and in JMS messages is simplified. In most cases, timeslot index is used rather than timeslot reference or milliseconds (Issue #640).
 * Context-switch delays from the underlying platform no longer affect the timeslot sequence. Instead, they are detected, the sim clock is adjusted, and the adjustment is sent to brokers (Issues #519, #706).
 * Incorrect bootstrap file path no longer crashes the server (Issue #535).
 * Games can be re-run with repeated random-seed values and repeated weather data (Issue #648).
 * Anomalous buy orders no longer generate cleared trades with negative prices (Issue #644).
 * Weather data in bootstrap files now contains timeslot information (Issue #660).
 * Quantities in distribution transactions are now computed correctly. Brokers can no longer get paid for using the service (Issues #669, #691).
 * CashPosition is now an immutable type, and it gets logged to the state log, so broker balances are now much easier to track (Issues #541, #666).
 * Rate structure is cleaned up, much better documented, Rate validation has been rewritten, and a number of test added to validate various tariff variations (Issues #665, #692, #704).
 * Bootstrap sessions no longer start the JMS process (Issue #599).
 * Multiple improvements in the state log format (Issue #564).
 * Balancing now includes transactions from the current timeslot (Issue #681).
 * Market transactions are now posted when power is delivered, rather than when it is ordered. This can make a big difference at end-of-game (Issue #474).
 * Customer models are now subscribing to reasonable production tariffs (Issue #677).
 * Chained constructors no longer generate multiple state log entries (Issue #684).
 * Brokers are now notified when wholesale market orders are rejected (Issue #296).
 * Variable-rate tariffs now work as advertised (Issues #690, #686).
 * Weather forecasts are finally working correctly (Issue #699).
 * Tariffs of failed broker are now automatically revoked (Issue #702).

Sample Broker release notes

 * A maven goal and associated documentation have been added to assist broker developers with creating standalone binary distribution packages for their brokers (Issue #652).
 * Brokers can be run on platforms without ntp, using a new command-line option and an approximate synchronization based on timing the initial login handshake (Issue #693).
 * MarketManager now recycles correctly between sessions in a multiple-session run (Issue #705).

Known issues

 * There is a memory leak in the Visualizer (Issue #710). This is usually not a problem in a single game, but can bring down the server after a few sessions without a restart.
 * There remains some unhelpful variability when running games using pre-recorded random seeds (Issue #667).
 * The supersedes list in a TariffSpecification is not getting into the state log (Issue #685).

Power TAC server, sample broker framework, and game visualizer, version 0.6.3, December 2012
Downloads:
 * Simulation server binary package tar.gz zip,
 * Sample broker source package tar.gz, zip

This is the final release in the 0.6 series that was used in the 2012 competitions. There are several changes affecting the sim server and brokers, most of them focused on stability and validation of broker-server interactions.

Server release notes
Changes include:


 * Stability improvements, including
 * Improve interaction between sim and tournament scheduler (issue #575).
 * Fail gracefully when boot-data file is not found (issue #535).
 * Fix visualizer initialization sequence (issue #611).
 * Fix a serious performance problem in the JMS interactions among brokers, the sim server, and the visualizer (issue #629).
 * Clean up properly when game is aborted by tournament scheduler (issue #619).
 * Fix customer faults (issues #630, #631, #649).
 * Fix a race condition that caused clock sync errors when the java process was stalled (issue #519).
 * Clean up visualizer faults (issues #605, #634).
 * Remove dead code related to PluginConfig abstraction (issue #528).
 * Close a window in tariff revocation processing (issue #618).
 * Clean up customer tariff evaluation (issues #620, #621, #626, #633, #650).
 * Fix an accounting error with variable-rate tariffs (issue #627).
 * Add validation rules to reject badly-formed tariff specifications (issues #624, #625, #640).
 * Correct the weather forecasts, which were not tracking weather reports correctly (issue #645).
 * Add command-line option to allow re-use of random sequences from previous games (issue #648).

Sample broker release notes
Changes include:


 * Broker now bails from stalled games (issue https://github.com/powertac/powertac-server/issues/623 #623). The default setting is two minutes of inactivity. Note that this can be somewhat annoying for server developers, since the broker will bail if you put a breakpoint in the server. Also, those experimenting with using pause-mode to enable user interaction with brokers will almost certainly want to disable this feature or set the timeout much longer for all brokers in the sim.
 * It is now easy to package up a binary-only version of a broker, to allow sharing broker implementations without sharing sources (issue #652). It is described in the updated README file.

Known issues
Most of the outstanding issues are related to the visualizer and to the format of the state log, which is unnecessarily difficult to parse in a few areas. There will be some changes in the state log format for version 1.0, but they will require changes in the common module, which will in turn necessitate re-compilation of brokers, and may invalidate some existing log-parsing tools.

Power TAC server version 0.6.2, September 2012
This is a point release that fixes two problems with 0.6.1. The first is a correction to the tariff evaluation logic in the customer models, and the second is an update to the DU balancing market that correctly handles a non-zero slope in the cost function of the external "regulating market". The result is that the cost of imbalance is a fairly noticeable function of the size of the imbalance (default is .01/10 MWh), and that a broker can benefit from being on the "good side" of the overall imbalance. So if the overall imbalance is positive (surplus power), then a broker with an individual negative imbalance is better off than it would be if the overall imbalance were negative.

This release does not change the common or server-master modules, so there is no need to recompile brokers.

Power TAC server, sample broker framework, and game visualizer, version 0.6.1, July 2012
This release is focused on stability rather than functionality, especially stability in a multi-game tournament situation. The only significant functional changes are in the operation of the balancing market, which should effectively discourage running large current-timeslot deficits, and in the tariff-evaluation behavior of the customer models, which will discourage excessive periodic charges in tariff offerings. It includes an updated server, broker framework, and game visualizer, and works with an updated tournament manager.

The tournament manager is not formally released at this point, but we believe it is stable and performs correctly. Although there is some documentation on setting it up, it is incomplete and fairly complex, and it requires several server machines dedicated to it in order to do anything useful.

In addition to the functional changes, there have been some API changes and a thorough re-working of the interactions among brokers, simulation servers, visualizers, and the tournament scheduler at the beginning of each game. Brokers and visualizers no longer create queues on the simulation servers; rather, the servers create all the queues. Queue names are generated by the tournament scheduler, and provided to both brokers and visualizers when they log in.

Release Notes
Changes to the simulation server in this release include:


 * Wind data in the weather reports are interpolated in cases of missing data (Issue #536). This should make the output of wind turbines more predictable.
 * Customer models do a better job of evaluating tariff offerings, especially when periodic payments are included (Issue #556).
 * The simulator does a better job validating and interpreting broker tariff offers (Issue #557).
 * The trace log files are somewhat smaller, partly because the xml messages are not included, and partly because most unsuccessful broker and visualizer logins are invisible to the server and therefore are not logged (Issue #560).
 * Processing of tariff revocations has been refactored and improved, and customers are no longer able to subscribe to or use power against revoked tariffs once the revocation processing is complete. But revocations are processed at the end of timeslot processing, so customers can use power for at most one further timeslot after a broker has sent the revoke message (Issue #565).
 * Brokers can no longer re-use the ID values of revoked tariffs. All tariff specifications are now rejected if they do not have unique ID values (Issue #567).
 * The balancing market has been updated in two ways. First, the marginal cost of imbalance increases as the size of the imbalance increases (Issue #568); and second, the imbalance penalties can be reduced substantially with balancing orders, and in cases where a broker is on the "good" side of the imbalance (in surplus when the market has a shortage, and in deficit when the market has a surplus) (Issue #593).

Changes to the sample broker framework include:


 * The broker framework now runs multiple sessions without need of an external shell script (Issue #561). The command-line interface allows specification of number of sessions (games) or the length of time to keep trying to log in to a tournament. This is accomplished by a complete re-load of the Spring context, and so does not depend on careful management of data structures.
 * The broker login protocol for both tournaments and individual simulations has changed (Issue #574). Specifically, brokers are no longer permitted to create queues in the server. Instead, in a development situation the queue name is the broker's username (although this can be overridden with command-line arguments for testing), and in a tournament situation both the broker and simulator are given the queue names as part of the game setup by the tournament manager.

In addition to a number of small improvements, changes to the game visualizer include:


 * Customers and PowerTypes are represented much more clearly (Issue #525), and power producers are listed separately from consumers.
 * There is much more detail on the wholesale power market (Issue #530), including a history of spot prices, and the leadtime-cost curve for each timeslot.
 * The interaction of the visualizers with the tournament manager and simulation servers has been completely refactored and tested (Issue #576).

There remain a few annoying, mostly cosmetic issues, that have not yet been addressed, including:


 * Market transactions are posted sooner than they should be, causing a slight distortion of a Broker's cash position (Issue #474).
 * The user interactions in the Customer and Broker panels of the visualizer do not always work as expected (Issues #570, #602, and #603).
 * The format of the simulation state logs is a bit awkward in places. See for example Issues #539 and #541.

Power TAC server version 0.5.1, 7 May 2012
This is a bugfix update of 0.5.0. Specifically, issue #531 is fixed, so the balancing market should work correctly without producing NaN values. The download package is available on github. The sample broker is unmodified, and remains at version 0.5.0.

Power TAC server version 0.5.0, April 2012
As with previous releases, the server is distributed in the form of a small directory called "server-distribution" that contains a README.txt file, a sample server configuration file, and a maven pom.xml file. Detailed instructions for configuring and running the server are in the README.txt file.

The sample broker implementation is also updated for this release.

Release Notes
This release is feature-complete for the 2012 international competition. It includes a web-based front-end for controlling and viewing simulations, several new features, and a number of bugfixes. New features include:


 * The Visualizer, a web-based front-end that lets you set up and start games, and then watch them.
 * Controllable capacity in customer models, indicated by a PowerType of INTERRUPTIBLE_CONSUMPTION, and supported by new representation including
 * Customers that support interruption will generally shift their demand to the subsequent timeslot, on in some cases will spread the shift out over a couple of timeslots.
 * EconomicControlEvents that allow a broker to curtail some portion of the power demand for a specific tariff over a specified timeslot,
 * BalancingOrders that allow a broker to offer some portion of the customer demand for a specific tariff to the DU to be used to offset supply-demand imbalances. Brokers are paid when their BalancingOrders are exercised according to the scheme described in Section 6.2.3 of the game specification.
 * BalancingControlEvents notify brokers when their BalancingOrders are exercised.
 * A Rate for a Tariff with a PowerType of INTERRUPTIBLE_CONSUMPTION can specify the maximum proportion of the customer's offered load that can be curtailed in a given timeslot.
 * Broker login is much more forgiving - you can start brokers before the server is running, and they will periodically re-try their logins until the server is ready for them. You can also limit the time the server will wait for all specified brokers to log in. This feature requires the updated core elements of the sample broker package.
 * Server configuration information is communicated to brokers in the form of a Properties object rather than the earlier, somewhat idiosyncratic PluginConfig instances.
 * Communication between the server and brokers uses a simple 2-secret scheme to discourage spoofing (presumably by other brokers). The broker logs in with the name of its queue, and the server passes a short token when the login is accepted, which must be pre-pended to each message sent to the server. This is implemented in the updated sample broker package.
 * Boot sessions run much faster. The default currently is 400 msec/timeslot, and it could probably be half that without causing problems.

In addition, a number of issues have been resolved, including


 * Weather data now includes cloud cover information (#308), and the solar producers use it to adjust output.
 * The competition length computation correctly accounts for the bootstrap period (#486).
 * Incoming message from brokers are now written to the server state log (#490).
 * The synchronization between the server and brokers is much improved (#492). The clock will be paused if the interval between the TimeslotComplete message and the beginning of the following timeslot falls below a configurable threshold.
 * The server has not been known to crash at the end of a simulation since #498 was fixed.
 * The sample broker has been refactored to cleanly separate the core framework from the agent behaviors (#501).
 * A race condition that existed when a broker tried to revoke a tariff before it was published has been resolved (#505, #507).
 * TariffTransactions are no longer crediting brokers when they should be debits (for example, when customers produce power, the broker needs to pay them, not charge them) (#517).
 * The Timeslot sequence no longer gets messed up if the machine goes out to lunch past the expected end of a timeslot (#519).
 * Customer bootstrap data now shows correct PowerType information, needed by brokers to compose tariffs (#520).

Known defects in this release:


 * #531: When the balancing market curtails a customer under an INTERRUPTIBLE_CONSUMPTION tariff in the same timeslot when that customer has reduced its subscription to that tariff to zero, the order of operations is incorrect (the unsubscribe happens before the curtailment), and we get a divide-by-zero error. You should not see then unless you are offering a tariff for interruptible consumption. The sample broker offers such a tariff; until we have a fix, you can not use the sample broker, or you can reduce the rate for that tariff so customers are much less likely to ever unsubscribe.

Power TAC server version 0.2.0, February 2012
(Preliminary) As was the case with the 0.1.0 release, the server is distributed in the form of a small directory that contains a README.txt file, a sample server configuration file, and a maven "project object model" file called pom.xml. Detailed instructions for configuring and running the server are in the README.txt file.

This release also comes with a companion sample broker implementation, written in Java, that provides all the message types, the interaction with the server, and very simple behaviors for offering tariffs and bidding in the wholesale market.

For more information on the status, design, and development process for the server, there is a developer-oriented writeup at GitHub on getting started with the new Power TAC server.

Release notes
This release represents a significant milestone toward the 2012 competition, but it still lacks the web-based front-end, and there are still no analysis tools. In addition to a number of bugfixes and code cleanups, there are a number of important issues resolved and new features with respect to the 1.0 release:


 * New command-line interface gives much more control over server configuration (#463, #481). It is documented in the README file.
 * New configuration system provides a uniform way to configure the server, eliminates the need to keep track of server configuration options in three different places, and gets rid of the PluginConfig instances that were showing up in the bootstrap-data file (#462). Instead, the broker is now sent a single Properties instance at the beginning of a simulation session containing all the public configuration data.
 * Broker login now works correctly (#467).
 * There is now a Java-based sample agent available (#444).
 * Server and sample broker can now be configured to run on different hosts (#475).
 * Tariff publication and revocation fees are now randomized (#483).
 * Customer unsubscribe events are now correctly communicated to brokers, so they can accurately track the number of customers subscribed to each tariff (#487).
 * The customer models (both the bottom-up "household-customer" model and the statistical "factored-customer" model) use weather reports to decide how much power to use in certain appliance types, such as air conditioners (#446).

Power TAC server version 0.1.0, December 2011
The server is distributed in the form of a small directory that contains a README.txt file, a sample server configuration file, and a maven "project object model" file called pom.xml. The first time you run the server, there will be a significant pause, and considerable console output, while maven retrieves all the components that make up the server. Detailed instructions for configuring and running the server are in the README.txt file.

For more information on the status, design, and development process for the server, there is a developer-oriented writeup at GitHub on getting started with the new Power TAC server.

Release notes
This release is a "developers" release. The simulator portion of the Power TAC server is quite usable, but missing a few features that we intend to support for the 2012 competition in June. However, the web-based front-end is missing, the web application for scheduling tournaments and large-scale experiments is not included, and there are as yet no log-analysis tools available.

Specific unresolved issues for this release include (with links to the original github issues)


 * We currently do not have a Java-based broker framework to offer (issue #444), although we expect to have one in a few weeks, and there are a couple of people who have already done Java-based brokers. There is also a Grails-based broker framework that has been updated to work with the new server.
 * Some modules are not currently configurable through the server properties file (issues #419 and #454.
 * Customer models, including the solar and wind models in the factored-customer module, do not react to current weather conditions (issue #441).
 * The balancing charges are not generated exactly as described in the specification (issue #435). Instead, the older balancing scheme from the Grails prototype is still in place.
 * An anomaly has been observed in wholesale market clearing (issue #457), in a forked version of the server. At this point we have not been able to make it happen in the current codebase, but we are leaving the issue open until we are confident that it's been resolved.
 * Brokers do not get information about total net load per timeslot (issue #431).
 * Cloud cover in weather reports is always zero (issue #308).
 * Customer models currently do not implement controllable/interruptible capacity, and the distribution utility does not exercise them in any case (issue #243).

= Release history for the 2011 Grails prototype =

Instructions for the original Grails version of the Power TAC simulation server.