Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gromov_I_A__Norin_A_V_FINAL.doc
Скачиваний:
8
Добавлен:
24.09.2019
Размер:
2.65 Mб
Скачать

2.1. Описание алгоритма миграции

В предыдущих пунктах были детально рассмотрены все слагаемые правой части формулы , кроме , которое отвечает за миграцию особей. В качестве алгоритма, по которому будет подсчитываться , используем метод размытия изображения по Гауссу (gaussianblur— рис. 1) и некоторые его модификации. Алгоритм удовлетворяет основному требованию моделирования миграции особей: стремлению к экспансии.

Рис. 1. Метод размытия Гаусса

Основа алгоритма в среде программы состоит в следующем: каждый последующий шаг времени (далее итерация) значение клетки поля вычисляется, как средневзвешенное для окрестности в виде квадрата (для непрерывного случая это был бы круг определённого радиуса, но в дискретном приближении достаточно и квадрата со стороной , потеря в точности после 2-3 итераций не наблюдается).Получаем следующую формулу

(3)

где — коэффициент матрицы весов, являющийся соответствующим значением распределения Гаусса:

где — размерность пространства, для двумерного дискретного случая имеем:

При сумма (3) элементов матрицы равна единице, однако, т.к. рассматривается окрестность точки , отлична от бесконечности, необходима перенормировка матрицы. Формула (3) примет следующий вид:

(4)

Таким образом, на пустом поле (без препятствий) особи будут мигрировать согласно этой формуле.

Теперь рассмотрим случай, когда поле миграции связано с ландшафтом. Суть ландшафтной карты в данной модели такова — существуют труднопроходимые участки (например, горы или леса), на которые при прочих равных условиях попадёт меньше особей (другими словами, эти участки являются менее приоритетными) и непроходимые участки (например, океан). Соответственно, вместе с уменьшением числа попавших особей на клетку, замедлится скорость их распространения, что как раз и приводит к неравномерному «пятну», которое мы можем наблюдать на рис. 2.

Рис 2. Миграция с препятствиями

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

Рис. 3.Конвертирование фрагмента карты

Произведём замену весов:

Формула (4) примет вид

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

Рассмотренный метод Гаусса вычисляется за , где и — размеры матрицы. Такое двумерное преобразование может быть приведено к сумме двух одномерных со сложностью каждое. Преобразование допустимо за счёт линейной сепарабельности метода Гаусса (linearlyseparable). Смысл состоит в следующем: сначала одномерным преобразованием проходятся строки матрицы, затем столбцы. Оба методы реализованы в программе (blur2D и blur1D).

Основу логической части выполнения программы составляет следующая схема (рис. 4)

Рис. 4. Схема логической части

где под миграцией понимается logic.Field.migrate(), как вычисление коэффициентов формулы (4), а под конкуренцией —logic.Field.complete(), как вычисление коэффициентов группы «конкуренция» из формулы (2).