BIOMURFFS The program is designed to demonstrate how a succession of small changes, when s

Master Index Current Directory Index Go to SkepticTank Go to Human Rights activist Keith Henson Go to Scientology cult

Skeptic Tank!

浜様様様様様 BIOMURFFS 藩様様様様様 The program is designed to demonstrate how a succession of small changes, when stacked on top of one another, can lead to radical differences in the system affected. This is used by Richard Dawkins in 'The Blind Watchmaker' where he uses it to demonstrate the principle of cumulative small change as a mechanism for Darwinian evolution. There are one or two differences between Dawkin's program and this, but these are relatively minor ones connected with the operation and not the overall effect. 敖陳陳陳陳陳陳陳陳陳陳 SYSTEM REQUIREMENTS 青陳陳陳陳陳陳陳陳陳陳 The program is written in TURBO BASIC V1.0. It needs an IBM PC or compatible with CGA or EGA graphics. The memory requirements I don't exactly know about since the smallest system I've run it on is 512K. The program loads the DOS utility GRAPHICS.COM to allow screen printing, but this is called with no parameters, so it is set up for IBM GRAPHICS / EPSON compatible printers. The CGA high resolution graphics mode is used for plotting the biomorphs, so you don't need a colour monitor. Anyone who wants to write in genes for colour on an EGA is welcome to do so. 敖陳陳陳陳陳陳陳朕 USER INTERFACE 青陳陳陳陳陳陳陳潰 Run the program from DOS by entering BIOMRF from the DOS prompt and pressing the RETURN key. The screen will clear and the title page printed. At the foot of this you are asked: Do you want to define the initial gene values yourself ? answering Y will allow user definition of the intial values - see later. Answering N will cause the screen to clear again and the following to be shown The default initial values are: 6,2,8,1,2,135,90,10 Do you want these or a random selection ? See the section on genes for what this means. If you want the default values, just press the RETURN key, if not, the starting values will be generated at random, and you will be shown what they are. You are then told that to leave the program, just press the RETURN key in response to the question: Please enter the number of the biomorph you want ? 敖陳陳陳陳陳陳陳陳陳陳陳陳朕 DISPLAYING THE BIOMORPHS 青陳陳陳陳陳陳陳陳陳陳陳陳潰 The messages here are pretty self-explanatory, with the 'Do you want' type as Y/N replies and the others requiring numeric answers. However: 1. Notice that the morphs are plotted 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 but there may be fewer than 16 there. You can only select morphs which are actually shown. If you try to select number 8 when there are only 6 plotted you'll get nonsense. They are plotted staggered for clarity. 2. When you enter the magnification, values MUST be positive. Magnifications less than 1 reduce the size of the morph. As the morphs have a limited range of sizes and the screen has a limited size, you're best using magnifications of between 0.5 and 3. The gene values are plotted to the side of the morph if you ask to see it alone. 3. If you press RETURN on it's own to the question: 'Please enter the number of the biomorph you want ?' you will leave the program. 敖陳陳陳陳陳陳陳陳陳 BIOMORPH GENETICS 青陳陳陳陳陳陳陳陳陳 OK, this is where we see how it's all done. In natural systems, genes are just data storage media which, via the mechanisms of transcription affect (directly or otherwise) visible properties (or phenotypes) of the organisms, WITHOUT any obvious connection between the gene and the phenotype (i.e unless you know the system you don't know what one set of data in a particular gene will do just by looking at it). This is what happens here, but the system for turning gene data into phenotypes is simple enough to do on paper. Mutation is alteration of genetic data resulting in an altered phenotype. With natural mutation, very often the most obvious phenotype is death, but enough non-fatal mutations go on (especially with the added source of variety from sexual reproduction) to allow development. Biomorphs do not die, nor do they reproduce sexually, so in order to get evolution fast enough to see, they have a huge mutation rate - every one is mutated. However, each mutation is in only one gene, and it is only a +/- 1 change in the value of that gene. Since all these small changes are cumulative, a lot of development can be seen. I've just mentioned what biomorph mutation is physically, so to put it into perspective, it must also be said here that biomorph genes are all members of the set of natural numbers. These are thus data (in the same way as the 4- way 'numeric' code of DNA is data) which are read by the relevant section of the program as an instruction as to how to do it's job. The main difference (other than one of scale) between biomorphs and living organisms is that in biomorphs the phenotypes are produced directly from the code. Each biomorph has 8 genes of this type. As has been said, one is mutated at each reproduction, but which one is chosen at random, and the mutation, +/- 1 is also decided at random. The non-random influence here which can lead to the development of particular phenotypes is human selection. The genes are: 1: Number of offspring. 2: Number of iterations used when plotting (see PLOTTING BIOMORPHS) 3: GENE # 1 for branch length 4: GENE # 2 for branch length 5: GENE # 3 for branch length - if odd, branch length is 3 * 4, if even branch length is 3 + 4. 6: Angle of 1st branch from precursor (in degrees). 7: Angle of 2nd branch from 1st (2 branches come from each branch point). 8: Length of initial branch (trunk). 敖陳陳陳陳陳陳陳陳陳朕 PLOTTING BIOMORPHS 青陳陳陳陳陳陳陳陳陳潰 Biomorphs have a plane of symmetry running down the middle. This both looks nicer and is easier to do as it needs less data. They are actually 'trees' with a trunk and two branches coming from each branch point. They are plotted as a series of vectors, so the data needed to plot each one are co-ordinates of the start position, the length & the angle of the vector from the external vertical/horizontal x/y co-ordinate system of the screen. As there are two new branches coming from each old one, at every iteration after the first two an additional 2^(iteration) vectors are generated (remember that only half of the biomorph is actually worked out, as the other half is plotted by reflecting each vector on this side across the mirror plane), so it is easy to calculate where each new vector came from. (The file BIOPLOT.BAS contains the subroutine which does this). Once the vector is calculated, it can be plotted along with it's mirror image, and the subroutine for this is in the file VTRPLOT.BAS. The vector is calculated by finding it's start co-ordinates, which are the end of the parent vector. The length of the new vector is found by combining the values of genes 3 & 4 in the way indicated by gene 5. This is then stored and it's angle is found from the angle of the parent branch and gene 6 (for the first branch from a given branch point, or from the angle of the first branch and gene 7 for the second. This process is repeated for the number of iterations given by gene 2, and the biomorph thus drawn. The same is done for each biomorph in the set. When you ask for a single biomorph to be plotted, this again happens, the only difference being that the length of the vector is multiplied by the value of the magnification given. Biomorphs can also be plotted onto the printer at any time by pressing PrtSc. I am currently writing version 2.0 of this program, which will include two competing species and a definable environment. If you want a copy of this, once it is finished, including source code, or if you just want a chat, my email address is: 嬪様様様様様様様様様様様様様様様 D.J. Murphy, 12th May 1988 塒様様様様様様様様様様様様様様様


E-Mail Fredric L. Rice / The Skeptic Tank