1#############################################################################
2# This file includes all the basic run-time defines for Avida.
3# For more information, see doc/config.html
4#############################################################################
5
6VERSION_ID 2.11.0   # Do not change this value.
7
8### GENERAL_GROUP ###
9# General Settings
10VERBOSITY 1       # 0 = No output at all
11                  # 1 = Normal output
12                  # 2 = Verbose output, detailing progress
13                  # 3 = High level of details, as available
14                  # 4 = Print Debug Information, as applicable
15RANDOM_SEED 9     # Random number seed (0 for based on time)
16SPECULATIVE 1     # Enable speculative execution
17                  # (pre-execute instructions that don't affect other organisms)
18POPULATION_CAP 0  # Carrying capacity in number of organisms (use 0 for no cap)
19POP_CAP_ELDEST 100  ##### Carrying capacity in number of organisms (use 0 for no cap).
20                  # Will kill oldest organism in population, but still use birth method to place new offspring.
21
22### TOPOLOGY_GROUP ###
23# World topology
24WORLD_X 120                  # Width of the Avida world
25WORLD_Y 120                  # Height of the Avida world
26WORLD_GEOMETRY 1            # 1 = Bounded Grid (WOLRD_X x WORLD_Y)
27                            # 2 = Toroidal Grid (WOLRD_X x WORLD_Y; wraps at edges
28                            # 3 = Clique (all population cells are connected)
29                            # 4 = Hexagonal grid
30                            # 5 = Partial
31                            # 6 = 3D Lattice (under development)
32                            # 7 = Random connected
33                            # 8 = Scale-free (detailed below)
34SCALE_FREE_M 3              # Number of connections per cell in a scale-free geometry
35SCALE_FREE_ALPHA 1.0        # Attachment power (1=linear)
36SCALE_FREE_ZERO_APPEAL 0.0  # Appeal of cells with zero connections
37
38### CONFIG_FILE_GROUP ###
39# Other configuration Files
40DATA_DIR data                     # Directory in which config files are found
41EVENT_FILE events.cfg             # File containing list of events during run
42ANALYZE_FILE analyze.cfg          # File used for analysis mode
43ENVIRONMENT_FILE environment.cfg  # File that describes the environment
44
45#include INST_SET=instset.cfg
46
47### MUTATION_GROUP ###
48# Mutation rates
49COPY_MUT_PROB 0.0          # Mutation rate (per copy)
50COPY_INS_PROB 0.0             # Insertion rate (per copy)
51COPY_DEL_PROB 0.0             # Deletion rate (per copy)
52COPY_UNIFORM_PROB 0.0         # Uniform mutation probability (per copy)
53                              # - Randomly apply insertion, deletion or point mutation
54COPY_SLIP_PROB 0.0            # Slip rate (per copy)
55POINT_MUT_PROB 0.0            # Mutation rate (per-location per update)
56DIV_MUT_PROB 0.0              # Mutation rate (per site, applied on divide)
57DIV_INS_PROB 0.0              # Insertion rate (per site, applied on divide)
58DIV_DEL_PROB 0.0              # Deletion rate (per site, applied on divide)
59DIV_UNIFORM_PROB 0.0          # Uniform mutation probability (per site, applied on divide)
60                              # - Randomly apply insertion, deletion or point mutation
61DIV_SLIP_PROB 0.0             # Slip rate (per site, applied on divide)
62DIVIDE_MUT_PROB 0.25          ############# Mutation rate (max one, per divide)
63DIVIDE_INS_PROB 0.05          # Insertion rate (max one, per divide)
64DIVIDE_DEL_PROB 0.05          # Deletion rate (max one, per divide)
65DIVIDE_UNIFORM_PROB 0.0       # Uniform mutation probability (per divide)
66                              # - Randomly apply insertion, deletion or point mutation
67DIVIDE_SLIP_PROB 0.0          # Slip rate (per divide) - creates large deletions/duplications
68DIVIDE_POISSON_MUT_MEAN 0.0   # Mutation rate (Poisson distributed, per divide)
69DIVIDE_POISSON_INS_MEAN 0.0   # Insertion rate (Poisson distributed, per divide)
70DIVIDE_POISSON_DEL_MEAN 0.0   # Deletion rate (Poisson distributed, per divide)
71DIVIDE_POISSON_SLIP_MEAN 0.0  # Slip rate (Poisson distributed, per divide)
72INJECT_INS_PROB 0.0           # Insertion rate (per site, applied on inject)
73INJECT_DEL_PROB 0.0           # Deletion rate (per site, applied on inject)
74INJECT_MUT_PROB 0.0           # Mutation rate (per site, applied on inject)
75SLIP_FILL_MODE 0              # Fill insertions from slip mutations with:
76                              # 0 = Duplication
77                              # 1 = nop-X
78                              # 2 = Random
79                              # 3 = scrambled
80                              # 4 = nop-C
81SLIP_COPY_MODE 0              # How to handle 'on-copy' slip mutations:
82                              # 0 = actual read head slip
83                              # 1 = instant large mutation (obeys slip mode)
84PARENT_MUT_PROB 0.0           # Per-site, in parent, on divide
85SPECIAL_MUT_LINE -1           # If this is >= 0, ONLY this line is mutated
86META_COPY_MUT 0.0             # Prob. of copy mutation rate changing (per gen)
87META_STD_DEV 0.0              # Standard deviation of meta mutation size.
88MUT_RATE_SOURCE 1             # 1 = Mutation rates determined by environment.
89                              # 2 = Mutation rates inherited from parent.
90
91### REPRODUCTION_GROUP ###
92# Birth and Death config options
93DIVIDE_FAILURE_RESETS 0   # When Divide fails, organisms are interally reset
94BIRTH_METHOD 7            ######## Which organism should be replaced when a birth occurs?
95                          # 0 = Random organism in neighborhood
96                          # 1 = Oldest in neighborhood
97                          # 2 = Largest Age/Merit in neighborhood
98                          # 3 = None (use only empty cells in neighborhood)
99                          # 4 = Random from population (Mass Action)
100                          # 5 = Oldest in entire population
101                          # 6 = Random within deme
102                          # 7 = Organism faced by parent
103                          # 8 = Next grid cell (id+1)
104                          # 9 = Largest energy used in entire population
105                          # 10 = Largest energy used in neighborhood
106                          # 11 = Local neighborhood dispersal
107PREFER_EMPTY 1            # Overide BIRTH_METHOD to preferentially choose empty cells for offsping?
108ALLOW_PARENT 0            ######### Should parents be considered when deciding where to place offspring?
109DISPERSAL_RATE 0.0        # Rate of dispersal under birth method 11
110                          # (poisson distributed random connection list hops)
111DEATH_PROB 0.0            # Probability of death when dividing.
112DEATH_METHOD 1            ######## When should death by old age occur?
113                          # 0 = Never
114                          # 1 = When executed AGE_LIMIT (+deviation) total instructions
115                          # 2 = When executed genome_length * AGE_LIMIT (+dev) instructions
116AGE_LIMIT 20000           ######## See DEATH_METHOD
117AGE_DEVIATION 0           # Creates a normal distribution around AGE_LIMIT for time of death
118ALLOC_METHOD 0            # When allocating blank tape, how should it be initialized?
119                          # 0 = Allocated space is set to default instruction.
120                          # 1 = Set to section of dead genome (creates potential for recombination)
121                          # 2 = Allocated space is set to random instruction.
122DIVIDE_METHOD 0           ######## 0 = Divide leaves state of mother untouched.
123                          # 1 = Divide resets state of mother(effectively creating 2 offspring)
124                          # 2 = Divide resets state of current thread only (use with parasites)
125EPIGENETIC_METHOD 0       # Inheritance of state information other than genome
126                          # 0 = none
127                          # 1 = offspring inherits registers and stacks of first thread
128                          # 1 = parent maintains registers and stacks of first thread
129                          #
130                          # 1 = offspring and parent keep state information
131GENERATION_INC_METHOD 0   ######### 0 = Only increase generation of offspring on divide.
132                          # 1 = Increase generation of both parent and offspring
133                          #    (suggested with DIVIDE_METHOD 1).
134RESET_INPUTS_ON_DIVIDE 0  ####### Reset environment inputs of parent upon successful divide.
135INHERIT_MERIT 1           ######## Should merit be inhereted from mother parent? (in asexual)
136INHERIT_MULTITHREAD 0     # Should offspring of parents with multiple threads be marked multithreaded?
137
138### DIVIDE_GROUP ###
139# Divide restrictions and triggers - settings describe conditions for a successful divide
140OFFSPRING_SIZE_RANGE 2.0     # Maximal differential between offspring and parent length.
141                             # (Checked BEFORE mutations applied on divide.)
142MIN_COPIED_LINES 0.5         # Code fraction that must be copied before divide
143MIN_EXE_LINES 0.5            # Code fraction that must be executed before divide
144MIN_GENOME_SIZE 0            # Minimum number of instructions allowed in a genome. 0 = OFF
145MAX_GENOME_SIZE 0            # Maximum number of instructions allowed in a genome. 0 = OFF
146REQUIRE_ALLOCATE 1           # (Original CPU Only) Require allocate before divide?
147REQUIRED_TASK -1             ###### Task ID required for successful divide
148IMMUNITY_TASK -1             # Task providing immunity from the required task
149REQUIRED_REACTION 0          ####### Reaction ID required for successful divide
150IMMUNITY_REACTION -1         # Reaction ID that provides immunity for successful divide
151REQUIRE_SINGLE_REACTION 0    ####### If set to 1, at least one reaction is required for a successful divide
152REQUIRED_BONUS 0.0           # Required bonus to divide
153REQUIRE_EXACT_COPY 0         # Require offspring to be an exact copy (checked before divide mutations)
154REQUIRED_RESOURCE -1         ####### ID of resource required in organism's internal bins for successful
155                             #   divide (resource not consumed)
156REQUIRED_RESOURCE_LEVEL 0.0  ######## Level of resource needed for REQUIRED_RESOURCE
157IMPLICIT_REPRO_BONUS 0       # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF
158IMPLICIT_REPRO_CPU_CYCLES 0  # Call Inst_Repro after this many cpu cycles. 0 = OFF
159IMPLICIT_REPRO_TIME 0        # Call Inst_Repro after this time used. 0 = OFF
160IMPLICIT_REPRO_END 0         # Call Inst_Repro after executing the last instruction in the genome.
161IMPLICIT_REPRO_ENERGY 0.0    # Call Inst_Repro if organism accumulates this amount of energy.
162
163### RECOMBINATION_GROUP ###
164# Sexual Recombination and Modularity
165RECOMBINATION_PROB 1.0  # Probability of recombination in div-sex
166MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover (-1 = unlimited)
167MODULE_NUM 0            # Number of modules in the genome
168CONT_REC_REGS 1         # Are (modular) recombination regions continuous?
169CORESPOND_REC_REGS 1    # Are (modular) recombination regions swapped randomly
170                        #  or with corresponding positions?
171TWO_FOLD_COST_SEX 0     # 0 = Both offspring are born (no two-fold cost)
172                        # 1 = only one recombined offspring is born.
173SAME_LENGTH_SEX 0       # 0 = Recombine with any genome
174                        # 1 = Recombine only w/ same length
175ALLOW_MATE_SELECTION 0  # Allow organisms to select mates (requires instruction set support)
176
177### PARASITE_GROUP ###
178# Parasite config options
179INJECT_METHOD 0             # What should happen to a parasite when it gives birth?
180                            # 0 = Leave the parasite thread state untouched.
181                            # 1 = Resets the state of the calling thread (for SMT parasites, this must be 1)
182INJECT_PROB_FROM_TASKS 1    # Inject occurs based on probability from performing tasks - 11*numTasks
183INJECT_STERILIZES_HOST 0    # Infection causes host steralization
184INJECT_IS_VIRULENT 0        # Infection causes host steralization and takes all cpu cycles (setting this to 1 will override inject_virulence)
185PARASITE_SKIP_REACTIONS 1   # Parasite tasks do not get processed in the environment (1) or they do trigger reactions (0)
186INJECT_IS_TASK_SPECIFIC 0   # Parasites must match a task done by the host they are trying to infect
187INJECT_SKIP_FIRST_TASK 0    # They cannot match the first task the host is doing to infect
188INJECT_DEFAULT_SUCCESS 0.0  # If injection is task specific, with what probability should non-matching parasites infect the host
189PARASITE_VIRULENCE -1       # The probabalistic percentage of cpu cycles allocated to the parasite instead of the host. Ensure INJECT_IS_VIRULENT is set to 0. This only works for single infection at the moment
190PARASITE_MEM_SPACES 1       # Parasites get their own memory spaces
191PARASITE_NO_COPY_MUT 0      # Parasites do not get copy mutation rates
192
193### ARCHETECTURE_GROUP ###
194# Details on how CPU should work
195IO_EXPIRE 1  # Is the expiration functionality of '-expire' I/O instructions enabled?
196
197### MP_GROUP ###
198# Config options for multiple, distributed populations
199ENABLE_MP 0            # Enable multi-process Avida; 0=disabled (default),
200                       # 1=enabled.
201MP_SCHEDULING_STYLE 0  # Style of scheduling:
202                       # 0=non-MP aware (default)
203                       # 1=MP aware, integrated across worlds.
204
205### DEME_GROUP ###
206# Demes and Germlines
207NUM_DEMES 1                             # Number of independent groups in the population
208DEMES_COMPETITION_STYLE 0               # How should demes compete?
209                                        # 0=Fitness proportional selection
210                                        # 1=Tournament selection
211DEMES_TOURNAMENT_SIZE 0                 # Number of demes that participate in a tournament
212DEMES_OVERRIDE_FITNESS 0                # Should the calculated fitness is used?
213                                        # 0=yes (default)
214                                        # 1=no (all fitnesses=1)
215DEMES_USE_GERMLINE 0                    # Should demes use a distinct germline?
216DEMES_PREVENT_STERILE 0                 # Prevent sterile demes from replicating?
217DEMES_RESET_RESOURCES 0                 # Reset resources in demes on replication?
218                                        # 0 = reset both demes
219                                        # 1 = reset target deme
220                                        # 2 = deme resources remain unchanged
221DEMES_REPLICATE_SIZE 1                  # Number of identical organisms to create or copy from the
222                                        # source deme to the target deme
223LOG_DEMES_REPLICATE 0                   # Log deme replications?
224DEMES_REPLICATE_LOG_START 0             # Update at which to start logging deme replications
225DEMES_PROB_ORG_TRANSFER 0.0             # Probablity of an organism being transferred from the
226                                        # source deme to the target deme
227DEMES_ORGANISM_SELECTION 0              # How should organisms be selected for transfer from
228                                        # source to target during deme replication?
229                                        # 0 = random with replacement
230                                        # 1 = sequential
231DEMES_ORGANISM_PLACEMENT 0              # How should organisms be placed during deme replication.
232                                        # 0 = cell-array middle
233                                        # 1 = deme center
234                                        # 2 = random placement
235                                        # 3 = sequential
236DEMES_ORGANISM_FACING 0                 # Which direction should organisms face after deme replication.
237                                        # 0 = unchanged
238                                        # 1 = northwest.
239                                        # 2 = random.
240DEMES_MAX_AGE 500                       # The maximum age of a deme (in updates) to be
241                                        # used for age-based replication
242DEMES_MAX_BIRTHS 100                    # Max number of births that can occur within a deme;
243                                        # used with birth-count replication
244DEMES_MIM_EVENTS_KILLED_RATIO 0.7       # Minimum ratio of events killed required for event period to be a success.
245DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1    # Minimum number of consecutive event periods that must be a success.
246GERMLINE_COPY_MUT 0.0075                # Prob. of copy mutations during germline replication
247GERMLINE_INS_MUT 0.05                   # Prob. of insertion mutations during germline replication
248GERMLINE_DEL_MUT 0.05                   # Prob. of deletion mutations during germline replication
249DEMES_REPLICATE_CPU_CYCLES 0.0          # Replicate a deme immediately after it has used this many
250                                        # cpu cycles per org in deme (0 = OFF).
251DEMES_REPLICATE_TIME 0.0                # Number of CPU cycles used by a deme to trigger its replication
252                                        # (normalized by number of orgs in deme and organism merit; 0 = OFF).
253DEMES_REPLICATE_BIRTHS 0                # Number of offspring produced by a deme to trigger its replication (0 = OFF).
254DEMES_REPLICATE_ORGS 0                  # Number of organisms in a deme to trigger its replication (0 = OFF).
255DEMES_REPLICATION_ONLY_RESETS 0         # Kin selection mode.  On replication:
256                                        # 0 = Nothing extra
257                                        # 1 = reset deme resources
258                                        # 2 = reset resources and re-inject organisms
259DEMES_MIGRATION_RATE 0.0                # Probability of an offspring being born in a different deme.
260DEMES_MIGRATION_METHOD 0                # Which demes can an org land in when it migrates?
261                                        # 0 = Any other deme
262                                        # 1 = Eight neighboring demes
263                                        # 2 = Two adjacent demes in list
264                                        # 3 = Proportional based on the number of points
265DEMES_NUM_X 0                           # Simulated number of demes in X dimension. Used only for migration.
266DEMES_SEED_METHOD 0                     # Deme seeding method.
267                                        # 0 = Maintain old consistency
268                                        # 1 = New method using genotypes
269DEMES_DIVIDE_METHOD 0                   # Deme divide method. Only works with DEMES_SEED_METHOD 1
270                                        # 0 = Replace and target demes
271                                        # 1 = Replace target deme, reset source deme to founders
272                                        # 2 = Replace target deme, leave source deme unchanged
273DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0   # Default germline propensity of organisms in deme.
274                                        # For use with DEMES_DIVIDE_METHOD 2.
275DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0  # Default germline propensity of founder organisms in deme.
276                                        # For use with DEMES_DIVIDE_METHOD 2.
277                                        #  <0 = OFF
278DEMES_PREFER_EMPTY 0                    # Give empty demes preference as targets of deme replication?
279DEMES_PROTECTION_POINTS 0               # The number of points a deme receives for each suicide.
280MIGRATION_RATE 0.0                      # Uniform probability of offspring migrating to a new deme.
281DEMES_TRACK_SHANNON_INFO 0              # Enable shannon mutual information tracking for demes.
282
283### REVERSION_GROUP ###
284# Mutation Reversion
285# Most of these slow down avida a lot, and should be set to 0.0 normally.
286REVERT_FATAL 0.0           # Prob of lethal mutations being reverted on birth
287REVERT_DETRIMENTAL 0.0     # Prob of harmful (but non-lethal) mutations reverting on birth
288REVERT_NEUTRAL 0.0         # Prob of neutral mutations being reverted on birth
289REVERT_BENEFICIAL 0.0      # Prob of beneficial mutations being reverted on birth
290REVERT_TASKLOSS 0.0        # Prob of mutations that cause task loss (without any gains) being reverted
291STERILIZE_FATAL 0.0        # Prob of lethal mutations steralizing an offspring (typically no effect!)
292STERILIZE_DETRIMENTAL 0.0  # Prob of harmful (but non-lethal) mutations steralizing an offspring
293STERILIZE_NEUTRAL 0.0      # Prob of neutral mutations steralizing an offspring
294STERILIZE_BENEFICIAL 0.0   # Prob of beneficial mutations steralizing an offspring
295STERILIZE_TASKLOSS 0.0     # Prob of mutations causing task loss steralizing an offspring
296STERILIZE_UNSTABLE 0       # Should genotypes that cannot replicate perfectly not be allowed to replicate?
297NEUTRAL_MAX 0.0            # Percent benifical change from parent fitness to be considered neutral.
298NEUTRAL_MIN 0.0            # Percent deleterious change from parent fitness to be considered neutral.
299
300### TIME_GROUP ###
301# Time Slicing
302AVE_TIME_SLICE 30            # Average number of CPU-cycles per org per update
303SLICING_METHOD 1             # 0 = CONSTANT: all organisms receive equal number of CPU cycles
304                             # 1 = PROBABILISTIC: CPU cycles distributed randomly, proportional to merit.
305                             # 2 = INTEGRATED: CPU cycles given out deterministicly, proportional to merit
306                             # 3 = DEME_PROBABALISTIC: Demes receive fixed number of CPU cycles, awarded probabalistically to members
307                             # 4 = CROSS_DEME_PROBABALISTIC: Demes receive CPU cycles proportional to living population size, awarded probabalistically to members
308                             # 5 = CONSTANT BURST: all organisms receive equal number of CPU cycles, in SLICING_BURST_SIZE chunks
309SLICING_BURST_SIZE 1         # Sets the scheduler burst size for SLICING_METHOD 5.
310BASE_MERIT_METHOD 0          ######## How should merit be initialized?
311                             # 0 = Constant (merit independent of size)
312                             # 1 = Merit proportional to copied size
313                             # 2 = Merit prop. to executed size
314                             # 3 = Merit prop. to full size
315                             # 4 = Merit prop. to min of executed or copied size
316                             # 5 = Merit prop. to sqrt of the minimum size
317                             # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
318BASE_CONST_MERIT 100         # Base merit valse for BASE_MERIT_METHOD 0
319MERIT_BONUS_INST 0           # Instruction ID to count for BASE_MERIT_METHOD 6
320MERIT_BONUS_EFFECT 0         # Amount of merit earn per instruction for BASE_MERIT_METHOD 6 (-1 = penalty, 0 = no effect)
321FITNESS_VALLEY 0             # in BASE_MERIT_METHOD 6, this creates valleys from
322                             # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
323                             # (0 = off, 1 = on)
324FITNESS_VALLEY_START 0       # if FITNESS_VALLEY = 1, orgs with num_key_instructions
325                             # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
326                             # get fitness 1 (lowest)
327FITNESS_VALLEY_STOP 0        # if FITNESS_VALLEY = 1, orgs with num_key_instructions
328                             # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
329                             # get fitness 1 (lowest)
330DEFAULT_BONUS 1.0            # Initial bonus before any tasks
331MERIT_DEFAULT_BONUS 0        ########## Instead of inheriting bonus from parent, use this value instead (0 = off)
332MERIT_INC_APPLY_IMMEDIATE 0  ########## Should merit increases (above current) be applied immediately, or delayed until divide?
333TASK_REFRACTORY_PERIOD 0.0   # Number of updates after taske until regain full value
334FITNESS_METHOD 0             # 0 = default, 1 = sigmoidal,
335FITNESS_COEFF_1 1.0          # 1st FITNESS_METHOD parameter
336FITNESS_COEFF_2 1.0          # 2nd FITNESS_METHOD parameter
337MAX_CPU_THREADS 1            # Maximum number of Threads a CPU can spawn
338THREAD_SLICING_METHOD 0      # Formula for allocating CPU cycles across threads in an organism
339                             #   (num_threads-1) * THREAD_SLICING_METHOD + 1
340                             # 0 = One thread executed per time slice.
341                             # 1 = All threads executed each time slice.
342NO_CPU_CYCLE_TIME 0          # Don't count each CPU cycle as part of gestation time
343MAX_LABEL_EXE_SIZE 1         # Max nops marked as executed when labels are used
344PRECALC_PHENOTYPE 0          # 0 = Disabled
345                             #  1 = Assign precalculated merit at birth (unlimited resources only)
346                             #  2 = Assign precalculated gestation time
347                             #  3 = Assign precalculated merit AND gestation time.
348                             #  4 = Assign last instruction counts
349                             #  5 = Assign last instruction counts and merit
350                             #  6 = Assign last instruction counts and gestation time
351                             #  7 = Assign everything currently supported
352                             # Fitness will be evaluated for organism based on these settings.
353FASTFORWARD_UPDATES 0        # Fast-forward if the average generation has not changed in this many updates. (0 = off)
354FASTFORWARD_NUM_ORGS 0       # Fast-forward if population is equal to this
355GENOTYPE_PHENPLAST_CALC 100  # Number of times to test a genotype's
356                             # plasticity during runtime.
357
358### ALTRUISM_GROUP ###
359# Altrusim
360MERIT_GIVEN 0.0             # Fraction of merit donated with 'donate' command
361MERIT_RECEIVED 0.0          # Multiplier of merit given with 'donate' command
362MAX_DONATE_KIN_DIST -1      # Limit on distance of relation for donate; -1=no max
363MAX_DONATE_EDIT_DIST -1     # Limit on genetic (edit) distance for donate; -1=no max
364MIN_GB_DONATE_THRESHOLD -1  # threshold green beard donates only to orgs above this
365                            # donation attempt threshold; -1=no thresh
366DONATE_THRESH_QUANTA 10     # The size of steps between quanta donate thresholds
367MAX_DONATES 1000000         # Limit on number of donates organisms are allowed.
368
369### GENEOLOGY_GROUP ###
370# Geneology
371THRESHOLD 3           # Number of organisms in a genotype needed for it
372                      #   to be considered viable.
373TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
374
375### LOG_GROUP ###
376# Log Files
377LOG_GENOTYPES 0            # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
378LOG_THRESHOLD 0            # 0/1 (off/on) toggle to print file.
379LOG_LINEAGES 0             # Track lineages over time?
380                           # WARNING: Can slow Avida a lot!
381LINEAGE_CREATION_METHOD 0  # Requires LOG_LINEAGES = 1
382                           # 0 = Manual creation (on inject)
383                           # 1 = when a child's (potential) fitness is higher than that of its parent.
384                           # 2 = when a child's (potential) fitness is higher than max in population.
385                           # 3 = when a child's (potential) fitness is higher than max in dom. lineage
386                           #   *and* the child is in the dominant lineage, or (2)
387                           # 4 = when a child's (potential) fitness is higher than max in dom. lineage
388                           #   (and that of its own lineage)
389                           # 5 = same as child's (potential) fitness is higher than that of the
390                           #   currently dominant organism, and also than that of any organism
391                           #       currently in the same lineage.
392                           # 6 = when a child's (potential) fitness is higher than any organism
393                           #   currently in the same lineage.
394                           # 7 = when a child's (potential) fitness is higher than that of any
395                           #   organism in its line of descent
396TRACE_EXECUTION 0          # Trace the execution of all organisms in the population (WARNING: SLOW!)
397
398### ORGANISM_NETWORK_GROUP ###
399# Organism Network Communication
400NET_ENABLED 0       # Enable Network Communication Support
401NET_DROP_PROB 0.0   # Message drop rate
402NET_MUT_PROB 0.0    # Message corruption probability
403NET_MUT_TYPE 0      # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
404NET_STYLE 0         # Communication Style.  0 = Random Next, 1 = Receiver Facing
405NET_LOG_MESSAGES 0  # Whether all messages are logged; 0=false (default), 1=true.
406
407### ORGANISM_MESSAGING_GROUP ###
408# Organism Message-Based Communication
409MESSAGE_SEND_BUFFER_SIZE 1      # Size of message send buffer (stores messages that were sent)
410                                # TASKS NOT CHECKED ON 0!
411                                # -1=inf, default=1.
412MESSAGE_RECV_BUFFER_SIZE 8      # Size of message receive buffer (stores messages that are received); -1=inf, default=8.
413MESSAGE_RECV_BUFFER_BEHAVIOR 0  # Behavior of message receive buffer; 0=drop oldest (default), 1=drop incoming
414ACTIVE_MESSAGES_ENABLED 0       # Enable active messages.
415                                # 0 = off
416                                # 2 = message creates parallel thread
417
418### BUY_SELL_GROUP ###
419# Buying and Selling Parameters
420SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
421BUY_PRICE 0      # price offered by organisms attempting to buy
422SELL_PRICE 0     # price offered by organisms attempting to sell
423
424### HOARD_RESOURCE_GROUP ###
425# Resource Hoarding Parameters
426USE_RESOURCE_BINS 0             ###### Enable resource bin use.  This serves as a guard on most resource hoarding code.
427ABSORB_RESOURCE_FRACTION 1  	###### Fraction of available environmental resource an organism absorbs.
428MULTI_ABSORB_TYPE 1             ###### What to do if a collect instruction is called on a range of resources.
429                                #  0 = absorb a random resource in the range
430                                #  1 = absorb the first resource in the range
431                                #  2 = absorb the last resource in the range
432                                #  3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range
433MAX_TOTAL_STORED -1             ####### Maximum total amount of all resources an organism can store.
434                                #  <0 = no maximum
435USE_STORED_FRACTION 1.0         # The fraction of stored resource to use.
436ENV_FRACTION_THRESHOLD 1.0      # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource.
437RETURN_STORED_ON_DEATH 0        ####### Return an organism's stored resources to the world when it dies?
438SPLIT_ON_DIVIDE 0               ######### Split mother cell's resources between two daughter cells on division?
439COLLECT_SPECIFIC_RESOURCE -1     ##### Resource to be collected by the "collect-specific" instruction
440RESOURCE_GIVEN_ON_INJECT 0      ##### Units of collect-specific resources given to organism upon injection.
441RESOURCE_GIVEN_AT_BIRTH 0       ##### Units of collect-specific resources given to offspring upon birth.
442
443### ANALYZE_GROUP ###
444# Analysis Settings
445MAX_CONCURRENCY -1  # Maximum number of analyze threads, -1 == use all available.
446ANALYZE_OPTION_1    # String variable accessible from analysis scripts
447ANALYZE_OPTION_2    # String variable accessible from analysis scripts
448
449### ENERGY_GROUP ###
450# Energy Settings
451ENERGY_ENABLED 0                               # Enable Energy Model. 0/1 (off/on)
452ENERGY_GIVEN_ON_INJECT 0.0                     # Energy given to organism upon injection.
453ENERGY_GIVEN_AT_BIRTH 0.0                      # Energy given to offspring upon birth.
454FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5   # Fraction of parent's energy given to offspring organism.
455FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5  # Fraction of parent's energy given to offspring deme.
456FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0             # Fraction of energy lost due to decay during organism reproduction.
457FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0            # Fraction of energy lost due to decay during deme reproduction.
458NUM_CYCLES_EXC_BEFORE_0_ENERGY 0               # Number of virtual CPU cycles executed before energy is exhausted.
459ENERGY_CAP -1.0                                # Maximum amount of energy that can be stored in an organism.  -1 = no max
460APPLY_ENERGY_METHOD 0                          # When should rewarded energy be applied to current energy?
461                                               # 0 = on divide
462                                               # 1 = on completion of task
463                                               # 2 = on sleep
464FIX_METABOLIC_RATE -1.0                        # Fix organism metobolic rate to value.  This value is static.  Feature disabled by default (value == -1)
465FRAC_ENERGY_TRANSFER 0.0                       # Fraction of replaced organism's energy take by new resident
466LOG_SLEEP_TIMES 0                              # Log sleep start and end times. 0/1 (off/on)
467                                               # WARNING: may use lots of memory.
468FRAC_ENERGY_RELINQUISH 1.0                     # Fraction of organisms energy to relinquish
469ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0     # Who get energy passed from a parent deme
470                                               # 0 = Energy divided among organisms injected to offspring deme
471                                               # 1 = Energy divided among cells in offspring deme
472INHERIT_EXE_RATE 0                             # Inherit energy rate from parent? 0=no  1=yes
473ATTACK_DECAY_RATE 0.0                          # Percent of cell's energy decayed by attack
474ENERGY_THRESH_LOW .33                          # Threshold percent below which energy level is considered low.  Requires ENERGY_CAP.
475ENERGY_THRESH_HIGH .75                         # Threshold percent above which energy level is considered high.  Requires ENERGY_CAP.
476ENERGY_COMPARISON_EPSILON 0.0                  # Percent difference (relative to executing organism) required in energy level comparisons
477ENERGY_REQUEST_RADIUS 1                        # Radius of broadcast energy request messages.
478
479### ENERGY_SHARING_GROUP ###
480# Energy Sharing Settings
481ENERGY_SHARING_METHOD 0            # Method for sharing energy.  0=receiver must actively receive/request, 1=energy pushed on receiver
482ENERGY_SHARING_PCT 0.0             # Percent of energy to share
483ENERGY_SHARING_INCREMENT 0.01      # Amount to change percent energy shared
484RESOURCE_SHARING_LOSS 0.0          # Fraction of shared resource lost in transfer
485ENERGY_SHARING_UPDATE_METABOLIC 0  # 0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy
486LOG_ENERGY_SHARING 0               # Whether or not to log energy shares.  0/1 (off/on)
487
488### SECOND_PASS_GROUP ###
489# Tracking metrics known after the running experiment previously
490TRACK_CCLADES 0                    # Enable tracking of coalescence clades
491TRACK_CCLADES_IDS coalescence.ids  # File storing coalescence IDs
492
493### GX_GROUP ###
494# Gene Expression CPU Settings
495MAX_PROGRAMIDS 16                # Maximum number of programids an organism can create.
496MAX_PROGRAMID_AGE 2000           # Max number of CPU cycles a programid executes before it is removed.
497IMPLICIT_GENE_EXPRESSION 0       # Create executable programids from the genome without explicit allocation and copying?
498IMPLICIT_BG_PROMOTER_RATE 0.0    # Relative rate of non-promoter sites creating programids.
499IMPLICIT_TURNOVER_RATE 0.0       # Number of programids recycled per CPU cycle. 0 = OFF
500IMPLICIT_MAX_PROGRAMID_LENGTH 0  # Creation of an executable programid terminates after this many instructions. 0 = disabled
501
502### PROMOTER_GROUP ###
503# Promoters
504PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
505                                # Certain instructions must also be included.
506PROMOTER_INST_MAX 0             # Maximum number of instructions to execute before terminating. 0 = off
507PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
508PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
509PROMOTER_TO_REGISTER 0          # Place a promoter's base bit code in register BX when starting execution from it?
510TERMINATION_RESETS 0            # Does termination reset the thread's state?
511NO_ACTIVE_PROMOTER_EFFECT 0     # What happens when there are no active promoters?
512                                # 0 = Start execution at the beginning of the genome.
513                                # 1 = Kill the organism.
514                                # 2 = Stop the organism from executing any further instructions.
515PROMOTER_CODE_SIZE 24           # Size of a promoter code in bits. (Maximum value is 32)
516PROMOTER_EXE_LENGTH 3           # Length of promoter windows used to determine execution.
517PROMOTER_EXE_THRESHOLD 2        # Minimum number of bits that must be set in a promoter window to allow execution.
518INST_CODE_LENGTH 3              # Instruction binary code length (number of bits)
519INST_CODE_DEFAULT_TYPE 0        # Default value of instruction binary code value.
520                                # 0 = All zeros
521                                # 1 = Based off the instruction number
522CONSTITUTIVE_REGULATION 0       # Sense a new regulation value before each CPU cycle?
523
524### COLORS_GROUP ###
525# Output colors for when data files are printed in HTML mode.
526# There are two sets of these; the first are for lineages,
527# and the second are for mutation tests.
528COLOR_DIFF CCCCFF        # Color to flag stat that has changed since parent.
529COLOR_SAME FFFFFF        # Color to flag stat that has NOT changed since parent.
530COLOR_NEG2 FF0000        # Color to flag stat that is significantly worse than parent.
531COLOR_NEG1 FFCCCC        # Color to flag stat that is minorly worse than parent.
532COLOR_POS1 CCFFCC        # Color to flag stat that is minorly better than parent.
533COLOR_POS2 00FF00        # Color to flag stat that is significantly better than parent.
534COLOR_MUT_POS 00FF00     # Color to flag stat that has changed since parent.
535COLOR_MUT_NEUT FFFFFF    # Color to flag stat that has changed since parent.
536COLOR_MUT_NEG FFFF00     # Color to flag stat that has changed since parent.
537COLOR_MUT_LETHAL FF0000  # Color to flag stat that has changed since parent.
538
539### MOVEMENT_GROUP ###
540# Movement Features Settings
541MOVEMENT_COLLISIONS_LETHAL 2          ###### Are collisions during movement lethal?
542                                      # (0=no, use swap; 1=yes, use collision selection type; 2=no, but movement fails)
543MOVEMENT_COLLISIONS_SELECTION_TYPE 0  ####### 0 = 50% chance
544                                      # 1 = binned vitality based
545VITALITY_BIN_EXTREMES 1.0             # vitality multiplier for extremes (> 1 stddev from the mean population age)
546VITALITY_BIN_CENTER 10.0              # vitality multiplier for center bin (with 1 stddev of the mean population age)
547DEADLY_BOUNDARIES 1                   ##### Are bounded grid border cell deadly?
548                                      # If == 1, orgs stepping onto boundary cells will disappear into oblivion (aka die)
549
550### PHEROMONE_GROUP ###
551# Pheromone Settings
552PHEROMONE_ENABLED 0        # Enable pheromone usage. 0/1 (off/on)
553PHEROMONE_AMOUNT 1.0       # Amount of pheromone to add per drop
554PHEROMONE_DROP_MODE 0      # Where to drop pheromone
555                           # 0 = Half amount at src, half at dest
556                           # 1 = All at source
557                           # 2 = All at dest
558EXPLOIT_EXPLORE_PROB 0.00  # Probability of random exploration
559                           # instead of pheromone trail following
560LOG_PHEROMONE 0            # Log pheromone drops.  0/1 (off/on)
561PHEROMONE_LOG_START 0      # Update at which to start logging pheromone drops
562EXPLOIT_LOG_START 0        # Update at which to start logging exploit moves
563EXPLORE_LOG_START 0        # Update at which to start logging explore moves
564MOVETARGET_LOG_START 0     # Update at which to start logging movetarget moves
565LOG_INJECT 0               # Log injection of organisms.  0/1 (off/on)
566INJECT_LOG_START 0         # Update at which to start logging injection of
567                           # organisms
568
569### SYNCHRONIZATION_GROUP ###
570# Synchronization settings
571SYNC_FITNESS_WINDOW 100     # Number of updates over which to calculate fitness (default=100).
572SYNC_FLASH_LOSSRATE 0.0     # P() to lose a flash send (0.0==off).
573SYNC_TEST_FLASH_ARRIVAL -1  # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.)
574
575### CONSENSUS_GROUP ###
576# Consensus settings
577CONSENSUS_HOLD_TIME 1  # Number of updates that consensus must be held for.
578
579### REPUTATION_GROUP ###
580# Reputation Settings
581RAW_MATERIAL_AMOUNT 100          # Number of raw materials an organism starts with
582AUTO_REPUTATION 0                # Is an organism's reputation automatically computed based on its donations
583                                 # 0=no
584                                 # 1=increment for each donation + standing
585                                 # 2=+1 for donations given -1 for donations received
586                                 # 3=1 for donors -1 for recivers who have not donated
587                                 # 4=+1 for donors
588                                 # 5=+1 for donors during task check
589ALT_BENEFIT 1.00                 # Number multiplied by the number of raw materials received from another organism to compute reward
590ALT_COST 1.00                    # Number multiplied by the number of your raw materials
591ROTATE_ON_DONATE 0               # Rotate an organism to face its donor 0/1 (off/on)
592REPUTATION_REWARD 0              # Reward an organism for having a good reputation
593DONATION_FAILURE_PERCENT 0       # Percentage of times that a donation fails
594RANDOMIZE_RAW_MATERIAL_AMOUNT 0  # Should all the organisms receive the same amount 0/1 (off/on)
595DONATION_RESTRICTIONS 0          # 0=none
596                                 # 1=inter-species only
597                                 # 2=different tag only
598INHERIT_REPUTATION 0             # 0=reputations are not inherited
599                                 # 1=reputations are inherited
600                                 # 2=tags are inherited
601SPECIALISTS 0                    # 0=generalists allowed
602                                 # 1=only specialists
603STRING_AMOUNT_CAP -1             # -1=no cap on string amounts
604                                 # #=CAP
605MATCH_ALREADY_PRODUCED 0         # 0=off
606                                 # 1=on
607
608### GROUP_FORMATION_GROUP ###
609# Group Formation Settings
610USE_FORM_GROUPS 2  ########## Enable organisms to form groups. 0=off,
611                   #  1=on no restrict,
612                   #  2=on restrict to defined
613DEFAULT_GROUP 0   ####### Default group to assign to organisms not asserting a group membership (-1 indicates disabled)
614
615### DEME_NETWORK_GROUP ###
616# Deme network settings
617DEME_NETWORK_TYPE 0                    # 0=topology, structure of network determines fitness.
618DEME_NETWORK_REQUIRES_CONNECTEDNESS 1  # Whether the deme's network must be connected before an actual fitness is calculated.
619DEME_NETWORK_TOPOLOGY_FITNESS 0        # Network measure used to determine fitness; see cDemeTopologyNetwork.h.
620DEME_NETWORK_LINK_DECAY 0              # Number of updates after which a link decays; 0=no decay (default).
621DEME_NETWORK_REMOVE_NODE_ON_DEATH 0    # Whether death of an organism in
622                                       # the deme removes its links;
623                                       # 0=no (default);
624                                       # 1=yes.
625
626### HGT_GROUP ###
627# Horizontal gene transfer settings
628ENABLE_HGT 0                    # Whether HGT is enabled; 0=false (default),
629                                # 1=true.
630HGT_SOURCE 0                    # Source of HGT fragments; 0=dead organisms (default),
631                                # 1=parent.
632HGT_FRAGMENT_SELECTION 0        # Method used to select fragments for HGT mutation; 0=random (default),
633                                # 1=trimmed selection
634                                # 2=random placement.
635HGT_FRAGMENT_SIZE_MEAN 10       # Mean size of fragments (default=10).
636HGT_FRAGMENT_SIZE_VARIANCE 2    # Variance of fragments (default=2).
637HGT_MAX_FRAGMENTS_PER_CELL 100  # Max. allowed number of fragments per cell (default=100).
638HGT_DIFFUSION_METHOD 0          # Method to use for diffusion of genome fragments; 0=none (default).
639HGT_COMPETENCE_P 0.0            # Probability that an HGT 'natural competence' mutation will occur on divide (default=0.0).
640HGT_INSERTION_MUT_P 0.0         # Probability that an HGT mutation will result in an insertion (default=0.0).
641HGT_CONJUGATION_METHOD 0        # Method used to select the receiver and/or donor of an HGT conjugation;
642                                # 0=random from neighborhood (default);
643                                # 1=faced.
644HGT_CONJUGATION_P 0.0           # Probability that an HGT conjugation mutation will occur on divide (default=0.0).
645HGT_FRAGMENT_XFORM 0            # Transformation to apply to each fragment prior to incorporation into offspring's genome; 0=none (default),
646                                # 1=random shuffle,
647                                # 2=replace with random instructions.
648
649### INST_RES_GROUP ###
650# Resource-Dependent Instructions Settings
651INST_RES            # Resource upon which the execution of certain instruction depends
652INST_RES_FLOOR 0.0  # Assumed lower level of resource in environment.  Used for probability dist.
653INST_RES_CEIL 0.0   # Assumed upper level of resource in environment.  Used for probability dist.
654
655### OPINION_GROUP ###
656# Organism opinion settings
657OPINION_BUFFER_SIZE -1  ####### Size of the opinion buffer (stores opinions set over the organism's lifetime); -1=inf, default=1, cannot be 0.
658
659### ALARM_GROUP ###
660# Alarm Settings
661BCAST_HOPS 1  # Number of hops to broadcast an alarm
662ALARM_SELF 0  # Does sending an alarm move sender IP to alarm label?
663              # 0=no
664              # 1=yes
665
666### DIVISION_OF_LABOR_GROUP ###
667# Division of Labor settings
668AGE_POLY_TRACKING 0         # Print data for an age-task histogram
669REACTION_THRESH 0           # The number of times the deme must perform each reaction in order to replicate
670TASK_SWITCH_PENALTY 0       # Cost of task switching in cycles
671TASK_SWITCH_PENALTY_TYPE 0  # Type of task switch cost: (0) none (1) learning, (2) retooling or context, (3) centrifuge
672RES_FOR_DEME_REP 0          # The amount of resources that must be consumed prior to automatic deme replication
673
674### DEPRECATED_GROUP ###
675# DEPRECATED (New functionality listed in comments)
676ANALYZE_MODE 0                 # 0 = Disabled
677                               # 1 = Enabled
678                               # 2 = Interactive
679                               # DEPRECATED: use command line options -a[nalyze] or -i[nteractive])
680REPRO_METHOD 1                 # Replace existing organism: 1=yes
681                               # DEPRECATED: Use BIRTH_METHOD 3 instead.
682LEGACY_GRID_LOCAL_SELECTION 0  # Enable legacy grid local mate selection.
683                               # DEPRECATED: Birth chameber now uses population structure)
684HARDWARE_TYPE 0                # 0 = Default, heads-based CPUs
685                               # 1 = New SMT CPUs
686                               # 2 = Transitional SMT
687                               # 3 = Experimental CPU
688                               # 4 = Gene Expression CPU
689INST_SET -                     # Instruction set file ('-' = use default for hardware type)
690INST_SET_LOAD_LEGACY 0         # Load legacy format instruction set file format
691START_ORGANISM -               # Organism to seed the population
692
693### DEVEL_GROUP ###
694# IN DEVELOPMENT (May not function correctly)
695WORLD_Z 1  # Depth of the Avida world
696