MATLAB - Кривые преследования (Хищник / Добыча)

В моем инженерном классе мы программируем "нетривиальную" проблему преследования хищника / добычи.

Вот суть ситуации: есть жертва, которая пытается убежать от хищника. Каждый может быть смоделирован как частица, которая может быть анимирована в MATLAB (мы должны использовать этот язык кодирования).

Хищник: может маневрировать (поворачиваться) легче, чем хищник. Хищник: может двигаться быстрее, чем жертва.

Я должен создать код как для хищника, так и для жертвы, который будет использоваться на соревнованиях в классе.

Вот как будет выглядеть конечный продукт: http://www.brown.edu/Departments/Engineering/Courses/En4/Projects/pred_prey.gif

Цель состоит в том, чтобы поймать жертву другой команды в кратчайшие сроки, и чтобы моя жертва стала неуловимой для хищника другой команды (или, по крайней мере, сбежала в течение длительного периода времени).

Вот конкретные конструктивные ограничения: 3. Конструктивные ограничения: Хищник и жертва могут двигаться только в плоскости xy. Симуляции будут выполняться в течение 250 секунд. И хищник, и жертва будут подвергаться воздействию трех сил: а) движущей силы; (б) вязкая сила сопротивления; и (c) случайная изменяющаяся во времени сила. (все уравнения приведены) 1. Силы движения будут определяться функциями, предоставляемыми двумя конкурирующими группами. Предполагается, что хищник поймает добычу, если расстояние между хищником и добычей упадет ниже 1 м. Вы не можете использовать функцию rand() для вычисления ваших сил хищника / жертвы - единственными случайными силами должны быть те, которые генерируются предоставленным сценарием. (EOM со случайными силами невозможно интегрировать с помощью решателя ODE, и это заканчивается бесконечным циклом). Для соревнований мы предоставим код MATLAB, который будет вычислять и анимировать траектории участников и определять победителя каждого соревнования. Тестовый код будет работать в единицах СИ.

Я ищу любые ресурсы, которые могут помочь мне с определенной стратегией. Я посмотрел на основные кривые преследования, но я хотел бы взглянуть на некоторые примеры, когда добыча не движется по прямой линии. Любые другие советы или стратегии кодирования будут с благодарностью!

1 ответ

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

Отличная книга Стивена Лавалла " Планирование движения" имеет ряд аспектов, которые могут представлять интерес, включая раздел об уклонении от преследования на основе видимости.

Что касается многих математических тем, в Wolfram Mathworld есть несколько хороших диаграмм и ссылок, которые могут заставить вас думать в правильном направлении (например, Кривые преследования).

Если вы хотите взглянуть на любопытную проблему в хорошо понятной области, попробуйте проблему с убийцей шофера - это, по крайней мере, даст вам некоторые основания для сравнения сложности / эффективности различных методов. В частности, это, вероятно, хороший способ почувствовать методы установки уровней (статья Homicidal Chaueur Game. Вычисление наборов уровней для функции значения Пацко и Туровой, по-видимому, имеет ряд изображений, которые могут оказаться полезными)

Другие вопросы по тегам