A Challenge for Evolutionary Programming
A Competition for Programmers
by Mitchell E. Timin
The Robot Auto Racing Simulation (RARS) is a simulation of auto racing
in which the cars are driven by robots. Its purpose is two-fold: to
serve as a vehicle for Artificial Intelligence development and as a
recreational competition among software authors. The host software,
including source, is available at no charge. It currently runs under
MSDOS and UNIX, including Linux, and on the Macintosh and Amiga. This
announcement introduces the seventh release of the software, which we
call version 0.60. RARS is written in C++. The DOS version was
compiled and tested with Borland C++ ver. 3.1. C++ is not required
for the robot "driver" programs.
The race tracks are defined by ASCII files. Many pre-defined tracks
are supplied. The desired track is named on the command line. Users
can create their own tracks using any text editor, although this is
not a trivial process unless a CAD program is used to find the exact
lengths, angles, and radii for the track segments. It is possible to
do it by trial and error, however.
There is a RARS anonymous ftp site: magdanoz.mcafee.com in
directory /bin/ftp/rars. Anyone can get any RARS stuff there,
code, announcements, car controllers, documentation, and tracks.
The principal file that you probably want is rars060.zip. Also,
check out the tracks, robots, and digest sub-directories.
There is a listserver so that interested parties may discuss
RARS by e-mail. To subscribe to the list service send e-mail to
subscribe rars-list
(To unsubscribe, send "unsubscribe rars-list" to the same address.)
We have three locations on the www:
http://www.racesimcentral.net/~bsr/rars.html
http://www.racesimcentral.net/~dgymer/rars/
http://www.racesimcentral.net/~Nims/mi/mi_rars.html
RARS consists of a simulation of the physics of cars racing on a
track, with a simple bird's-eye view of the race. The unique feature
is that each car is controlled by a separate and independent control
program. Each car is "driven" by its own control program, which
receives information from the simulation telling it about the car's
local situation. The "driver" (control program) adjusts the steering
and throttle, and then the physics simulation moves the car a little.
This happens many times per second, of course. Every car has exactly
the same physical characteristics, only the "drivers" are different.
Hence, the result is a competition between the control programs.
Furthermore, the competition is visible as an auto race, with
acceleration, passing, cornering, braking, etc.
It is intended that many users will write their own robot "drivers".
Many robots are supplied. These are meant to serve as examples for
programmers wishing to develop their own. The control programs may
be written in other languages if they are linker-compatible on the
intended platform. To date the robot "driver" programs have used
C++ or ANSI C.
For genetic programming, the races will be between several programs
selected from an evolving population of programs. The racing may
take place continuously for long periods of time, with the graphic
display disabled for faster execution. Of course losers will be
eliminated and winners will breed. Genetic Algorithm proponents will
probably design robot drivers with a vector of parameters to be
determined by evolution. Neural nets are also candidate "drivers".
It will be up to the experimenter to decide if human-designed robots
are allowed to compete with the evolving population.
New features introduced with version 0.45 were:
- The drivers which are to race can be named on the command line.
- The computer can generate a random starting order.
- The race can be run with no graphics display.
- A series of races can be run, on the same track with the same drivers.
- A report is generated in a file, giving the results of all races in
a series. Points are accumulated using the F1 scoring system.
- Degrees or radians may be used in any track definition file.
- Clockwise tracks will work now.
Version 0.50 introduced these features:
- "instrument panel" showing how a selected car is behaving in real-time
- the F and S keys speed up or slow down the simulation during a race
- several additional command line options
- a portable draw_arc function for drawing the track rails
Version 0.60 added many items. Among them are:
- Fuel consumption and variable mass, with lost time for re-fueling
- command line option to enter the RVG seed, to replay a race exactly
- race report has laps completed, damage and fuel for each car
- optional pre-race practice, for robots which can learn
- The file "WHATNEW.DOC" details all the differences w.r.t. ver. 0.50.
Wanted - People to do or help with any of the following:
Porting to MS-Windows
Testing the software and suggesting enhancements
Improving the graphics
Locating a corporate or university sponsor
Act as a race director to manage a "race meet"
Reporting, both to academic journals and popular magazines
Improving the software in any of dozens of ways
Adding sound effects
(and of course, building "drivers" to compete in the races!)