Генетическое программирование
Генетическое программирование — автоматическое создание или изменение программ с помощью генетических алгоритмов, развитие парадигмы эволюционного программирования. С помощью этой методологии «выращиваются» программы, всё лучше и лучше (в соответствии с определённой функцией приспособленности для «хромосом») решающие поставленную вычислительную задачу.
Выбор способа кодирования программы в генетическом алгоритме — один из основных вопросов генетического программирования. Программа должна быть закодирована в таком виде, чтобы легко было автоматически вносить случайные изменения (оператор мутации) и объединять два алгоритма в один (оператор скрещивания).
Способы кодирования можно разделить на два класса:
- прямое кодирование — генетический алгоритм работает с программой в явном виде;
- косвенное кодирование — генетический алгоритм работает не с самим кодом программы, а с правилами его построения. То есть генетический алгоритм работает с программой, которая генерирует нужную нам программу.
Метагенетическое программирование — вариант генетического программирования, в котором изменяется и, тем самым, «выращивается», не только заданная компьютерная программа, но и сами применяемые операторы скрещивания
и мутации .Нейронные сети
[править | править код]Этот раздел не завершён. |
Древовидное
[править | править код]В древовидном кодировании каждый узел дерева содержит функцию, а каждый лист — операнд. Выражение, представленное в виде дерева, может быть легко рекурсивно посчитано. Традиционное ГП легче использовать для выращивания программ, написанных на языках, естественным образом воплощающих древовидную структуру: Lisp, Haskell, F# и других функциональных языках программирования.
Недревовидные представления программ также были предложены и успешно реализованы, например, линейное генетическое программирование, подходящее для традиционных императивных языков.
Оператор скрещивания
[править | править код]В древовидном представлении оператор скрещивания реализуется обменом между двумя деревьями какими-либо узлами вместе с их потомками (поддеревьями).
Пример:
individual.Children[randomChildIndex] = otherIndividual.Children[randomChildIndex];
Оператор мутации
[править | править код]В отличие от оператора скрещивания, оператор мутации затрагивает только одну хромосому. В древовидном представлении он может быть реализован изменением информации в узле или добавлением / удалением узла или целого поддерева. При этом надо следить за корректностью результатов оператора.
Пример:
individual.Information = randomInformation();
или
individual = generateNewIndividual();
Литература
[править | править код]- Banzhaf, W., Nordin, P., Keller, R.E., Francone, F.D. (1997), Genetic Programming: An Introduction: On the Automatic Evolution of Computer Programs and Its Applications, Morgan Kaufmann
- Cramer, Nichael Lynn (1985), «A representation for the Adaptive Generation of Simple Sequential Programs» in Proceedings of an International Conference on Genetic Algorithms and the Applications, Grefenstette, John J. (ed.), CMU
- Koza, J. R. (1990), Genetic Programming: A Paradigm for Genetically Breeding Populations of Computer Programs to Solve Problems, Stanford University Computer Science Department technical report STAN-CS-90-1314. A thorough report, possibly used as a draft to his 1992 book.
- Koza, J. R. (1992), Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press
- Koza, J. R. (1994), Genetic Programming II: Automatic Discovery of Reusable Programs, MIT Press
- Koza, J. R., Bennett, F.H., Andre, D., and Keane, M.A. (1999), Genetic Programming III: Darwinian Invention and Problem Solving, Morgan Kaufmann
- Koza, J. R., Keane, M. A., Streeter, M. J., Mydlowec, W., Yu, J., Lanza, G. (2003), Genetic Programming IV: Routine Human-Competitive Machine Intelligence, Kluwer Academic Publishers
- Langdon, W. B., Poli, R. (2002), Foundations of Genetic Programming, Springer-Verlag
- Poli, R., Langdon, W. B., McPhee, N. F. (2008), A Field Guide to Genetic Programming, Lulu.com, freely available from the internet ISBN 978-1-4092-0073-4
- Smith, S. F. (1980), A Learning System Based on Genetic Adaptive Algorithms, PhD dissertation (University of Pittsburgh)
- Сопов Е. А. (2004), Эволюционные алгоритмы моделирования и оптимизации сложных систем, диссертация на соискание учёной степени кандидата технических наук, Красноярск
Ссылки
[править | править код]- geneticprogramming.us
- Обзор методов эволюции нейронных сетей
- Генерирование автоматов состояний с помощью ГА
- www.genetic-programming.org
Для улучшения этой статьи желательно:
|