![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная / Каталог блогов / Cтраница блогера Flash Ripper | ru - flash, flex, air, swf, flv, mpeg4, fla, ruby / Запись в блоге
![]()
Генетические алгоритмы для флешеров2011-07-11 13:36:32 (читать в оригинале)Пишет makc3d: Итак, генетические алгоритмы для Давайте рассмотрим этот процесс на примере решения следующей простой задачи: в начале координат стоит пушка и стреляет под углом 45° снарядом с начальной скоростью v; т.е. уравнения движения снаряда имеют знакомый из школьного курса вид x = vt/√2 и y = vt/√2 - gt²/2. Необходимо найти такое значение v, при котором снаряд упадёт на заданном расстоянии. Эта задача легко решается в явном виде, но в целях этого поста представим себя очень ленивыми математиками и используем генетический алгоритм. Для этого мы создадим популяцию виртуальных существ, смысл жизни которых состоит в поиске решения нашей задачи. Каждая особь несёт в себе гены - информацию о соответствующем варианте решения. В нашем случае, геном будет просто значение скорости v. Мы устроим в нашей популяции селекцию, беспощадно истребляя самые неудачные особи. Для этого нам понадобится функция, которая помогла бы нам оценить, насколько близко произвольная особь подошла к решению нашей задачи - т.н. фитнес-функция. Этой функцией могло бы стать минимальное расстояние от заданной точки до траектории снаряда но, поскольку мы очень ленивые математики, мы возьмём модуль выстоты траектории над заданной точкой, т.к. его легче посчитать. И, наконец, чтобы восполнить потери популяции после кровавой бойни, мы позволим выжившим лучшим особям размножаться, обмениваясь генетическим материалом (т.н. кроссинговер - математики постеснялись назвать это сексом). В нашем примере новая особь получит в качестве гена среднюю скорость её родителей. Как и в реальном мире, хороших генов родителей может оказаться недостаточно - новая особь может оказаться хуже предков. Поэтому мы дополнительно подвергнем её гены мутации в надежде на лучший результат. Подытожим наш алгоритм: Посмотреть на результат его работы в действии можно тут. Пример максимально упрощён - для наглядности в популяции всего 3 особи. Каждая особь показана в виде соответствующей траектории снаряда. Размеры кружков на траекториях соответствуют значениям фитнесс-функции (в идеале - ноль). Красная траектория - худшая в данной итерации (соответствующая особь убивается), зелёные соответствуют родителям, синяя - новой особи. Со временем скорость симуляции увеличивается, чтобы дать почуствовать динамику процесса. Щелчком мышки можно задать новую цель.
|
![]() ![]()
Категория «Здоровье»
Взлеты Топ 5
Падения Топ 5
![]()
Популярные за сутки
|
Загрузка...

взяты из открытых общедоступных источников и являются собственностью их авторов.