Модуль III·Статья I·~3 мин чтения

Агентное моделирование: от клеточных автоматов до ABM

Агентное моделирование и имитация

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Агентное моделирование: от клеточных автоматов до ABM

Агентное моделирование — вычислительный подход к изучению сложных систем «снизу вверх»: задаём правила поведения отдельных агентов и наблюдаем эмерджентное поведение системы. Этот подход позволяет изучать системы, для которых уравнения слишком сложны или неизвестны.

Клеточные автоматы (CA)

Модель: сетка ячеек, каждая в одном из конечных состояний. Дискретное время. Следующее состояние ячейки = функция состояний соседей. Формально: sₜ₊₁(i,j) = f(sₜ(N(i,j))), где N(i,j) — соседство ячейки (i,j).

Игра «Жизнь» Конвея (1970): 2 состояния (живой/мёртвый), 8 соседей (Мур). Правила: живая с 2-3 соседями → выживает; с <2 → умирает (одиночество); с >3 → умирает (перенаселение); мёртвая с 3 соседями → оживает. Простые правила → невероятное разнообразие: глайдеры, осцилляторы, паттерны роста, самовоспроизводящиеся структуры (доказано).

Правило 30 и правило 110 Вольфрама: одномерные CA с 3 соседями, 8 возможных конфигураций → 2⁸ = 256 правил. Правило 110 — доказанно Тьюринг-полное. Вольфрам («A New Kind of Science», 2002): сложные системы природы работают как CA.

Агентное моделирование (ABM)

ABM обобщает CA: агенты гетерогенны (разные параметры и состояния), движутся в пространстве, взаимодействуют локально, могут обучаться. ABM = «виртуальная лаборатория» для социальных, биологических и экономических систем.

Модель Шеллинга (1971) — сегрегация из умеренных предпочтений:

Сетка 20×20 клеток. Агенты двух типов (красные и синие), ≈40% клеток пустые. Правило: агент доволен, если ≥30% его соседей одного с ним цвета; иначе — переезжает на случайную пустую клетку.

Результат после симуляции: несмотря на очень умеренные предпочтения (30%), возникает сильная сегрегация — однородные кластеры. «Умеренные индивидуальные предпочтения создают сильный коллективный паттерн» — классический пример эмерджентности.

Математический анализ: если p — минимальный желаемый процент «своих», то сегрегация индекса достигает ≈ (1−2p)/2 при p ∈ [0, 0.5]. При p = 0.3: индекс ≈ 0.35 (значительная сегрегация).

Модели птичьих стай Boids (Reynolds, 1987):

Агенты (птицы) следуют трём простым правилам:

  1. Разделение (separation): избегай соседей ближе r₁ (избегание столкновений)
  2. Выравнивание (alignment): лети в среднем направлении соседей (r₁ < r₂)
  3. Сплочение (cohesion): лети к центру масс соседей (r₂ < r₃)

Результат: реалистичные рои птиц, косяки рыб, стаи насекомых — без лидера, без центрального управления. Используется в кино (Batman Returns, 1992 — летучие мыши), видеоиграх.

SUGARSCAPE (Эпштейн-Акстель, 1996):

Агенты ищут «сахар» (ресурсы) на двумерном поле с неравномерным распределением. Каждый агент: обмен зрения (дальность поиска), уровень метаболизма. Результаты: распределение богатства → степенной закон (Парето), торговля улучшает благосостояние, миграция — самоорганизована, болезни эволюционируют.

Платформы ABM

NetLogo (Northwestern University): стандарт академического ABM. Простой синтаксис, богатые библиотеки, активное сообщество.

Mesa (Python): гибкий, интегрируется с научным Python (numpy, pandas, matplotlib). Лучший выбор для исследователей.

Repast (Java): промышленный масштаб — моделирование миллиардов агентов. Используется для транспортной симуляции городов, military simulations.

Применения ABM

Эпидемиология: COVID-19 модели Ferguson et al. (Imperial College) — ABM 66 миллионов агентов Великобритании. Учёт возраста, работы, домохозяйств, транспорта. Предсказывали эффект разных сценариев. Повлияли на политику локдаунов.

Финансовые рынки: ABM трейдеров с разными стратегиями → воспроизводит «стилизованные факты»: тяжёлые хвосты, кластеризацию волатильности, автокорреляцию объёма.

Транспорт: SUMO (Simulation of Urban MObility) — открытый ABM городского транспорта. Используется для оптимизации светофоров, оценки автономных автомобилей.

Численный пример: Shelling на 20×20 сетке

Начальное состояние: случайное размещение 200 красных и 200 синих агентов, 400 пустых клеток. Индекс сегрегации = 0.12 (почти случайный). После 50 итераций: индекс = 0.68 (высокая сегрегация), хотя порог удовлетворённости = 30%. Число переездов на итерацию: 40 → 20 → 5 → 0 (сходимость).

Задание: Реализуйте ABM Шеллинга в Python (numpy + matplotlib). (1) Проведите 10 симуляций для каждого порога p ∈ {0.1, 0.2, 0.3, 0.4, 0.5}. Постройте зависимость среднего индекса сегрегации от p. (2) Реализуйте Boids: 100 агентов, параметры отделения r₁=2, выравнивания r₂=5, сплочения r₃=8. Визуализируйте анимацию. (3) Реализуйте SugarScape: 100 агентов, поле 50×50, постройте распределение «богатства» через 500 шагов. Соответствует ли оно закону Парето?

§ Акт · что дальше