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 + -
显示快捷键?