¿Cómo combina Eureqa bloques de construcción matemáticos en ecuaciones?

Eureqa usa programación genética; Los bloques de construcción están organizados en un árbol (probablemente binario). Algo como esto:
Entonces, hay un nodo inicial (“raíz”) y una serie de nodos hijos, hasta los nodos inferiores, que no tienen hijos (y a menudo se les llama “hojas”). Entonces, esta es probablemente la estructura interna de las soluciones candidatas utilizadas por Eureqa: digo “probablemente”, porque Eureqa no es de código abierto, por lo que es difícil saberlo; sin embargo, seguramente es la estructura generalmente utilizada por la mayoría de los motores de programación genética.

Las soluciones candidatas se evalúan en el conjunto de datos proporcionado por el usuario: supongamos que en el caso anterior está buscando Z = f (X, Y). El árbol en la figura describe la ecuación:

Z = (2.2 – (X / 11)) + (7 * cos (Y))

Eureqa luego calcula los valores de Z usando esta solución candidata, y los compara con los valores correspondientes de Z en el conjunto de datos dado, usando la diferencia absoluta o la diferencia al cuadrado. Luego, resume la diferencia para cada punto en el conjunto de datos, y el número resultante se llama idoneidad de la solución candidata. Algo como:

fitness = sum_i (abs ((2.2 – (X / 11)) + (7 * cos (Y)) – Z_i))

donde Z_i es el i -ésimo punto en el conjunto de datos. Cuanto más cercano sea este ajuste a cero, mejor será la solución candidata.