genesis.html

来自「有趣的模拟进化的程序 由国外一生物学家开发 十分有趣」· HTML 代码 · 共 424 行 · 第 1/2 页

HTML
424
字号
<html><title>The Genesis File</title><body bgcolor="#FFFFFF" text="#000000" link="#0000AA" alink="#0000FF" vlink="#000044"><h2 align=center>The Genesis File</h2><p>The genesis file is the main configuration file for Avida.  With thisfile, the user can setup all of the basic conditions for a run.  Below aredetailed descriptions for some of the settings in genesis, with the onesyou should be most concerned about colored in green.  The non-colored entries you will probably never need to change unless you are doing a veryspecialized project.<h3>Architecture Variables</h3><p>This section covers all of the basic variables that describe the Avida run.This is effectively a miscellaneous category for settings that don't fitanywhere below.<p><table cellpadding=5 border=2><tr><td valign=top><b><tt>MAX_UPDATES<br>               MAX_GENERATIONS<br>               END_CONDITION_MODE</tt></b>    <td>These settings allow the user to determine for how long the run        should progress in generations and in updates, and determine if one        or both criteria need to be met for the run to end.  The        run will also end if ever the entire population has died out.  A        setting of -1 for either ending condition will indicate no limit.        End conditions can also be set in the events file, as is done by        default, so you typically won't need to worry about this.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>WORLD-X<br>               WORLD-Y</tt></b>    <td bgcolor="#AAFFAA">The settings determine the size of the Avida grid	that the organisms populate.  In mass action mode the shape of the	grid is not relevant, only the number of organisms that are in it.<tr><td valign=top><b><tt>MAX_CPU_THREADS</tt></b>    <td>At the moment, I think this feature isn't working.  Ideally, it        determines the number of simultaneous processes that an organism        can run.  That is, basically, the number of things it can do at once.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>RANDOM_SEED</tt></b>    <td bgcolor="#AAFFAA">The random number seed initializes the random number generator.  You        should alter only this seed if you want to perform a collection of        replicate runs.  Setting the random number seed to zero (or a negative        number) will base the seed on the starting time of the run        -- effectively a random random number seed.  In practice, you want        to always be able to re-do an exact run in case you want to get        more information about what happened.</table><p><h3>Configuration Files</h3>This section relates avida to other files that it requires.<p><table cellpadding=5 border=2><tr><td valign=top><b><tt>DEFAULT_DIR</tt></b>    <td>This entry allows the user to enter a directory name where Avida        can find the other needed configuration files if they are not local.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>INST_SET<br>                          EVENT_FILE<br>                          ANALYZE_FILE<br>                          ENVIRONMENT_FILE<br>                          START_CREATURE</tt></b>    <td valign=top bgcolor="#AAFFAA">These settings indicate the names of all	of the other configuration files used in an Avida run.  See the	individual documents for more information about how to use these files.</table><p><h3>Reproduction</h3><p>These settings control how creatures are born and die in Avida.<p><table cellpadding=5 border=2><tr><td valign=top bgcolor="#AAFFAA"><b><tt>BIRTH_METHOD</tt></b>    <td bgcolor="#AAFFAA">The birth method sets how the placement of a child organism is        determined.  Currently, there are six ways of doing this -- the        first four (0-3) are all grid-based (offspring are only placed        in the immediate neighborhood), and the last two (4-5) assume        a well-stirred population.  In all non-random methods, empty        sites are preferred over replacing a living organism.<tr><td valign=top><b><tt>DEATH_METHOD<br>                          AGE_LIMIT</tt></b>    <td>By default, replacement is the only way for an organism to die in        avida.  However, if a death method is set, organisms will dies of        old age.  In method one, organisms will die when they reach the        user-specified age limit.  In method 2, the age limit is a multiple        of their length, so larger organisms can live longer.<tr><td valign=top><b><tt>ALLOC_METHOD</tt></b>    <td>During the replication process, parent organisms must allocate memory        space for their child-to-be.  Before the child is copied into this        new memory, it must have an initial value.  Setting the alloc method        to zero sets this memory to a default instruction (typical nop-A).        Mode 1 leaves it uninitialized (and hence keeps the contents of the        last organism that inhabited that space; if only a partial copy        occurs, the child is a hybrid if the parent and the dead organism,        hence the name necrophilia).  Mode 2 just randomizes each instruction.        This means that the organism will behave unpredictably if the        uninitialized code is executed.<tr><td valign=top><b><tt>DIVIDE_METHOD</tt></b>    <td>When a divide occurs, does the parent divide into two children, or        else do we have a distinct parent and child?  The latter method        will allow more age structure in a population where an organism        may behave differently when it produces its second or later        offspring.<tr><td valign=top><b><tt>GENERATION_INC_METHOD</tt></b>    <td>The generation of an organism is the number of organisms in the        chain between it and the original ancestor.  Thus, the generation        of a population can be calculated as the average generation of the        individual organisms.  When a divide occurs, the child always receives        a generation one higher than the parent, but what should happen to        the generation of the parent itself?  In general, this should be        set the same as divide method.</table><h3>Divide Restrictions</h3><p>These place limits on when an organism can successfully issue a dividecommand to produce an offspring.<p><table cellpadding=5 border=2><tr><td valign=top bgcolor="#AAFFAA"><b><tt>CHILD_SIZE_RANGE</tt></b>    <td bgcolor="#AAFFAA">This is the maximal difference in genome size between a parent and        offspring.  The default of 2.0 means that the genome of the child        must be between one-half and twice the length of the parent.  This        it to prevent out-of-control size changes.  Setting this to 1.0 will        ensure fixed length organisms (but make sure to also turn off        insertion and deletion mutations).<tr><td valign=top><b><tt>MIN_COPIED_LINES<br>                          MIN_EXE_LINES</tt></b>    <td>These settings place limits on what the parent must have done before        the child can be born; they set the minimum fraction of instructions        that must have been copied into the child (vs. left as default) and        the minimum fraction of instructions in the parent that must have        been executed.  If either of these are not met, the divide will fail.        These settings prevent organisms from producing pathological        offspring.  In practice, either of them can be set to 0.0 to turn them        off.<tr><td valign=top><b><tt>REQUIRE_ALLOCATE</tt></b>    <td>Is an allocate required between each successful divide?  If so,        this will limit the flexibility of how organisms produce children        (they can't make multiple copies and divide them off all at once,        for example).  But if we don't require allocates, the resulting        organisms can be a lot more difficult to understand.<tr><td valign=top><b><tt>REQUIRED_TASK</tt></b>    <td>This was originally a hack.  It allows the user to set the ID number        for a task that <i>must</i> occur for a divide to be successful.        At -1, no tasks are required.  Ideally, this should be incorporated        into the environment configuration file.</table><h3>Mutations</h3><p>These settings control how and when mutations occur in organisms.  Ideally,there will be more options here in the future.<p><table cellpadding=5 border=2><tr><td valign=top><b><tt>POINT_MUT_PROB</tt></b>    <td>Point mutations (sometimes referred to as "cosmic ray" mutations)        occur every update; the rate set here is a probability for each site        that it will be mutated each update.  In other words, this should        be a very low value if it is turned on at all.  If a mutation occurs,        that site is replaced with a random instruction.  In practice this        also slows avida down if it is non-zero because it requires so many        random numbers to be tested every update.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>COPY_MUT_PROB</tt></b>    <td bgcolor="#AAFFAA">The copy mutation probability is tested each time an organism copies         a single instruction.  If a mutation occurs, a random instruction is        copied to the destination.  In practice this is the most common type        of mutations that we use in most of our experiments.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>INS_MUT_PROB<br>                          DEL_MUT_PROB</tt></b>    <td bgcolor="#AAFFAA">These probabilities are tested once per gestation cycle (when an        organism is first born) at each position where an instruction could        be inserted or deleted, respectively.  Each of these mutations change        the genome length.  Deletions just remove an instruction while        insertions add a new, random instruction at the position tested.        Multiple insertions and deletions are possible each generation.<tr><td valign=top bgcolor="#AAFFAA"><b><tt>DIVIDE_MUT_PROB<br>                          DIVIDE_INS_PROB<br>                          DIVIDE_DEL_PROB</tt></b>    <td bgcolor="#AAFFAA">Divide mutation probabilities are tested when an organism is        being divided off from its parent.  If one of these mutations        occurs, a random site is picked for it within the genome.  At most        one divide mutation of each type is possible during a single        divide.</table><h3>Mutation Reversions</h3><p>This section covers tests that are very CPU intensive, but allow foravida experiments that would not be possible in any other system.  Basically,each time a mutation occurs, we can run the resulting organism on atest CPU, and determine if that mutations was lethal, detrimental, neutral,or beneficial, as well as the type of mutation it was.  This section allows

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?