Я не уверен, что это действительно отвечает на ваш вопрос, но мое понимание текста, который вы цитировали, просто говорит, что mandel
функция - это просто другая функция (например, умножение, мин, макс, сложение и т. д.), которые могут появиться в вашей генетической программе.
Функция mandel
, как и функция умножения, принимает два аргумента (in_1
и in_2
) и возвращает одно значение. В то время как функция умножения просто возвращает in_1 * in_2
, функция Манделя может сделать что-то вроде этого :
int mandel(int in_1, int in_2) {
x = 0
y = 0
iteration = 0
max_iteration = 1000
while( x*x + y*y <= (2*2) && iteration < max_iteration ) {
xtemp = x*x - y*y + in_1
y = 2*x*y + in_2
x = xtemp
++iteration
}
if( iteration == max_iteration ) return 0
else return iteration
}
Если ваше целое дерево генетических программ состоит только из функции mandel
с одним входом в качестве x
и другим входом в качестве y
, то повторно оценивая вашу программу для набора различных значений (x,y)
и сохраняя результат даст вам хорошую картину множества Мандельброта.
Конечно, замечательная вещь в генетическом программировании состоит в том, что входные данные могут быть более изящными, чем просто x
и y
. Например, как бы выглядел результат, если бы один вход был x
, а другой - x + 2*y
? Или если один вход был x
, а другой был mandel(x,y)
?