Генетические алгоритмы — относительно старая концепция для построения интеллектуальных систем. Ещё в прошлом веке ученые производили эксперименты с использованием генетических алгоритмов. В основном эти эксперименты были связаны с симуляцией эволюционных процессов, то есть естественного отбора.
Основная идея генетических алгоритмов заключается в том, чтобы искать решение задачи, симулируя эволюционный процесс. Пусть у нас есть какое-то неоптимальное решение задачи (с точки зрения эволюции, решение — это биологический вид), тогда эволюция может мутировать данный вид, получая новый вид, похожий на старый, а если имеется несколько видов, то эволюция может скрещивать их, также получая новые виды, которые берут "лучшее" от родителей. Ниже мы расскажем, что означают эти термины.
Каждый вид (решение задачи) описывается некоторым набором параметров, например, человека можно описать, указав его рост, вес, образование, пол и т.д.. Или велосипед можно описать размером колес, расстоянием между ними, высотой рамы и т.д.
Мутировать вид — означает частично изменить его случайным образом. Мы берём вид, выбираем небольшое множество его параметров и заменяем их на другие, обычно, случайные. Например, пусть у нас есть программа, которая играет в шашки. Параметры описывают все возможные ходы, которые может совершить данная программа. Мы можем рассмотреть её ход в определенной ситуации и изменить его на случайный, таким образом получив новую программу.
Скрестить виды — означает по двум или более видам получить новый, который будет обладать свойствами всех его родителей. Например, мы берем две программы A и B, играющие в шашки, каждой из которых предписаны действия в каждой игровой ситуации. Затем мы делим все игровые ситуации на две части и создаём новую программу C: в первой половине ситуаций программа C будет вести себя как A, а во второй — как B.
Сам же генетический алгоритм работает следующим образом. Пусть у нас есть некоторая задача, которую нужно научиться решать, например, играть в какую-нибудь игру или торговать чем-то, или водить машину. Сначала мы каким-нибудь образом генерируем первое поколение, т. е. набор видов, очень часто это делается случайным образом. Затем отбираем из первого поколения несколько видов, которые лучше всех решают задачу, и скрещиваем их между собой, а некоторые — мутируем. Полученный набор видов мы считаем вторым поколением, и так далее. Эвристическая идея заключается в том, что таким образом постепенно будут отбираться всё более и более приспособленные виды, которые будут всё лучше решать поставленную перед ними задачу.
В следующем шаге мы предлагаем вам посмотреть видео, на котором демонстрируется процесс эволюции игрушечных автомобилей. Их задача — проехать как можно дальше. С самого начала есть несколько основных частей: кругов и прямоугольников, которые случайным образом соединяются вместе. То, как выглядят эти части и как между собой соединяются и является нашими параметрами, который мы будем подбирать. Созданные случайным образом "франкенштейны" начинают пытаться двигаться и преодолевать препятствия. Каждый раз в некоторый промежуток времени оставляют одну лучшую машинку, делают несколько её мутаций и запускают её как новое поколение. Оригинальную машинку для текущего поколения всё время показывают справа внизу.
✔ Не забываем ставить лайк и подписываться на мой канал: https://dzen.ru/lecturer_abramenkova?share_to=link
Впереди много познавательного!
✔ Будем дружить https://vk.com/lecturer_abramenkova
Благодарю каждого за репост!)