Ну заяц погоди! Часть 3. Эволюция

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

Подробное описание создания модели в первой части статьи здесь…

Изначально заяц бегал по кругу, а волк гонялся за ним. На первом этапе мы сделали простую систему, на втором этапе мы ее усовершенствовали (усложнили). Чем не пример эволюции в технических системах?

1-я стадия. Прицеливание по текущему положению цели. 

2-я стадия. Прицеливание с упреждением, более сложная система и при этом сокращается время перехвата.

Рисунок 1. Два варианта прицеливания
Рисунок 1. Два варианта прицеливания
Рисунок 2. Два результата погони
Рисунок 2. Два результата погони

Эти две простые модели являются наглядным примером развития систем — эволюции, которая работает как в живой природе, так в науке и технике. Мы берем работающую систему и делаем ее лучше. И потом та система, которая лучше, остается, а вторая система, которая хуже, отмирает. Волк, который, используя упреждение, быстрее ловит зайца, меньше устает и лучше питается. Логично.

Казалось бы, вариант с упреждением всегда лучше, тем более мы даже на артиллерийском снаряде его проверили. 

Но не все так однозначно. 

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

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

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

Похоже, у нас появилась задача для дальнейшей эволюции нашей системы прехвата.

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

Давайте добавим к линейной зависимости, которая формулирует нам угол поворота, случайный шум нормального распределения. Этот шум будет влиять на углы для расчета координат зайца Х и Y. Если сделать «Среднеквадратичное отклонение» достаточно малым, например 0.02, то заяц будет прыгать хаотично, но достаточно близко вокруг круговой траектории. Моделируя поведение реального зайца, который сам не знает, куда он прыгнет.  Таким образом мы добавляем случайный шум в исходно гладкий процесс.

Рисунок 3. Добавляем зайцу безбашенности
Рисунок 3. Добавляем зайцу безбашенности

Чтобы можно было подключать и отключать шумы (хаотические прыжки зайца), используем блок выключатель, который подключен к блоку перемножения вектора на число. (вектор здесь используется поскольку у нас два числа X и Y). Такая схема, при переключение обеспечивает обнуление шумов, и траектория движения становится гладкой.

Запускаем на расчет и видим, что теперь наш заяц бежит в принципе по кругу, но при этом хаотически скачет из стороны в сторону, каждую секунду. Сигнал изменяется по синусоиде, но в нем присутствуют шумы.

Рисунок 4. Координаты скачущего зайца во времени и его траектория
Рисунок 4. Координаты скачущего зайца во времени и его траектория

Как мы помним, в предыдущей части для расчета упреждения мы используем текущее положения цели и ее положение 1 секунду назад. Несложно догадаться, что при таких скачках такой алгоритм определения упреждения будет выдавать нам полный бред. И моделирование это подтверждает:

Рисунок 5. Сбой системы наведения при хаотических прыжках зайца вокруг траектории
Рисунок 5. Сбой системы наведения при хаотических прыжках зайца вокруг траектории

Анимация показывает, что иногда направление упреждения бывает противоположно движении цели, и наша усовершенствованная система наведения дает сбой.  Поставим расчет на паузу. Отключим учет упреждения и, тем самым, перейдем на упрощенное наведение по положению. Не зря мы модель делали с учетом такой возможности!  

Вырубаем ключ, и упреждение становится равным 0. Точка прицеливания совпадает с текущим положением цели.

Рисунок 6. Отключение упреждения в системе наведения
Рисунок 6. Отключение упреждения в системе наведения

 Продолжим расчет с отключённым упреждением. И что мы видим? Если осуществлять наведение по текущему положению зайца, то волк начинает более целенаправленно преследовать зайца и несмотря на все хаотичные прыжки все-таки настигает зайца, хотя для этого ему приходится сделать почти полный круг:

Рисунок 7. Перехват без упреждения скачущей цели
Рисунок 7. Перехват без упреждения скачущей цели

На этом месте можно сделать промежуточный вывод, что не во всех режимах усложнение системы повышает ее качество. Иногда простое решение помогает там, где не справляется сложное. Здесь у нас наглядный пример того, как эволюция может поворачиваться вспять. Волки, которые не используют в системе упреждение, имеют больше шансов на выживание с такими безбашенными зайцами. Наша «простая» система, которая обеспечивает перехват в обоих условиях (с шумами и без шумов), получается лучше «сложной» системы, которая на наших глазах отказывает.

И в естественной природе есть немало примеров, когда биологические виды после усложнения на каком-то этапе начинали упрощаться и деградировать, подстраиваясь под изменение окружающей среды. И даже в человеческой истории есть немало примеров, когда происходил откат, и развитая цивилизация сменялась варварством, а некоторые племена забывали почти все свои достижения и умения. «Прости нас Юра мы все просрали!» 

Но прогресс в целом все равно не остановить, и особенно прогресс в технических системах. Если мы уже получили новые «хорошие» свойства системы, а именно — ускорение перехвата за счет упреждения, то нет никакого желания от этого отказываться! Деградировать, конечно, легко и приятно, но это не наш метод.  Поэтому давайте сделаем следующий шаг эволюции в технической системе и научим систему перехвата учитывать появление случайных скачков зайца. 

Мы применим простейшую фильтрацию сигнала с помощью инерционного звена первого порядка. Для иллюстрации работы данного звена пропустим через него координаты прыгающего зайца и сравним результаты на одном графике:

Рисунок 8. Применение фильтрации к координатам зайца
Рисунок 8. Применение фильтрации к координатам зайца

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

Добавляем фильтр в систему наведения после расчета скорости цели, заодно добавим ключ для включения и отключения фильтрации.

Рисунок 9. Модификация системы наведения
Рисунок 9. Модификация системы наведения

После введения фильтрации наша система наведения с упреждением заработала! Несмотря на колебания в линии прицеливания, волк осуществляет перехват петляющего зайца, и появление отставания в фильтрованном сигнале практически не отразилось на точности наведения.

Рисунок 10. Сравнение простого перехвата и перехвата с упреждением и фильтрацией 
Рисунок 10. Сравнение простого перехвата и перехвата с упреждением и фильтрацией 

Видео с демонстрацие модели:

Итак, мы наглядно показали на нашей модели процесс эволюции систем, когда изменения внешних условий требуют изменения алгоритма управления. 

Здесь мы видим два возможных пути:

1) упрощение и деградация.

2) усложнение и дальнейшее развитие алгоритмов системы перехвата. Наша система, изменяясь, становится сложнее и совершеннее. 

Прогресс не остановить!

Подписывайтесь на канал Технолог Петухов там больше секретной информации и без цензуры.

А я уже почти собрал модель полета на Луну, скоро на хабре, не перключайтесь.

© Habrahabr.ru