YACE - yet another corewar evolver FAQ

0. Quickstart
1. What is yace?
2. How can I install yace?
3. How to start it?
4. I want to write my own fitness/replacement/slection/whatever
   routine!


0. GNU utilities: extract yace, cd src, make, cd ../bin, yace -h.
   VisualC: extract yace, src/visualc/visualc.dsw, set yace as active
   project, compile release version of yace, start yace.exe -h.


1. What is yace?

  Yace is a program that automatically creates corewar-warriors. This
  is done with a genetic algorithm: At first some warriors are created
  with completely random instructions, no matter if they make sense or
  not. In the easiest case, a warrior fights against another and the
  loser is replaced by a slightly modified version of the winner. This
  puts some preasure on the population, and the warriors should get
  better and better.


2. How can I install yace?

  You need a C - Compiler to create an executable. I have tested yace
  with Microsoft's (tm) Visual C++ 5.0, Red Hat's Cygwin, and Linux
  gcc version 2.95.2. In the last days I have totally migrated from
  Windoze to Linux (yeah... was easier than I tought :-), so compiling
  for Linux should work most likely without problems.

  compiling with Visual C++:

  open the Workspace 'src/visualc/visualc.dsw'. I have created this
  workspace with MS Visual C++ 5.0, it should be no problem converting
  this to VC 6.0. You have to set 'yace' to the active project, then
  choose to compile the release version of yace. You may get many
  warnings, which can be ignored.

  compiling with Linux gcc:

  simply cd to src, then type 'make'.

  compiling with Cygwin:

  works similar to Linux.

  regardless your system, you should now have the executable file
  'yace' in the directory bin/.
  

3. How to use it?

  If you havn't installed yace yet, look above. Now change to directory
  'bin', and open yace.cfg with your favourite text-editor.  There you
  can set many evolver-dependent settings, just try some.

  When you think yace.cfg is set up to produce the best warriors ever,
  you can start yace. It will automatically load warriors from the
  directory 'soup' if they exist, otherwise create random warriors.

  If you want to stop yace, you should remove the file
  'del2stop'. Yace will quit after the current cycle is finished and
  save the whole population to disk.


4. I want to write my own fitness/replacement/selection/whatever routine!

  Cool, do it :-) You should first have a close look at yace.c to see
  how I use fitness-routines.

  fitness_multiwar (file fitness/multiwar.c) is a good example for
  writing fitness-modules. It only consists of about 30 lines of code,
  and should be easy to read. You should copy this file and modify it
  to your needs (please use max. 8 letters for the filename, I want to
  be DOS-compatible)

  When you finished your module, you have to add the prototype to
  fitness.h so that other programms can find your module.

  Now you should now add an entry in the file yace.c which calls your
  fitness-module.

  You can recompile yace now (type 'make clean all'), and modify
  yace.cfg for your needs (please add a short documentation of your routine)

  Please let me know if you add/modify the source! There are good
  chances that I will add it to the distribution.


Have fun!
Martin Ankerl 2000-10-06
mailto:martinankerl@web.de