Генетический алгоритм Прыжки Кошки онлайн на Intellect

Воспользовались 520 раз
Генетический алгоритм Прыжки Кошки онлайн

Генетический алгоритм Прыжки Кошки

Кошка пытается прыгнуть с исходной платформы на красную цель. Геном управляет моторами суставов лап, корпуса и хвоста; лучшие попытки попадают в пул отбора и дают потомков.

Настройки мутации ДНК

Текущая кошка

Попытка: 1 Кадр: 0 Текущий счет: 0.00 Лучший счет: 0.00

Лучшие попытки

ПопыткаСчетЦелейДальностьВысотаДНК - Параметры суставов

Поделиться:



Помог ли вам этот ответ?
Нажмите оценку и напишите коротко почему. Так мы сможем сделать следующие ответы точнее и полезнее.
Насколько вы довольны ответом?
Ваш отзыв напрямую влияет на качество следующих подсказок и ответов.


Ваш вариант ответа для данного сервиса или заметили ошибку:

Генетический алгоритм Прыжки Кошки онлайн - это интерактивный симулятор, в котором виртуальная кошка учится прыгать по платформам. Инструмент подходит для демонстрации эволюционных алгоритмов, подбора параметров движения, обучения через отбор и визуального изучения того, как случайные мутации постепенно могут приводить к более удачному поведению.
Возможности инструмента:

  • запуск физической симуляции прыжка кошки прямо в браузере;

  • сохранение контуров тела кошки из исходной модели: голова, шея, верхний и нижний корпус, передние и задние лапы, пальцы и хвост;

  • расчет движения через встроенную физику: гравитация, инерция, трение, столкновения с платформами и ограничения суставов;

  • управление суставами через геном: каждый активный сустав получает параметры периодического моторного движения;

  • генерация бесконечной цепочки целевых платформ: когда кошка достигает текущей цели, создается следующая платформа;

  • таблица лучших попыток с оценкой, дальностью, высотой и количеством достигнутых целей;

  • настройка вероятности мутации, силы мутации, размера пула лучших решений, длины попытки и скорости симуляции;

  • пауза, ручной переход к следующей кошке и полный сброс обучения.




В данном инструменте генетический алгоритм улучшает не сами прижки кошки, а параметры движения суставов.
Конкретно меняются параметры для каждого активного сустава:
- time_factor - частота/темп движения сустава.
- time_shift - фазовый сдвиг, то есть в какой момент цикла сустав начинает движение.
- cos_factor - сила и направление моторного движения.
- forward_push - насколько сильно лапа толкает тело вперед при контакте пальца с платформой.
- lift_push - насколько сильно лапа поднимает корпус вверх при отталкивании.
- target_sense - насколько сустав усиливает движение, когда кошка приближается к текущей цели.
- target_window - расстояние до цели, на котором включается это усиление.
Это создаётся в randomChromosome() и потом хранится в геноме:
Движение считается так:
speed = gene.cos_factor * targetBoost * Math.cos(gene.time_factor * frame + gene.time_shift)
impulse = clamp(speed / 700, -0.075, 0.075)
То есть каждый ген задаёт периодическое моторное усилие для конкретного сустава, а targetBoost делает движение сильнее рядом с целевой платформой. Это применяется в applyMotors():
Что “улучшается” от поколения к поколению:
- Координация лап: какие суставы сгибаются/разгибаются, с какой фазой и силой.
- Момент толчка пальцами лап от платформы.
- Подъём корпуса вверх при контакте пальца с землёй.
- Продвижение upper_torso вперёд.
- Высота прыжка.
- Способ попадания на целевую платформу.
Оценка считается в updateScore():
Формула примерно такая:
score = sqrt(maxX^2 + maxY^2) + proximityBonus + targetsReached * 12 - stabilityPenalty - fallPenalty
То есть алгоритм предпочитает кошек, которые:
- ушли дальше вправо (maxX);
- прыгнули выше (maxY);
- приблизились к текущей целевой платформе, даже если еще не долетели до нее;
- достигли больше целевых платформ (targetsReached, большой бонус * 12);
- меньше кувыркаются корпусом и не проваливаются вниз.
После попытки геном сохраняется в genePool, пул сортируется по score, и остаются лучшие. Пул лучших попыток также сохраняется в localStorage браузера, поэтому обучение можно продолжить после перезагрузки страницы. При нажатии "Сбросить обучение" очищается и текущий пул, и сохранение в localStorage.
Новый геном делается так:
- выбираются 2 родителя из лучших попыток;
- для каждого гена случайно берётся версия от одного из родителей;
- отдельные параметры мутируют умножением на случайный коэффициент;
- значения ограничиваются диапазонами.
Это в makeGenome() и copulate().
Итог: алгоритм “учит” кошку не напрямую прыгать, а подбирает ритм, фазу и силу моторных импульсов в суставах. Лучшие комбинации дают больше продвижения, высоты и
попаданий на платформы, поэтому они чаще наследуются.


Краткая теория генетического алгоритма:
Генетический алгоритм - это метод поиска решения, вдохновленный естественным отбором. Сначала создаются случайные варианты решения. В этой модели один вариант решения - это геном кошки, то есть набор числовых параметров для моторных суставов. После попытки симулятор считает качество результата: насколько далеко и высоко смогла продвинуться кошка, сколько целевых платформ она достигла. Лучшие геномы попадают в пул отбора. Новая кошка создается скрещиванием двух родительских геномов: часть параметров берется от одного родителя, часть - от другого. Затем применяется мутация, которая немного меняет отдельные параметры. Благодаря этому алгоритм не просто повторяет старые движения, а исследует новые варианты прыжка.
Как работает физическая модель:
Тело кошки состоит из отдельных полигональных частей. Между ними заданы суставы с допустимыми углами. На каждом шаге симуляции на тела действует гравитация, сохраняется инерция, обрабатывается контакт с платформами и корректируются суставные ограничения. Пальцы лап имеют повышенное сцепление с поверхностью, поэтому удачное положение лап может дать толчок. Это не видео и не заранее записанная анимация: форма прыжка появляется из взаимодействия генома, физики и платформ.
Подробно о настройках:

  • Вероятность мутации - шанс, что отдельный параметр гена будет изменен при создании новой кошки. Низкие значения делают обучение стабильнее, но медленнее. Высокие значения дают больше экспериментов, но чаще ломают уже найденные удачные движения.

  • Сила мутации - насколько сильно изменяется выбранный параметр. Маленькая сила подходит для тонкой настройки прыжка. Большая сила полезна, если популяция застряла и кошки повторяют похожие неудачные движения.

  • Размер пула лучших - сколько лучших попыток хранится для отбора родителей. Малый пул быстрее закрепляет сильные решения, но повышает риск однообразия. Большой пул сохраняет разнообразие генов и помогает находить неожиданные стратегии.

  • Время на перепрыгивание - сколько кадров(времени) длится одна попытка перед оценкой и переходом к следующей кошке. Короткая попытка ускоряет обучение, но может не дать времени на сложный прыжок. Длинная попытка полезна для прохождения нескольких платформ подряд.

  • Скорость симуляции - количество физических шагов в секунду. Большая скорость быстрее перебирает поколения, но сильнее нагружает процессор. Значение "Пауза" останавливает расчет, сохраняя текущее состояние.

  • Пауза / Продолжить - временно останавливает или возобновляет эволюцию без сброса текущей кошки.

  • Следующая кошка - завершает текущую попытку вручную, сохраняет ее результат в пул и запускает новую кошку.

  • Сбросить обучение - очищает пул лучших генов и начинает обучение заново со случайной кошки.


Как читать результаты:
Показатель "Счет" учитывает дальность, высоту прыжка, приближение к текущей платформе, штраф за нестабильный переворот и бонусы за достигнутые целевые платформы. "Целей" показывает, сколько платформ кошка успешно прошла за попытку. "Дальность" показывает максимальное продвижение вперед, а "Высота" - максимальный подъем относительно начального положения. В таблице лучших попыток колонка "ДНК - Параметры суставов" показывает полный набор параметров каждого активного сустава. По умолчанию видна только верхняя часть списка, чтобы таблица не перегружалась; кнопка "Показать все" раскрывает весь геном, а "Копировать" копирует JSON с параметрами суставов и исходным массивом генома для переноса результата. Если кошка научилась стабильно попадать на цель, следующая платформа появляется дальше, поэтому задача постепенно становится похожей на бесконечный платформер.

Комментарии

Оставить комментарий

Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply