Добавление нелинейной функции TinyGp

Я пытаюсь расширить набор функций программного обеспечения TinyGP, включив в него нелинейные функции, такие как sin, cos и tan. Проблема заключается в том, чтобы вырастить дерево с помощью функций, которые принимают один параметр, и выполнить пересечение дерева, содержащего функции с одним параметром.
Исходный код метода печати приведен ниже.

int grow( char [] buffer, int pos, int max, int depth ) 
{
char prim = (char) rd.nextInt(2);
int one_child;

if ( pos >= max ) 
  return( -1 );

if ( pos == 0 )
  prim = 1;

if ( prim == 0 || depth == 0 ) {
  prim = (char) rd.nextInt(varnumber + randomnumber);
  buffer[pos] = prim;
  return(pos+1);
  }
else  {
  prim = (char) (rd.nextInt(FSET_END - FSET_START + 1) + FSET_START);
  switch(prim) {
  case ADD: 
  case SUB: 
  case MUL: 
  case DIV:
    buffer[pos] = prim;
one_child = grow( buffer, pos+1, max,depth-1);
if ( one_child < 0 ) 
    return( -1 );
    return( grow( buffer, one_child, max,depth-1 ) );
  }
}
return( 0 ); // should never get here

}

0 ответов

Другие вопросы по тегам