# This file includes all the run-time defines...
VERSION_ID 1.6		# Do not change this value!

### Architecture Variables ###
MAX_UPDATES  -1         # Maximum updates to run simulation (-1 = no limit)
MAX_GENERATIONS -1      # Maximum generations to run simulation (-1 = no limit)
END_CONDITION_MODE 0	# End run when ...
			# 0 = MAX_UPDATES _OR_ MAX_GENERATIONS is reached
			# 1 = MAX_UPDATES _AND_ MAX_GENERATIONS is reached
WORLD-X 60		# Width of the world in Avida mode.
WORLD-Y 60		# Height of the world in Avida mode.
MAX_CPU_THREADS 1	# Number of Threads CPU's can spawn
RANDOM_SEED 0		# Random number seed. (0 for based on time)

### Configuration Files ###
DEFAULT_DIR ../work/         # Directory in which config files can be found.
INST_SET inst_set.28.base    # File containing instruction set.
TASK_SET task_set            # File containing task set.
RESOURCE_SET resource_set    # File containing resource set.
EVENT_FILE event_list        # File containing list of events during run.
ANALYZE_FILE analyze.cfg     # File used for analysis mode.
START_CREATURE creature.base # Creature to seed the soup.

### Viewer ###
VIEW_MODE 1		# 0=BLANK, 1=MAP, 2=STATS, 3=HIST, 4=OPTIONS, 5=ZOOM

### Reproduction ###
BIRTH_METHOD 4		# 0 = Choose Random Creature (poor for evolution!)
			# 1 = Choose Oldest Creature
			# 2 = Choose largest Age/Merit
			# 3 = Choose only empty cells.
			# 4 = Choose Random from entire soup (Mass Action)
			# 5 = Choose Eldest from entire soup (Tierra)
DEATH_METHOD 0          # 0 = Never kill creatures.
			# 1 = Kill when inst executed = AGE_LIMIT
			# 2 = Kill when inst executed = length * AGE_LIMIT
AGE_LIMIT 5000          # Modifies DEATH_METHOD
ALLOC_METHOD 0          # 0 = Allocated space is set to default instruction.
                        # 1 = Set to section of other creatures (Necrophilia)
                        # 2 = Allocated space is set to random instruction.

DIVIDE_METHOD 1         # 0 = Divide leaves state of mother untouched.
                        # 1 = Divide resets state of mother
                        #     (after the divide, we have 2 children)

GENERATION_COUNT_METHOD 0 # 0 = only the generation of the child is
                          #     increased on divide.
			  # 1 = both the generation of the mother and
			  #     the child are increased on divide
			  #     (makes sense with DIVIDE_METHOD 1).

### Mutation reversions ###
# these slow down avida a lot, and should be set to 0 normally.
REVERT_FATAL       0.0  # Should any mutations be reverted on birth?
REVERT_DETRIMENTAL 0.0  #   0.0 to 1.0; Probability of reversion.
REVERT_NEUTRAL     0.0
REVERT_BENEFICIAL  0.0

RESET_FATAL       0.0  # Should any mutations clear (kill) the organism?
RESET_DETRIMENTAL 0.0  #   0.0 to 1.0; Probability of reset.
RESET_NEUTRAL     0.0
RESET_BENEFICIAL  0.0

FAIL_IMPLICIT     0	# Should copies that failed *not* due to mutations
			# be eliminated?

### Divide Restrictions ####
CHILD_SIZE_RANGE 2.0	# Maximal differential between child and parent sizes.
MIN_COPIED_LINES 0.5    # Code fraction which must be copied before divide.
MIN_EXE_LINES    0.5    # Code fraction which must be executed before divide.
REQUIRE_ALLOCATE 1      # Is a an allocate required before a divide? (0/1)

### Mutations ###
POINT_MUT_PROB  0.0     # Mutation rate (per-location per update) (x10^-6)
COPY_MUT_PROB   0.0075  # Mutation rate (per copy).
INS_MUT_PROB    0.0     # Insertion rate (per site, applied on divide).
DEL_MUT_PROB    0.0     # Deletion rate (per site, applied on divide).
DIVIDE_MUT_PROB 0.0     # Mutation rate (per divide).
DIVIDE_INS_PROB 0.05    # Insertion rate (per divide).
DIVIDE_DEL_PROB 0.05    # Deletion rate (per divide).

### Time Slicing ###
AVE_TIME_SLICE 30
SLICING_METHOD 3	# 0 = CONSTANT: all creatures get default...
			# 1 = BLOCK: Block slice scaled to merit.
			# 2 = PROBABILISTIC: Run _prob_ proportional to merit.
			# 3 = INTEGRATED: Perfectly integrated deterministic.
SIZE_MERIT_METHOD 4	# 0 = off (merit is independent of size)
			# 1 = Merit proportional to copied size
			# 2 = Merit prop. to executed size
			# 3 = Merit prop. to full size
			# 4 = Merit prop. to min of executed or copied size
			# 5 = Merit prop. to sqrt of the minimum size
TASK_MERIT_METHOD 1	# 0 = No task bonuses
			# 1 = Bonus just equals the task bonus

MAX_LABEL_EXE_SIZE 1	# Max nops marked as executed when labels are used

### Task Bonus Modifiers ###
MAX_NUM_TASKS_REWARDED -1     # -1 = Unlimited

### Resources ###
RESOURCES 0       # 0 = No Resources
		  # 1 = Global Resources
MERIT_TIME 1      # 0 = Merit Calculated when task completed
		  # 1 = Merit Calculated on Divide

### Genotype Info ###
THRESHOLD 3		# Number of creatures in a genotype needed for it
			#   to be considered viable.
GENOTYPE_PRINT 0	# 0/1 (off/on) Print out all threshold genotypes?
SPECIES_PRINT 0		# 0/1 (off/on) Print out all species?
GENOTYPE_PRINT_DOM 0	# Print out a genotype if it stays dominant for
                        #   this many updates. (0 = off)
SPECIES_RECORDING 0	# 1 = full, 2 = limited search (parent only)
SPECIES_THRESHOLD 2     # max number of failures creatures to be same species
TEST_CPU_TIME_MOD 20    # Time allocated in test CPUs (multiple of length)
TRACK_MAIN_LINEAGE 0    # Track primary lineage leading to final population?

### Data and Log Files ###
#SAVE_AVERAGE_DATA   10    # Print these files every x updates.  Enter 0 for
#SAVE_DOMINANT_DATA  10    # those which should never be printed
#SAVE_COUNT_DATA     10
#SAVE_TOTALS_DATA    0
#SAVE_TASKS_DATA     10
#SAVE_STATS_DATA     10
#SAVE_TIME_DATA      10

SAVE_GENOTYPE_STATUS  0 # Print these files every x updates.  Enter 0 for
SAVE_DIVERSITY_STATUS 0 # those which should never be printed

LOG_CREATURES 0		# 0/1 (off/on) toggle to print file.
LOG_GENOTYPES 0		# 0 = off, 1 = print ALL, 2 = print threshold ONLY.
LOG_THRESHOLD 0		# 0/1 (off/on) toggle to print file.
LOG_SPECIES 0		# 0/1 (off/on) toggle to print file.
LOG_BREED_COUNT 0	# 0/1 (off/on) toggle to print file.
LOG_PHYLOGENY 0		# 0/1 (off/on) toggle to print file.
LOG_GENEOLOGY 0		# 0 = off, 1 = all, 2 = parents only.
LOG_LANDSCAPE 0		# 0/1 (off/on) toggle to print file.
LOG_MUTATIONS 0         # 0/1 (off/on) toggle to print file.

# This one can slow down avida a lot. It is used to get an idea of how
# often an advantageous mutation arises, and where it goes afterwards.
# See also LINEAGE_CREATION_METHOD.
LOG_LINEAGES 0          # 0/1 (off/on) to log advantageous mutations
# in lineages, and write file 'lineages.log'.
#
# This one is used to specify the conditions under which a new lineage
# is created. Works only when LOG_LINEAGES is set to 1.
# The following options exist:
#   0 = manual creation (on inject, use successive integers
# 			 0, 1, 2, ... as lineage label).
#   1 = whenever a parent gives birth to an offspring with higher
#       (potential) fitness, a new lineage is created.
#   2 = whenever a child's (potential) fitness is higher than the highest
#	(potential) fitness in the population, a new lineage is created.
#   3 = whenever a child's (potential) fitness is higher than the highest
#	(potential) fitness in the dominant lineage *and* the child
#	is in the dominant lineage, or if the child's fitness exceeds
#	the highest fitness in the population, a new lineage is created.
#   4 = whenever a child's (potential) fitness is higher than that of the
#	dominant genotype (and that of its own lineage), a new lineage is
#       created.
#   5 = whenever a child's (potential) fitness is higher than that of the
#	dominant lineage (and that of its own lineage), a new lineage is
#       created.
#   6 = whenever a child's (potential) fitness is higher than that of its
#	own lineage, a new lineage is created.
LINEAGE_CREATION_METHOD 0

### Debug ###
DEBUG_LEVEL 2		# 0 = ERRORS ONLY, 1 = WARNINGS, 2 = COMMENTS

### END ###


