Page 172 - 49A Field Guide to Genetic Programming
P. 172
158 B TinyGP
149 case MUL:
150 case DIV :
151 b u f f e r [ pos ] = prim ;
152 return ( grow ( buffer , grow ( buffer , pos+1, max, depth −1) ,
153 max, depth−1 ) ) ;
154 }
155 }
156 return ( 0 ) ; // should never get here
157 }
158
159 int p r i n t i n d i v ( char [ ] buffer , int buffercounter ) {
160 int a1=0, a2 ;
161 i f ( b u f f e r [ bu ffe rco unt er ] < FSET START ) {
162 i f ( b u f f e r [ bu ffe rco unt er ] < varnumber )
163 System . out . print ( ”X”+ ( b u f f e r [ b uffercounter ] + 1 )+ ” ”
) ;
164 else
165 System . out . print ( x [ b u f f e r [ bu ffercoun ter ] ] ) ;
166 return ( ++bu fferco unter ) ;
167 }
168 switch ( b u f f e r [ bufferc oun te r ] ) {
169 case ADD: System . out . print ( ” ( ” ) ;
170 a1=p r i n t i n d i v ( buffer , ++buffer count er ) ;
171 System . out . print ( ” + ” ) ;
172 break ;
173 case SUB: System . out . print ( ” ( ” ) ;
174 a1=p r i n t i n d i v ( buffer , ++buffer count er ) ;
175 System . out . print ( ” − ” ) ;
176 break ;
177 case MUL: System . out . print ( ” ( ” ) ;
178 a1=p r i n t i n d i v ( buffer , ++buffer count er ) ;
179 System . out . print ( ” ∗ ” ) ;
180 break ;
181 case DIV : System . out . print ( ” ( ” ) ;
182 a1=p r i n t i n d i v ( buffer , ++buffercounter ) ;
183 System . out . print ( ” / ” ) ;
184 break ;
185 }
186 a2=p r i n t i n d i v ( buffer , a1 ) ;
187 System . out . print ( ” ) ” ) ;
188 return ( a2 ) ;
189 }
190
191
192 static char [ ] b u f f e r = new char [MAX LEN] ;
193 char [ ] create random indiv ( int depth ) {
194 char [ ] ind ;
195 int len ;
196
197 len = grow ( buffer , 0 , MAX LEN, depth ) ;
198
199 while ( len < 0 )
200 len = grow ( buffer , 0 , MAX LEN, depth ) ;
201