Чтение о деревьях представления, почти все тексты содержат только числовые операторы, такие как плюс, минус, времена и т. Д. Однако некоторые из них случайно имеют «если есть» операторы. Я действительно запутался в том, является ли это общим для каждой версии деревьев представления или есть ли что-то только небольшое количество программ.Могут ли стандартные деревья представления в генетическом программировании (GP) содержать такие операторы, как если бы тогда?
0
A
ответ
0
В качестве одной из функций, разрешенных на деревьях, возможно использовать if
, но есть улов. Обычный if
принимает три входа: условие, затем-результат и другой результат. Очень часто они имеют разные типы - условие логическое, а результат then-result/else - это что-то другое (числовое). Если вы вставляете такой if
в свое дерево, вы разбиваете консистенцию типа - не каждое поддерево производит результат одного и того же типа. Это вызывает трудности, например, при кроссовере, поскольку вы не можете просто взять любое поддерево if
и заменить его на случайное поддерево от второго родителя - это может быть неправильный тип.
Так общие решения:
- либо сделать кроссовер/мутации операторы типа знают;
- или использовать какой-либо тип, соответствующий
if
; например, вы можете считатьif
функцией с 4 цифровыми входамиf(a, b, c, d)
, которая возвращаетc
, еслиa > b
иd
в противном случае. В этом случае все поддеревья все еще ожидали получить значения одного и того же типа, и никаких дополнительных попыток с кроссовером и мутацией не требуется. Конечно, вы можете упростить это до трех входовif
: returnb
, еслиa
положительный,c
в противном случае. Однако, насколько мне известно, этот подход часто рассматривается (по крайней мере в some literature, раздел 3.2.1) как «возможное введение непредвиденного смещения» и не рекомендуется по сравнению с 4-входомif
.
Смежные вопросы
- 1. Реализация кроссовера в генетическом программировании
- 2. Как использовать лучшего человека в генетическом программировании pyevolve
- 3. Динамическое число тестовых примеров в генетическом программировании?
- 4. Реальные числа (константы) в генетическом программировании
- 5. Разница в генетическом алгоритме и программировании ограничений?
- 6. Указатель на стандартные операторы C
- 7. Существуют ли стандартные или обычные операторы графа?
- 8. ASP MVC стандартные представления
- 9. Должны ли представления содержать ссылки на модели?
- 10. Могут ли элементы содержать блоки в bem
- 11. Какое влияние имеют вероятности кроссовера в генетических алгоритмах/генетическом программировании?
- 12. Могут ли операторы храниться в переменных?
- 13. Могут ли ключи доступа AWS содержать запятые?
- 14. Побитовые операторы в рубиновом программировании
- 15. Могут ли операторы использоваться как функции? (C++)
- 16. Могут ли операторы Ruby быть псевдонимом?
- 17. Операторы выделения синтаксиса, такие как *, ->
- 18. Как могут быть неассоциативные операторы типа «<» в грамматиках ANTLR4?
- 19. Могут ли названия моделей CakePHP содержать цифры?
- 20. Могу ли я заменить стандартные функции DOM, такие как removeChild?
- 21. Могут ли структуры содержать поля ссылочных типов
- 22. Почему побитовые операторы популярны в спортивном программировании
- 23. Могут ли значения NMEA содержать '*' (звездочки)?
- 24. Могут ли переключаться операторы внутри функции?
- 25. Как записи могут содержать курсор
- 26. Как бы вы создали модуль, который не требуется, например, стандартные методы, такие как chr, ord, inject?
- 27. Есть ли у R котировочные операторы, такие как qw() Perl?
- 28. Могут ли логические операторы используют хвост рекурсии
- 29. Можно ли использовать условные операторы, такие как if/then /, если это так в SQL?
- 30. Стандартные классы python, которые поддерживают математические операторы?
Несомненно. Почему бы не разрешить if-then (x) op. Функция фитнеса просто интерпретирует ген и производит число. Х может быть частью гена или части среды. – Ray