[avida-cvs] avida(kaben) CVS commits: /current/source/main/functional_testsuites/tedious.tail analyze.cfg environment.cfg events.cfg genesis inst_set.default organism.default tail.exp tail.sh

kaben avida-cvs at alife.org
Fri Oct 3 22:12:21 PDT 2003


kaben		Fri Oct  3 14:12:21 2003 EDT

  Added files:                 (Branch: kaben)
    /avida/current/source/main/functional_testsuites/tedious.tail	
                                                                 	analyze.cfg 
                                                                 	environment.cfg 
                                                                 	events.cfg 
                                                                 	genesis 
                                                                 	inst_set.default 
                                                                 	organism.default 
                                                                 	tail.exp 
                                                                 	tail.sh 
  Log:
  
  Adding missing testsuite files.
  
  
  
-------------- next part --------------

Index: avida/current/source/main/functional_testsuites/tedious.tail/analyze.cfg
+++ avida/current/source/main/functional_testsuites/tedious.tail/analyze.cfg
#############################################################################
# This file is used to setup avida when it is in analysis-only mode (by
# running "avida -a".  It allows variety of methods to load organisms
# (specifying the type of each) and analyze them once loaded.
#
# See the documentation in doc/analyze_mode.html for usage, or the file
# doc/analyze_samples.html for guidelines on writing programs.
#
#############################################################################

Index: avida/current/source/main/functional_testsuites/tedious.tail/environment.cfg
+++ avida/current/source/main/functional_testsuites/tedious.tail/environment.cfg
##############################################################################
#
# This is the setup file for the task/resource system.  From here, you can
# setup the available resources (including their inflow and outflow rates) as
# well as the reactions that the organisms can trigger by performing tasks.
#
# This file is currently setup to reward 9 tasks, all of which use the
# "infinite" resource, which is undepletable.
#
# For information on how to use this file, see:  doc/environment.html
# For other sample environments, see:  source/support/config/ 
#
##############################################################################

REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
REACTION  AND  and   process:value=2.0:type=pow  requisite:max_count=1
REACTION  ORN  orn   process:value=2.0:type=pow  requisite:max_count=1
REACTION  OR   or    process:value=3.0:type=pow  requisite:max_count=1
REACTION  ANDN andn  process:value=3.0:type=pow  requisite:max_count=1
REACTION  NOR  nor   process:value=4.0:type=pow  requisite:max_count=1
REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1

Index: avida/current/source/main/functional_testsuites/tedious.tail/events.cfg
+++ avida/current/source/main/functional_testsuites/tedious.tail/events.cfg
##############################################################################
#
# This is the setup file for the events system.  From here, you can
# configure any actions that you want to have happen during the course of
# an experiment, including setting the times for data collection.
#
# basic syntax:  [trigger]  [start:interval:stop]  [event] [arguments...]
#
# This file is currently setup to start off a population full of the 
# starting organism specified in genesis, and then record key information
# every 100 updates.
#
# For information on how to use this file, see:  doc/events.html
# For other sample event configurations, see:  source/support/config/
#
##############################################################################

# Print all of the standard data files...
u 0:100 print_dom                 # Save the most abundant genotypes
u 0:100:end print_average_data    # Save info about they average genotypes
u 0:100:end print_dominant_data   # Save info about most abundant genotypes
u 0:100:end print_stats_data      # Collect satistics about entire pop.
u 0:100:end print_count_data      # Count organisms, genotypes, species, etc.
u 0:100:end print_tasks_data      # Save organisms counts for each task.
u 0:100:end print_time_data       # Track time conversion (generations, etc.)
u 0:100:end print_resource_data   # Track resource abundance.

# A few data files not printed by default
# u 100:100:end print_error_data      # Std. Error on averages.
# u 100:100:end print_variance_data   # Variance on averages.
# u 100:100:end print_totals_data     # Total counts over entire run.
# u 100:100:end print_tasks_exe_data  # Num. times tasks have been executed.

# Setup the exit time and full population data collection.
u 100:100 detail_pop           # Save current state of population.
u 100:100 dump_historic_pop    # Save ancestors of current population.
u 100 exit                      # exit


Index: avida/current/source/main/functional_testsuites/tedious.tail/genesis
+++ avida/current/source/main/functional_testsuites/tedious.tail/genesis
#############################################################################
# This file includes all the basic run-time defines for avida.
# For more information, see doc/genesis.html
#############################################################################

VERSION_ID 2.0b6		# 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 20		# Width of the world in Avida mode.
WORLD-Y 20		# Height of the world in Avida mode.
WORLD_GEOMETRY 2        # 1 = Bounded Grid
                        # 2 = Torus (Default)
RANDOM_SEED 1		# Random number seed. (0 for based on time)
HARDWARE_TYPE 0		# 0 = Original CPUs
			# 1 = New, Stack-based CPUs
MAX_CPU_THREADS 1	# Number of Threads CPUs can spawn

### Configuration Files ###
DEFAULT_DIR ../work/              # Directory in which config files are found
INST_SET inst_set.default         # File containing instruction set
EVENT_FILE events.cfg             # File containing list of events during run
ANALYZE_FILE analyze.cfg          # File used for analysis mode
ENVIRONMENT_FILE environment.cfg  # File that describes the environment
START_CREATURE organism.default   # Organism to seed the soup

### Reproduction ###
BIRTH_METHOD 4    # 0 = Replace random organism in neighborhood
		  # 1 = Replace oldest organism in neighborhood
		  # 2 = Replace largest Age/Merit in neighborhood
		  # 3 = Place only in empty cells in neighborhood
		  # 4 = Replace random from entire population (Mass Action)
		  # 5 = Replace oldest in entire population (like Tierra)
DEATH_METHOD 0    # 0 = Never die of old age.
		  # 1 = Die when inst executed = AGE_LIMIT (with deviation)
		  # 2 = Die when inst executed = length * AGE_LIMIT (+ dev.)
AGE_LIMIT 5000    # Modifies DEATH_METHOD
AGE_DEVIATION 0   # Modified DEATH_METHOD
ALLOC_METHOD 0    # 0 = Allocated space is set to default instruction.
                  # 1 = Set to section of dead genome (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_INC_METHOD 1 # 0 = Only the generation of the child is
                        #     increased on divide.
			# 1 = Both the generation of the mother and child are
			#     increased on divide (good with DIVIDE_METHOD 1).

### 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)
REQUIRED_TASK -1  # Number of task required for successful divide.

### Mutations ###

# mutations that occur during execution..
POINT_MUT_PROB  0.0     # Mutation rate (per-location per update)
COPY_MUT_PROB   0.0075  # Mutation rate (per copy).

# mutations that occur on divide...
INS_MUT_PROB    0.0     # Insertion rate (per site, applied on divide).
DEL_MUT_PROB    0.0     # Deletion rate (per site, applied on divide).
DIV_MUT_PROB    0.0     # Mutation 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).
PARENT_MUT_PROB 0.0     # Per-site, in parent, on divide

# heads based mutations
# READ_SHIFT_PROB   0.0
# READ INS_PROB     0.0
# READ_DEL_PROB     0.0
# WRITE_SHIFT_PROB  0.0
# WRITE_INS_PROB    0.0
# WRITE_DEL_PROB    0.0


### 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

STERILIZE_FATAL       0.0  # Should any mutations clear (kill) the organism?
STERILIZE_DETRIMENTAL 0.0  #   0.0 to 1.0; Probability of reset.
STERILIZE_NEUTRAL     0.0
STERILIZE_BENEFICIAL  0.0

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

### Time Slicing ###
AVE_TIME_SLICE 30
SLICING_METHOD 2	# 0 = CONSTANT: all organisms get default...
			# 1 = PROBABILISTIC: Run _prob_ proportional to merit.
			# 2 = 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
THREAD_SLICING_METHOD 0 # 0 = One thread executed per time slice.
			# 1 = All threads executed each time slice.

MAX_LABEL_EXE_SIZE 1	# Max nops marked as executed when labels are used
MERIT_TIME 1            # 0 = Merit Calculated when task completed
		        # 1 = Merit Calculated on Divide
MAX_NUM_TASKS_REWARDED -1  # -1 = Unlimited

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

### Log Files ###
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_LANDSCAPE 0		# 0/1 (off/on) toggle to print file.

LOG_LINEAGES 0          # 0/1 (off/on) to log advantageous mutations
# 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.

LINEAGE_CREATION_METHOD 0
# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
#   0 = manual creation (on inject, use successive integers as lineage labels).
#   1 = when a child's (potential) fitness is higher than that of its parent.
#   2 = when a child's (potential) fitness is higher than max in population.
#   3 = when a child's (potential) fitness is higher than max in dom. lineage
#	*and* the child is in the dominant lineage, or (2)
#   4 = when a child's (potential) fitness is higher than max in dom. lineage
#	(and that of its own lineage)
#   5 = same as child's (potential) fitness is higher than that of the
#       currently dominant organism, and also than that of any organism
#       currently in the same lineage.
#   6 = when a child's (potential) fitness is higher than any organism
#       currently in the same lineage.
#   7 = when a child's (potential) fitness is higher than that of any
#       organism in its line of descent

### END ###



Index: avida/current/source/main/functional_testsuites/tedious.tail/inst_set.default
+++ avida/current/source/main/functional_testsuites/tedious.tail/inst_set.default
nop-A      1   # a
nop-B      1   # b
nop-C      1   # c
if-n-equ   1   # d
if-less    1   # e
pop        1   # f
push       1   # g
swap-stk   1   # h
swap       1   # i 
shift-r    1   # j
shift-l    1   # k
inc        1   # l
dec        1   # m
add        1   # n
sub        1   # o
nand       1   # p
IO         1   # q   Puts current contents of register and gets new.
h-alloc    1   # r   Allocate as much memory as organism can use.
h-divide   1   # s   Cuts off everything between the read and write heads
h-copy     1   # t   Combine h-read and h-write
h-search   1   # u   Search for matching template, set flow head & return info
               #   #   if no template, move flow-head here, set size&offset=0.
mov-head   1   # v   Move ?IP? head to flow control.
jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
get-head   1   # x   Get position of specified head in CX.
if-label   1   # y
set-flow   1   # z   Move flow-head to address in ?CX? 

#adv-head   1
#jump-f     1
#jump-b     1
#call       1
#return     1
#if-bit-1   1
#get        1
#put        1
#h-read     1
#h-write    1
#set-head   1
#search-f   1
#search-b   1


# Works on multiple nops:  pop  push  inc  dec  IO  adv-head 

# What if we add a new head.  Search will return the location of something,
# and put the new head there.  Then set-head will move another head to that
# point.  In the case of the copy loop, it only needs to be set once and
# this will speed up the code quite a bit!

# Search with no template returns current position (abs line number) in
# genome.
Index: avida/current/source/main/functional_testsuites/tedious.tail/organism.default
+++ avida/current/source/main/functional_testsuites/tedious.tail/organism.default
h-alloc    # Allocate space for child
h-search   # Locate the end of the organism
nop-C      #
nop-A      #
mov-head   # Place write-head at beginning of offspring.
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
nop-C      #
h-search   # Mark the beginning of the copy loop
h-copy     # Do the copy
if-label   # If we're done copying....
nop-C      #
nop-A      #
h-divide   #    ...divide!
mov-head   # Otherwise, loop back to the beginning of the copy loop.
nop-A      # End label.
nop-B      #

Index: avida/current/source/main/functional_testsuites/tedious.tail/tail.exp
+++ avida/current/source/main/functional_testsuites/tedious.tail/tail.exp
# Note: the variables 'srcdir', 'subdir', and 'tool' (among others) are
# preinitialized by dejagnu.

# The default timeout period is 10 seconds but may be set as follows:
  set timeout 30

# Give this test a name.
  set test "tedious tail demo"

# Set the commandline that performs this test.
  set SHELLSCRIPT "$srcdir/$subdir/tail.sh $srcdir $subdir $AVIDA_BLDDIR/primitive"

# Expected output (regular expression to match the last line of
# detail_pop.100):
  set expected_output "55 49 24 1 1 99 0 0 0 100 -1 2 cccccccccccccccccccccccccccccccccccccccccutycusvabrucavcccccccccccccccccccccccccccccccccccccccccccc"

# Launch the test.  Complain if there was a problem launching.
if { [scripted_test "$tool" "$test" "$SHELLSCRIPT" "$expected_output"] != "" } {
  perror "failed to spawn \"$SHELLSCRIPT\"." 0
}

Index: avida/current/source/main/functional_testsuites/tedious.tail/tail.sh
+++ avida/current/source/main/functional_testsuites/tedious.tail/tail.sh
# /bin/sh

# read command-line arguments:
TESTSUITE_DIR=$1       # path to top directory for test scripts.
SUBDIR=$2              # subdir of TESTSUITE_DIR containing this script.
AVIDA_PATH=$3          # path to avida executable.

# specify paths to config files.
CFG_DIR=$TESTSUITE_DIR/$SUBDIR
GENESIS_FILE=$CFG_DIR/genesis
INST_SET=$CFG_DIR/inst_set.default
EVENT_FILE=$CFG_DIR/events.cfg
ANALYZE_FILE=$CFG_DIR/analyze.cfg
ENVIRONMENT_FILE=$CFG_DIR/environment.cfg
START_CREATURE=$CFG_DIR/organism.default

# make subdirectory for storing avida's output files.
[ -d $SUBDIR ] || mkdir -p $SUBDIR
cd $SUBDIR

# run avida, and save all output to avida_run.log.
$AVIDA_PATH \
  -genesis $GENESIS_FILE \
  -set INST_SET $INST_SET \
  -set EVENT_FILE $EVENT_FILE \
  -set ANALYZE_FILE $ANALYZE_FILE \
  -set ENVIRONMENT_FILE $ENVIRONMENT_FILE \
  -set START_CREATURE $START_CREATURE \
  2>&1 > avida_run.log

# send the last line of detail_pop.100 back to the testdriver for
# verification.
echo "last line of output file detail_pop.100:"
tail -n 1 detail_pop.100

# sleeping for one second gives dejagnu/expect time to react.
sleep 1;


More information about the Avida-cvs mailing list