- •77. Нечеткие множества и лингвистические переменные. Операции над нечеткими множествами.
- •78. Нечеткие алгоритмы. Общие принципы построения нечетких алгоритмов управления динамическими объектами.
- •79. Процедура синтеза нечетких регуляторов. Синтез адаптивной сау с эталонной моделью на основе нечеткой логики. Нечеткий регулятор Такаги-Сугено.
- •80. Моделирование нейронов мозга. Многослойные персептроны. Алгоритмы обучения. Задача аппроксимации функции.
- •81. Архитектуры нейронных сетей: радиально-базисные сети; нейронные сети Хопфилда; нейронные сети Кохонена; рекуррентные нейронные сети.
- •82. Общие принципы построения нейросетевых систем управления динамическими объектами. Применение нейронных сетей в задачах идентификации динамических объектов.
- •83. Стандартный генетический алгоритм. Пример оптимизации с помощью генетического алгоритма. Модификации генетических алгоритмов и особенности их применения.
- •84. Генетическое программирование. Особенности реализации генетического программирования. Практические примеры построения систем управления с использованием генетических алгоритмов.
84. Генетическое программирование. Особенности реализации генетического программирования. Практические примеры построения систем управления с использованием генетических алгоритмов.
В искусственном интеллекте генетическое программирование (ГП) — автоматическое создание или изменение программ с помощью генетических алгоритмов. С помощью этой методологии «выращиваются» программы всё лучше и лучше (в соответствии с определенной функцией приспособленности для хромосом), решающие полученную компьютерную задачу.
Кодирование алгоритма
Выбор способа кодирования программы в генетическом алгоритме — один из основных вопросов генетического программирования. Программа должна быть закодирована в таком виде, чтобы легко было автоматически вносить случайные изменения (оператор мутации) и объединять два алгоритма в один (оператор скрещивания).
Способы кодирования можно разделить на два класса:
Прямое кодирование — генетический алгоритм работает с программой в явном виде.
Косвенное кодирование — генетический алгоритм работает не с самим кодом программы, а с правилами его построения. То есть генетический алгоритм работает с программой, которая генерирует нужную нам программу.
Древовидное
Функция, представленная в древовидной форме
В древовидном кодировании каждый узел дерева содержит функцию, а каждый лист — операнд. Выражения, представленное в виде дерева может быть легко рекурсивно посчитано. Традиционное ГП легче использовать для выращивания программ, написанных на языках, естественным образом воплощающих древовидную структуру. Имеются в виду Lisp, Haskell, F# и другие функциональные языки программирования.
Недревовидные представления программ также были предложены и успешно реализованы, например линейное генетическое программирование, подходящее для традиционных императивных языков.
Оператор скрещивания
Оператор скрещивания для древовидного представления программ
В древовидном представлении оператор скрещивания реализуется обменом между двумя деревьями какими-либо узлами вместе с их потомками (поддеревьями).
Пример:
individual.Children[randomChildIndex] = otherIndividual.Children[randomChildIndex];
Оператор мутации
Оператор мутации в отличие от оператора скрещивания затрагивает только одну хромосому. В древовидном представлении он может быль реализован изменением информации в узле или добавлением, удалением узла или целого поддерева. При этом, конечно, надо следить за корректностью результатов оператора.
Пример:
individual.Information = randomInformation();
или
individual = generateNewIndividual();
[править]
Метагенетическое программирование
Метагенетическое программирование — это ГП, в котором изменяется и, тем самым, «выращивается» не только заданная компьютерная программа, но и сами применяемые операторы скрещивания и мутации.