Page 170 - 49A Field Guide to Genetic Programming
P. 170

156                                                      B TinyGP


        47        case ADD : return ( run ( ) + run () ) ;
        48        case SUB : return ( run ( ) − run () ) ;
        49        case MUL : return ( run ( ) ∗ run () ) ;
        50        case DIV : {
        51          double num = run () , den = run () ;
        52          i f ( Math . abs ( den ) <= 0.001 )
        53            return ( num ) ;
        54          else
        55            return ( num / den ) ;
        56          }
        57        }
        58      return ( 0.0 ) ; // should never get here
        59    }
        60
        61    int t r a v e r s e ( char [ ]  buffer , int buffercount ) {
        62      i f ( b u f f e r [ buffercount ] < FSET START )
        63        return ( ++buffercount ) ;
        64
        65      switch ( b u f f e r [ buffercount ] ) {
        66        case ADD:
        67        case SUB:
        68        case MUL:
        69        case DIV :
        70        return ( t r a v e r s e ( buffer , t r a v e r s e ( buffer , ++buffercount
                      ) ) ) ;
        71        }
                return ( 0 ) ; // should never get here
        72
        73    }
        74
        75    void s e t u p f i t n e s s ( String fname ) {
        76      try {
        77        int i , j ;
        78        String l i n e ;
        79
        80        BufferedReader in =
        81        new BufferedReader (
        82                      new
        83                      FileReader ( fname ) ) ;
        84        l i n e = in . readLine ( ) ;
        85        StringTokenizer tokens = new StringTokenizer ( l i n e ) ;
        86        varnumber = Integer . parseInt ( tokens . nextToken () . trim () ) ;
        87        randomnumber = Integer . parseInt ( tokens . nextToken () . trim () )
                      ;
        88        minrandom =       Double . parseDouble ( tokens . nextToken () .
                      trim () ) ;
        89        maxrandom =  Double . parseDouble ( tokens . nextToken () . trim () )
                      ;
        90        f i t n e s s c a s e s = Integer . parseInt ( tokens . nextToken () . trim () )
                      ;
        91        t a r g e t s = new double [ f i t n e s s c a s e s ] [ varnumber +1];
        92        i f ( varnumber + randomnumber >= FSET START )
        93          System . out . p r i n t l n ( ” too many v a r i a b l e s and constants ” ) ;
        94
        95        for ( i = 0 ; i < f i t n e s s c a s e s ; i ++ ) {
   165   166   167   168   169   170   171   172   173   174   175