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 ++ ) {