












                      BBBBEEEEHHHHAAAAVVVVIIIIOOOORRRRAAAALLLL EEEEVVVVOOOOLLLLUUUUTTTTIIIIOOOONNNN SSSSIIIIMMMMUUUULLLLAAAATTTTIIIIOOOONNNN
                              CCCCOOOONNNNSSSSTTTTRRRRUUUUCCCCTTTTIIIIOOOONNNN KKKKIIIITTTT




                               UUUUsssseeeerrrr''''ssss MMMMaaaannnnuuuuaaaallll

                                Version 1.0













                          _M_i_c_h_a_e_l _E. _M_i_l_l_s, _P_h._D.

                           Psychology Department
                        Loyola Marymount University
                              7101 W. 80th St.
                           Los Angeles, CA 90045
                               (213) 642-3017



   8c9  Copyright 1989 Michael E. Mills, Ph.D.





















   IIIINNNNTTTTRRRROOOODDDDUUUUCCCCTTTTIIIIOOOONNNN


        The  _B_e_h_a_v_i_o_r_a_l  _E_v_o_l_u_t_i_o_n  _S_i_m_u_l_a_t_i_o_n  _C_o_n_s_t_r_u_c_t_i_o_n  _K_i_t  _a_l_l_o_w_s
        _r_e_s_e_a_r_c_h_e_r_s  _a_n_d  _s_t_u_d_e_n_t_s  _t_o  _p_e_r_f_o_r_m _a _v_a_r_i_e_t_y _o_f _e_v_o_l_u_t_i_o_n_a_r_y
        _s_i_m_u_l_a_t_i_o_n_s.  _U_p _t_o _f_i_v_e _d_i_f_f_e_r_e_n_t "_c_r_e_a_t_u_r_e_s"  _m_a_y  _b_e  _d_e_f_i_n_e_d.
        _T_h_e  _c_h_a_r_a_c_t_e_r_i_s_t_i_c_s  _o_f  _e_a_c_h  _c_r_e_a_t_u_r_e  _t_y_p_e  _m_a_y _b_e _s_p_e_c_i_f_i_e_d.
        _T_h_e_s_e _v_a_r_i_a_b_l_e_s _i_n_c_l_u_d_e _l_i_f_e_s_p_a_n, _s_p_e_e_d  _o_f  _m_o_v_e_m_e_n_t,   _a_n_d  _t_h_e
        _t_i_m_e  _a_f_t_e_r _b_i_r_t_h _b_e_f_o_r_e _t_h_e _c_r_e_a_t_u_r_e _b_e_c_o_m_e_s _o_f _r_e_p_r_o_d_u_c_t_i_v_e _a_g_e
        ("_d_o_r_m_a_n_c_y").  _T_h_e _s_y_m_b_o_l (_a_n_d _i_t_s _c_o_l_o_r) _d_i_s_p_l_a_y_e_d _o_n _t_h_e _s_c_r_e_e_n
        _t_o _r_e_p_r_e_s_e_n_t _t_h_e _c_r_e_a_t_u_r_e _m_a_y _b_e _s_p_e_c_i_f_i_e_d.  _C_r_e_a_t_u_r_e _s_y_m_b_o_l_s _m_a_y
        _b_e _a_n_y _A_S_C_I_I _s_y_m_b_o_l.

        _A_f_t_e_r  _t_h_e  _v_a_r_i_o_u_s  _c_r_e_a_t_u_r_e  _t_y_p_e_s  _h_a_v_e  _b_e_e_n  _d_e_f_i_n_e_d,  _t_h_e_i_r
        _c_o_u_r_t_s_h_i_p, _m_a_t_i_n_g, _a_n_d _p_a_r_e_n_t_i_n_g _b_e_h_a_v_i_o_r_s _a_r_e _d_e_f_i_n_e_d.  _F_o_r _e_a_c_h
        _p_o_s_s_i_b_l_e _m_a_t_i_n_g _p_a_i_r, _t_h_e_s_e _v_a_r_i_a_b_l_e_s _m_a_y _b_e _s_e_t:  _t_i_m_e _s_p_e_n_t  _i_n
        _c_o_u_r_t_s_h_i_p  (_b_e_f_o_r_e  _m_a_t_i_n_g  _c_a_n  _o_c_c_u_r), _t_h_e _p_r_o_b_a_b_i_l_i_t_y _t_h_a_t _t_h_e
        _p_a_i_r _w_i_l_l _d_e_c_i_d_e _t_o _m_a_t_e _a_f_t_e_r _t_h_e_i_r  _c_o_u_r_t_s_h_i_p,  _t_h_e  _t_i_m_e  _e_a_c_h
        _p_a_r_e_n_t  _i_n_v_e_s_t_s  _i_n  _r_e_a_r_i_n_g  _r_e_s_u_l_t_i_n_g  _o_f_f_s_p_r_i_n_g (_i_f _a_n_y),  _t_h_e
        _p_r_o_b_a_b_i_l_i_t_y  _t_h_a_t  _t_h_e  _c_o_u_p_l_e  _w_i_l_l  _h_a_v_e  _o_n_e,  _t_w_o,  _o_r  _t_h_r_e_e
        _o_f_f_s_p_r_i_n_g, _a_n_d _t_h_e "_c_r_e_a_t_u_r_e _t_y_p_e_s" _o_f _t_h_e _o_f_f_s_p_r_i_n_g.

        _W_h_e_n _a_l_l _o_f _t_h_e _a_b_o_v_e _v_a_r_i_a_b_l_e_s _h_a_v_e _b_e_e_n _d_e_f_i_n_e_d _i_n _t_h_e _c_r_e_a_t_u_r_e
        _d_e_f_i_n_i_t_i_o_n  _t_a_b_l_e,  _t_h_e _u_s_e_r _c_a_n _t_h_e_n _s_t_a_r_t _t_h_e _s_i_m_u_l_a_t_i_o_n.  _W_h_e_n
        _t_h_e _s_i_m_u_l_a_t_i_o_n _b_e_g_i_n_s, _s_e_v_e_r_a_l _w_i_n_d_o_w_s _a_p_p_e_a_r: (_a) _a _w_i_n_d_o_w _w_h_i_c_h
        _s_h_o_w_s  _t_h_e  _c_r_e_a_t_u_r_e_s  _m_o_v_i_n_g _a_b_o_u_t _a_n_d _i_n_t_e_r_a_c_t_i_n_g, (_b) _a _w_i_n_d_o_w
        _w_i_t_h _a _m_o_v_i_n_g _g_r_a_p_h _o_f _t_h_e _r_e_l_a_t_i_v_e _p_e_r_c_e_n_t_a_g_e_s _o_f _e_a_c_h  _c_r_e_a_t_u_r_e
        _t_y_p_e, _a_n_d (_c) _a_n_d _i_n_f_o_r_m_a_t_i_o_n _w_i_n_d_o_w.

        _D_u_r_i_n_g _t_h_e _s_i_m_u_l_a_t_i_o_n, _t_h_e _u_s_e_r _c_a_n: (_a) _s_p_e_e_d _u_p  _o_r  _s_l_o_w  _d_o_w_n
        _t_h_e _s_i_m_u_l_a_t_i_o_n, (_b) _p_a_u_s_e _t_h_e _s_i_m_u_l_a_t_i_o_n, (_c) _t_u_r_n _m_a_t_i_n_g "_b_e_e_p_s"
        _o_n _o_r _o_f_f, _a_n_d (_d) _q_u_i_t _t_h_e _s_i_m_u_l_a_t_i_o_n.  _T_h_e _s_i_m_u_l_a_t_i_o_n _w_i_l_l _s_t_o_p
        _o_n _i_t_s _o_w_n _a_f_t_e_r _t_h_e _c_r_e_a_t_u_r_e_s _e_i_t_h_e_r _t_o_t_a_l_l_y _f_i_l_l _t_h_e _s_c_r_e_e_n, _o_r
        _t_h_e_y _a_l_l _g_o _e_x_t_i_n_c_t.

        _A_f_t_e_r _t_h_e _s_i_m_u_l_a_t_i_o_n, _a _f_i_l_e _c_a_l_l_e_d  "_p_l_o_t._g_p_h"  _w_i_l_l  _h_a_v_e  _b_e_e_n
        _c_r_e_a_t_e_d  _t_h_a_t  _w_i_l_l  _s_h_o_w  _t_h_e  _g_r_a_p_h  _o_f _t_h_e _p_e_r_c_e_n_t_a_g_e_s _o_f _e_a_c_h
        _c_r_e_a_t_u_r_e _t_y_p_e.

   RRRRUUUUNNNNNNNNIIIINNNNGGGG TTTTHHHHEEEE PPPPRRRROOOOGGGGRRRRAAAAMMMM

        To define the creatures for a simulation,  and  to  automatically
        run  the  simulation  after the creatures have been defined, give
        the command:

            define

        A form will appear  that  you  can  use  to  define  up  to  five
        different creature types.  After you have entered information for
        a field, press return.  You will be automatically advanced to the
        next  field.   To  correct an error, press the backspace key.  To
        move back to previous fields, press the  up-arrow  key;  to  move
        forward to fields, press the down-arrow key.

        At the bottom of the screen is an information  window.  Refer  to
        this  window  for  instructions  about  the  type  of information
        required for each field.  Some  fields  that  require  percentage
        data  may  have  to  sum  to 100, or an error will occur when the
        simulation is run.


   TTTTEEEECCCCHHHHNNNNIIIICCCCAAAALLLL IIIINNNNFFFFOOOORRRRMMMMAAAATTTTIIIIOOOONNNN


        You can also modify the files normally created  by  the  'define'
        program  yourself.   In  this  fashion  can  bypass  the 'define'
        program.

        An input  file  consists  of  a  sequence  of  type  and  subtype
        declarations  followed  by  a set of mating tables and an initial
        population descriptor.  This information must be  in  consecutive
        order. No forward references to types are allowed.

                                 CCCCRRRREEEEAAAATTTTUUUURRRREEEE TTTTYYYYPPPPEEEE

        A type declaration defines a creature  type.  The  syntax  for  a
        creature definition is as follows:

        type <"name of creature">
        {
               symbol : <int>
               color  : (<color-value>, <mono-value>)
               lifespan : <int>
               dormancy : <int>
               speed        : <int>
        }

        The creature's attributes (symbol, color, etc) may appear in any
        order but a given attribute can only be defined once.

        [1] symbol
               Is an integer corresponding to the ascii value of the
               character used to represent the creature.
        [2] color
               Consists of two values separated by a comma. These
               values define the color of the creature on a color
               and on a monochrome monitor respectively.

               The legal values for a color on a color monitor are:

               black
               blue
               green
               cyan
               red
               magenta
               brown
               light_grey
               dark_grey
               light_blue
               light_green
               light_cyan
               light_red
               light_magenta
               yellow
               white

               The legal values for a monochrome monitor are:

               normal
               underline
               reverse

               which can be further qualified by any combination of
               the following key words:

               bright
               blink

               eg: bright blink normal


        [3] lifespan
               Is a positive integer that determines the organism's lifespan.

        [4] dormancy
               Is a positive integer that determines the organism's reproductive
               dormancy period after mating or after it has been created.
               The dormancy period is required to prevent an organism from
               immediately mating with its previous spouse and also to prevent
               newly created children from mating with their siblings or parents.

        [5] speed
               Is a positive integer that determines the number of random
               squares an organism can move in one unit of time.


                                CCCCRRRREEEEAAAATTTTUUUURRRREEEE SSSSUUUUBBBBTTTTYYYYPPPPEEEE

        A subtype declaration defines a "mutation" of a parent creature type
        The syntax is described below:

        subtype "<mutant-creature-name>" of  "<parent-creature-name>"
        {
               symbol : <int>
               color  : (<color-value>, <mono-value>)
               lifespan : <int>
               dormancy : <int>
               speed        : <int>
        }


        All the attributes of a subtype are optional. If an attribute is not
        specified the value of the attribute is inherited from its parent
        class.


                                  MMMMAAAATTTTIIIINNNNGGGG TTTTAAAABBBBLLLLEEEE

        A mating table defines how two organisms will reproduce. You only
        need  to provide a mating table for legal mating combinations. In
        other words, it is not required that you provide a  mating  table
        for two females or two males.

        The syntax for a mating table is

        mate ( "<creature-name-1>" "<creature-name-2>" )
        {
               courtship : ( <time>, <probability> )
               rearing   : ( <rearing-costs-for-creature-1>, <rearing-cost-for-creature-2> )
               offspring : ( < %for 1 organism, %for 2 organisms, ... )
               distribution : ( "creature-1",  %chance
                              "creature-2",  %chance,
                              ...
                             )
        }


        [1] "creature-name-1"  "creature-name-2"

               The creature name entries specify the names of the types or
               subtypes of a reproductive couple. Typically the names will
               be different but you can specify matings between organisms
               of the same type.

        [2] courtship
               Consists of two positive integers representing the courtship
               time and probability respectively. The courtship time
               is the amount of time that the couple will spend courting.
               The courtship probability is the probability that the
               two will reproduce. This value must be from 0 to 100.

        [3]  rearing
               The rearing entry specifies the rearing costs in time
               for creature 1 and creature 2 respectively.

        [4] offspring
               The offspring entries represent the probability for
               1, 2, 3, etc children. The sum of these values must
               be 100.

        [5] distribution
               The distribution entries represent the probability
               of an offspring for a specific creature type. The
               sum of these entries must be 100.

                                   PPPPOOOOPPPPUUUULLLLAAAATTTTIIIIOOOONNNN

        The population table determines the initial creature
        distribution. The syntax is described below:

        population
        {
               "creature-name-1" : <number>
               "creature-name-2" : <number>
               ...
        }
                                SSSSAAAAMMMMPPPPLLLLEEEE IIIINNNNPPPPUUUUTTTT FFFFIIIILLLLEEEE

        Below is a sample input file.  This is used to simulate the
        evolution of "fast" vs. "coy" female, and "faithful" vs. "philandering"
        males.


        type "coy"
        {
                symbol : 12
                color  : (red,dark_grey,normal,underline)
                lifespan : 150
                dormancy : 5
                speed : 1
        }

        type "fast"
        {
                symbol : 12
                color  : (light_red,dark_grey,normal,underline)
                lifespan : 150
                dormancy : 5
                speed : 1
        }

        type "faithful"
        {
                symbol : 11
                color  : (blue, dark_grey,normal, underline)
                lifespan : 150
                dormancy : 5
                speed : 1
        }

        type "philanderer"
        {
                symbol : 11
                color  : (light_blue,dark_grey,normal,underline)
                lifespan : 150
                dormancy : 5
                speed : 1
        }

        mate ( "faithful" , "coy" )
        {
                courtship : ( 15 , 80 )
                rearing   : ( 20 , 20 )
                offspring : ( 0, 15 , 85 )
                distribution : ( "faithful" ,  30,
                                 "coy",      50,
                                 "philanderer", 10,
                                 "fast",      10
                               )
        }

        mate ( "faithful" , "fast" )
        {
                courtship : (  5 , 90 )
                rearing   : ( 10 , 30 )
                offspring : ( 50, 25 , 25 )
                distribution : ( "faithful" ,  40,
                                 "fast",      20,
                                 "philanderer", 20,
                                 "coy",      20
                               )
        }

        mate ( "philanderer" , "coy" )
        {
                courtship : ( 15 ,  25 )
                rearing   : (  5 , 30 )
                offspring : ( 85, 10, 5)
                distribution : (
                                 "philanderer", 10,
                                 "coy",       50,
                                 "faithful",    20,
                                 "fast",      20
                               )
        }

        mate ( "philanderer" , "fast" )
        {
                courtship : ( 0 , 100 )
                rearing   : ( 5 , 35 )
                offspring : ( 65, 25, 10)
                distribution : (
                                 "philanderer", 30,
                                 "fast",      30,
                                 "coy",       20,
                                 "faithful",   20
                               )
        }



        population
        {
                "faithful"    : 25
                "coy"      : 25
                "philanderer" : 25
                "fast"      : 25
        }

                             RRRRUUUUNNNNNNNNIIIINNNNGGGG TTTTHHHHEEEE SSSSIIIIMMMMUUUULLLLAAAATTTTIIIIOOOONNNN

        To run the simulation, give the following command:

        evolkit _i_n_p_u_t_f_i_l_e [-_m|-_a|-_b|-_c] [-_w_l_x,_l_y,_t_x,_t_y]  [-_l_i_n_t_e_r_v_a_l]  [-
        _s_s_t_e_p]

        Where the options are as follows:

             -a auto-detect monitor
             -c cga or ega monitor
             -m monochrome monitor
             -b use bios to write to screen
             -wtx,ty,lx,ly define window boundaries for display
                       tx, ty = top col,row;   lx, ly = lower col,row
             -linterval defines interval
             -sstep defines step interval
             -ppause defines pause interval

        For example:

             evolkit -a -p0 -w30,0,79,16 input.def











































