IEEE CEC 2007 Car Racing Competition

Julian Togelius and Simon M. Lucas

In association with the Congress on Evolutionary Computation 2007. There is a prize of 500 USD to the best competitor, generously sponsored by IEEE CIS (subject to at least five entrants registering for the conference).

Getting started
League table
Submitting your controller

Last update: September 19, 2007


The source code for the competition is written in Java, and one format for competition entries will be Java classes. However, we welcome submissions in any programming language as long as you do the work of interfacing your code to ours, and provide us with a simple, self-contained way of running your code. What follows below is a description of the most important interfaces in the package "simplerace" in the source code.

The interface you will extend when you write your own java controller is Controller. Its method public int control (SensorModel inputs) is called every timestep, supplying the controller with fresh information and expecting a, integer control command in return. The values of the control command are specified in Constants.

What's being passed to the controller is an object implementing the interface SensorModel. This provides a number of methods giving information on your car, the opponent car and the waypoints. The methods are divided into methods giving ego-centric / first-person information, and Newtonian / third-person information, and there is a lot of redundancy between the methods. Your controller can access as many or as few of these methods as you deem necessary.

If you want to evolve a controller from your own representation, you might want to implement the Evolvable interface. The two important methods here are mutate, which should change something in your controller, and copy, which should return a complete deep copy of your controller.

Thanks to Pete Burrow and Aravind Gowrisankar for helping in testing the code for bugs, and for useful suggestions.