0

Чтение о деревьях представления, почти все тексты содержат только числовые операторы, такие как плюс, минус, времена и т. Д. Однако некоторые из них случайно имеют «если есть» операторы. Я действительно запутался в том, является ли это общим для каждой версии деревьев представления или есть ли что-то только небольшое количество программ.Могут ли стандартные деревья представления в генетическом программировании (GP) содержать такие операторы, как если бы тогда?

+0

Несомненно. Почему бы не разрешить if-then (x) op. Функция фитнеса просто интерпретирует ген и производит число. Х может быть частью гена или части среды. – Ray

ответ

0

В качестве одной из функций, разрешенных на деревьях, возможно использовать if, но есть улов. Обычный if принимает три входа: условие, затем-результат и другой результат. Очень часто они имеют разные типы - условие логическое, а результат then-result/else - это что-то другое (числовое). Если вы вставляете такой if в свое дерево, вы разбиваете консистенцию типа - не каждое поддерево производит результат одного и того же типа. Это вызывает трудности, например, при кроссовере, поскольку вы не можете просто взять любое поддерево if и заменить его на случайное поддерево от второго родителя - это может быть неправильный тип.

Так общие решения:

  • либо сделать кроссовер/мутации операторы типа знают;
  • или использовать какой-либо тип, соответствующий if; например, вы можете считать if функцией с 4 цифровыми входами f(a, b, c, d), которая возвращает c, если a > b и d в противном случае. В этом случае все поддеревья все еще ожидали получить значения одного и того же типа, и никаких дополнительных попыток с кроссовером и мутацией не требуется. Конечно, вы можете упростить это до трех входов if: return b, если a положительный, c в противном случае. Однако, насколько мне известно, этот подход часто рассматривается (по крайней мере в some literature, раздел 3.2.1) как «возможное введение непредвиденного смещения» и не рекомендуется по сравнению с 4-входом if.
Смежные вопросы