View on GitHub

Genetic Regulation Facilitates the Evolution of Signal-response Plasticity in Digital Organisms

2020 Conference on Artificial Life Submission

Running experiments locally

Here, we provide a brief guide to compiling and running our experiments locally.

Please file an issue if something is unclear or does not work.

Dependencies

The diagnostic tasks are implemented in C++. You’ll need a C++ compiler capable of compiling C++ 17.

On my local machine (used for development), I’m compiling with Homebrew GCC:

g++-9 (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.

On the computing cluster used to run our experiments:

g++ (GCC) 9.1.0
Copyright (C) 2019 Free Software Foundation, Inc.

You’ll also need the following software:

The includes for each diagnostic task implementation assumes that the paths to Empirical, SignalGP, and this repository’s source directory each have been added as includes (-I flag).

Compiling our experiments locally

You should be able use our Makefile with some modifications:

Now, make debug should compile in debug mode (will be much slower but have error checking) or use make native to compile in release mode (much faster but no error checking).

Note: ignore all of the web-related stuff in the Makefile. As of now, we have not implemented web-versions of our diagnostic experiments.

Running experiments

Find the configuration details for the diagnostic tasks in our task descriptions documentation.

To generate a configuration file (for any of the diagnostic tasks), run the executable with the --gen command line argument. Any run-time configuration parameter can be set either in the config.cfg or set on the command line. For example, to set the SEED configuration parameter (random number seed) to 10 on the command line, add the argument -SEED 10.

When running the experiment executable, it uses parameter values in the following priority order (higher overrides lower):

  1. command line arguments of the form -PARAMETER VALUE
  2. parameter values set in the local config.cfg file (in the execution directory)
  3. default parameter values specified in the appropriate config header
    • e.g., source/AltSigConfig.h, source/ChgEnvConfig.h, source/DirSignalConfig.h