Code release of UT Austin's TacTex (2013-2015) Power Trading Agent
This release provides the complete source code of the TacTex agent, which was a top-performing agent in the Power Trading Agent Competition (Power TAC, www.powertac.org) in the years 2013, 2015. The code is based off the TacTex-15 agent, which competed in the 2015 Power TAC finals.
The code implements the agents and algorithms described in Daniel Urieli's Ph.D dissertation "Autonomous Trading in Modern Electricity Markets", which can be found in the following link: http://www.cs.utexas.edu/~urieli/thesis
Related research papers can be found here: http://www.cs.utexas.edu/~urieli/#publications
The goals of this code release is to 1) help new Power TAC researchers to get past the initial stages of developing an agent, 2) help the Power TAC community to use TacTex's contributions in their research on autonomous power trading agents and future electricity markets.
You may use the code, but please keep the copyright notices attached and keep track of what ideas you are using from this code.
We would be interested in hearing from you regarding how easily you were able to compile, run, and use the code. Please use our contact details below.
If you use this code for research purposes, please consider citing one or more research papers that can be found (with corresponding Bibtex entries) in http://www.cs.utexas.edu/~urieli/#publications and which include the following:
-
"Autonomous Trading in Modern Electricity Markets" Daniel Urieli Ph.D. Dissertation, The University of Texas at Austin, Austin, Texas, USA, 2015.
-
"An MDP-Based Winning Approach to Autonomous Power Trading: Formalization and Empirical Analysis" Daniel Urieli, Peter Stone In Proc. of the 15th International Conference on Autonomous Agents and Multiagent Systems, 2016 (AAMAS-16).
-
"Autonomous Electricity Trading using Time-Of-Use Tariffs in a Competitive Market" Daniel Urieli, Peter Stone In Proc. of the 30th Conference on Artificial Intelligence, 2016 (AAAI-16).
-
"TacTex'13: A Champion Adaptive Power Trading Agent." Daniel Urieli, Peter Stone In Proc. of the 28th Conference on Artificial Intelligence, 2014 (AAAI-14).
http://www.cs.utexas.edu/users/TacTex/
Daniel Urieli (urieli@cs.utexas.edu)
Peter Stone (pstone@cs.utexas.edu)
Computer Science Department The University of Texas at Austin Austin, TX, USA
- Power TAC 2015 server (version 1.2.3)
TacTex communicates with a running instance of the the Power TAC server. Instructions to download, install, and run the Power TAC server can be found at www.powertac.org. TacTex's code is based off the TacTex-15 agent, which competed in the 2015 Power TAC finals. This code can be built and run with the 2015 version of the Power TAC simulator (version 1.2.3). To use the code with later versions of the simulator, some modifications to the source code may be required.
=======================
TacTex was written in java, was built using maven, and was tested on Ubuntu Linux. The build/run instructions for this code release are similar to the build/run instructions provided with the sample broker that is provided with the Power TAC server (we use the terms 'simulator' and 'server' interchangably).
For completeness, the sample-broker build/run instructions (created by John Collins' team at UMN) are copied next, with minor adaptations to TacTex.
The TacTex broker interfaces with the Power TAC simulator. It handles all message types and operates in both wholesale and retail markets. TacTex's operation is detailed in the publications that are mentioned above.
Without changing anything, the current version assumes the 2015 server (version 1.2.3) is running on localhost, and is not picky about passwords. You can change the server URL by editing the broker.properties file, or by using your own properties file. Passwords are generally ignored outside a tournament environment.
Most developers will presumably want to work with the code using an IDE such as
STS. The TacTex package is a maven
project, so it works to just do File->Import->Existing Maven Projects and
select the TacTex directory (the directory containing the pom.xml file).
You can set up a simple "run configuration" to allow you to run it
from the IDE. It is an AspectJ/Java app, the main class is
edu.utexas.cs.tactex.core.BrokerMain
, and there are no arguments
required unless you wish to specify an alternate config file or pass other
options (see below). See a high-level documentation of the code in the
"Documentation" section.
This is a maven project. You can run the broker from the command line using maven, as
mvn compile exec:exec [-Dexec.args="<arguments>"]
where arguments can include:
--config config-file.properties
specifies an optional properties file that can set username, password, server URL, and other broker properties. If not given, the file broker.properties in the current working directory will be used.--jms-url tcp://host.name:61616
overrides the JMS URL for the sim server. In a tournament setting this value is supplied by the tournament infrastructure, but this option can be handy for local testing.--repeat-count n
instructs the broker to run n sessions, completely reloading its context and restarting after each session completes. Default value is 1.--repeat-hours h
instructs the broker to attempt to run sessions repeatedly for h hours. This is especially useful in a tournament situation, where the number of games may not be known, but the duration of the tournament can be approximated. If repeat-count is given, this argument will be ignored.--no-ntp
if given, tells the broker to not rely on system clock synchronization, but rather to estimate the clock offset between server and broker. Note that this will be an approximation, but should at least get the broker into the correct timeslot.--queue-name name
tells the broker to listen on the named queue for messages from the server. This is really only useful for testing, since the queue name defaults to the broker name, and in a tournament situation is provided by the tournament manager upon successful login.--server-queue name
tells the broker the name of the JMS input queue for the server. This is also needed only for testing, because the queue name defaults to 'serverInput' and in a tournament situation is provided by the tournament manager upon successful login.
If there are no non-default arguments, and if the broker has already been compiled, then it is enough to simply run the broker as mvn exec:exec
.
Run-time log is by default written into the file "log/broker1.trace" under the broker's directory.
This package comes with an ability to create an "executable jar" file from source that includes all dependencies, and typically needs only a configuration file to work. You can create an executable jar as
mvn clean package
which will produce a file target/name.jar
, where name
is the "name" element near the top of the pom.xml (i.e. 'TacTex'). All classpath resources will be included (files in src/main/resources
) in addition to the compiled classes and all dependencies.
You can then run the agent as
java -jar TacTex.jar [args]