Добавить в корзинуПозвонить
Найти в Дзене

Искусственный муравейник в MATLAB: Создаем нейросетевой мозг муравья

Муравьи — удивительные существа. Поодиночке они довольно примитивны и хаотичны, но вместе создают сложные структуры, находят кратчайшие пути к еде и строят мегаполисы. Этот феномен называется эмерджентностью (появлением нового качества). Сегодня мы разберем, как создать модель поведения отдельного муравья, управляемого простой нейронной сетью, и запустить симуляцию в среде MATLAB. Наша цель — не использовать готовые алгоритмы оптимизации (ACO), а создать «живого» агента с нейро-мозгом. Анатомия цифрового муравья Чтобы смоделировать муравья, нам нужно определить его сенсоры (вход нейросети) и моторы (выход нейросети). 1. Сенсорная система (Входы) У нашего виртуального муравья будет два «усика»-сенсора. Они сканируют пространство перед агентом на наличие феромонов (запахового следа, оставленного другими муравьями) или еды. Обычно используется три точки сканирования относительно головы муравья: Левый сенсор (S_L): Угол -30 градусов. Центральный сенсор (S_C): Угол 0 градусов. Правый с

Муравьи — удивительные существа. Поодиночке они довольно примитивны и хаотичны, но вместе создают сложные структуры, находят кратчайшие пути к еде и строят мегаполисы. Этот феномен называется эмерджентностью (появлением нового качества).

Сегодня мы разберем, как создать модель поведения отдельного муравья, управляемого простой нейронной сетью, и запустить симуляцию в среде MATLAB. Наша цель — не использовать готовые алгоритмы оптимизации (ACO), а создать «живого» агента с нейро-мозгом.

Анатомия цифрового муравья

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

1. Сенсорная система (Входы)

У нашего виртуального муравья будет два «усика»-сенсора. Они сканируют пространство перед агентом на наличие феромонов (запахового следа, оставленного другими муравьями) или еды.

Обычно используется три точки сканирования относительно головы муравья:

Левый сенсор (S_L): Угол -30 градусов.

Центральный сенсор (S_C): Угол 0 градусов.

Правый сенсор (S_R): Угол +30 градусов.

Значения этих сенсоров (интенсивность запаха в данной точке карты) подаются на вход нейросети.

2. Нейросетевой контроллер (Мозг)

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

Архитектура сети:

Входной слой: 3 нейрона (сигналы с сенсоров).

Скрытый слой: 4-6 нейронов (для обработки нелинейностей). Функция активации — гиперболический тангенс (tanh) или сигмоида.

Выходной слой: 2 нейрона.

V: Линейная скорость (бежать быстро или медленно).

Delta \theta: Угловая скорость (повернуть влево или вправо).

3. Математика движения в MATLAB

В MATLAB мы не будем использовать сложные объекты. Муравей — это просто вектор координат.

Обновление позиции происходит по стандартной кинематической модели на каждом шаге времени t:

x_{t+1} = x_t + V \cdot \cos(\theta_t)

y_{t+1} = y_t + V \cdot \sin(\theta_t)

theta_{t+1} = \theta_t + \Delta \theta_{network}

Создание среды обитания (The World)

Среда в MATLAB — это обычная двумерная матрица. Нам понадобятся две карты:

Карта еды (FoodMap): Матрица, где 1 означает еду, 0 — пустоту.

Карта феромонов (PheromoneMap): Матрица типа double, где хранятся значения запаха.

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

PheromoneMap = PheromoneMap * 0.95;

Это означает, что на каждом шаге запах ослабевает на 5%.

Обучение: Как научить муравья быть умным?

Здесь кроется главная сложность. У нас нет «учителя», который скажет муравью: «Ты повернул направо, а надо было налево». Поэтому классический метод обратного распространения ошибки (Backpropagation) здесь не подходит.

Идеальный выбор для био-симуляций — Генетический алгоритм (Нейроэволюция).

Алгоритм действий:

Первичное население: Создаем 100 муравьев со случайными весами (W) нейросети.

Симуляция: Выпускаем их на карту на 1000 шагов.

Оценка (Fitness Function): Смотрим, кто из муравьев смог найти еду или подойти к ней ближе всех.

Селекция: Убиваем 50% худших (тех, кто просто крутился на месте).

Скрещивание и мутация: Лучшие муравьи «дают потомство». Мы берем веса их нейросетей, немного смешиваем и добавляем случайный шум (мутацию).

Повторение: Запускаем новое поколение.

Через 20-30 поколений вы увидите удивительную картину: муравьи перестанут бегать хаотично и начнут выстраиваться в четкие дорожки от гнезда к еде.

Реализация в MATLAB: Советы по коду

Поскольку MATLAB оптимизирован для матриц, старайтесь избегать циклов for при обновлении тысяч муравьев. Используйте векторизацию.

Вместо цикла по каждому муравью:

Matlab

% Плохо:

for i = 1:numAnts

ants(i).x = ants(i).x + speed;

end

Используйте матричные операции:

Matlab

% Хорошо:

% X - вектор X-координат всех муравьев сразу

% CosTheta - вектор косинусов углов всех муравьев

NewX = X + Speed .* CosTheta;

Для визуализации лучше всего использовать функцию imagesc для отрисовки карты феромонов (она работает очень быстро) и scatter для отображения самих агентов. Не забывайте команду drawnow limitrate для плавной анимации.

Почему это круто?

Создав такую модель, вы увидите, как из набора простых правил (3 сенсора + маленькая матрица весов) рождается сложное поведение.

Муравьи начнут:

Находить кратчайшие пути в обход препятствий.

Формировать устойчивые «магистрали».

«Забывать» источники еды, которые иссякли (благодаря испарению феромонов).

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