Page 171 - 49A Field Guide to Genetic Programming
P. 171
B.3 Source Code 157
96 l i n e = in . readLine () ;
97 tokens = new StringTokenizer ( l i n e ) ;
98 for ( j = 0; j <= varnumber ; j++) {
99 t a r g e t s [ i ] [ j ] = Double . parseDouble ( tokens . nextToken () .
trim ( ) ) ;
100 }
101 }
102 in . c l o s e ( ) ;
103 }
104 catch ( FileNotFoundException e ) {
105 System . out . p r i n t l n ( ”ERROR: Please provide a data f i l e ” ) ;
106 System . e x i t (0) ;
107 }
108 catch ( Exception e ) {
109 System . out . p r i n t l n ( ”ERROR: I n c o r r e c t data format ” ) ;
110 System . e x i t (0) ;
111 }
112 }
113
114 double f i t n e s s f u n c t i o n ( char [ ] Prog ) {
115 int i = 0 , len ;
116 double r e s u l t , f i t = 0 . 0 ;
117
118 len = t r a v e r s e ( Prog , 0 ) ;
119 for ( i = 0; i < f i t n e s s c a s e s ; i ++ ) {
120 for ( int j = 0 ; j < varnumber ; j ++ )
121 x [ j ] = t a r g e t s [ i ] [ j ] ;
122 program = Prog ;
123 PC = 0 ;
124 r e s u l t = run ( ) ;
125 f i t += Math . abs ( r e s u l t − t a r g e t s [ i ] [ varnumber ] ) ;
126 }
127 return(− f i t ) ;
128 }
129
130 int grow ( char [ ] buffer , int pos , int max, int depth ) {
131 char prim = ( char ) rd . nextInt (2) ;
132
133 i f ( pos >= max )
134 return ( −1 ) ;
135
136 i f ( pos == 0 )
137 prim = 1;
138
139 i f ( prim == 0 | | depth == 0 ) {
140 prim = ( char ) rd . nextInt ( varnumber + randomnumber ) ;
141 b u f f e r [ pos ] = prim ;
142 return ( pos+1) ;
143 }
144 else {
145 prim = ( char ) ( rd . nextInt (FSET END − FSET START + 1) +
FSET START) ;
146 switch ( prim ) {
147 case ADD:
148 case SUB: