Stygmergia v obrazovanii: различия между версиями
CristCas (обсуждение | вклад) |
|||
| (не показана 21 промежуточная версия этого же участника) | |||
| Строка 6: | Строка 6: | ||
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов: | В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов: | ||
* ''' | * '''коллективный феромон''' | ||
* ''' | * '''индивидуальная память''' | ||
* '''сочетание (феромон + память) | * '''сочетание двух стратегий''' (феромон + память) | ||
С помощью | С помощью экспериментов в среде BehaviorSpace были собраны данные об эффективности колонии (по количеству доставленной еды и выживаемости муравьёв). Первый эксперимент (проверка Гипотезы 1) включал в себя 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) был проведён при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). | ||
---- | ---- | ||
| Строка 15: | Строка 15: | ||
=== Цель работы === | === Цель работы === | ||
Оценить количественно, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности. | |||
== Рабочие гипотезы == | == Рабочие гипотезы == | ||
| Строка 21: | Строка 21: | ||
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание === | === Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание === | ||
* '''H₀:''' Не существует статистически значимой разницы в | * '''H₀:''' Не существует статистически значимой разницы в количестве доставленной еды `total-food-count` (эффективности) между тремя сценариями: использованием только коллективного феромона, индивидуальной памяти или их сочетания. | ||
* '''H₁:''' Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически | * '''H₁:''' Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически более высокую эффективность, чем каждый из механизмов по отдельности. | ||
=== Гипотеза 2. Влияние количества источников еды === | === Гипотеза 2. Влияние количества источников еды === | ||
* '''H₀:''' Увеличение количества источников еды | * '''H₀:''' Увеличение количества источников еды с 3 до 6 не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`). | ||
* '''H₁:''' Увеличение количества источников еды приводит к | * '''H₁:''' Увеличение количества источников еды приводит к высокому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти. | ||
== Модель == | == Модель == | ||
<netlogo model="Memory_Ants" /> | <netlogo model="Memory_Ants" /> | ||
=== | === Модель (.nlogox) === | ||
'''GitHub:''' [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics | '''GitHub:''' [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics Скачать модель по ссылке] | ||
== Просмотр кода с пояснениями == | == Просмотр кода с пояснениями == | ||
| Строка 527: | Строка 307: | ||
; Copyright 1997 Uri Wilensky. | ; Copyright 1997 Uri Wilensky. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Инструменты и параметры модели == | |||
=== Инструменты === | |||
* '''Моделирование:''' NetLogo (модель Ants с добавленной памятью) | |||
* '''Анализ данных:''' R (библиотеки tidyverse, ggplot2, lmtest) | |||
* '''Среда реализации:''' Поле цифровой дидактики (SMW) | |||
=== Параметры среды === | |||
* '''Размер мира:''' от -40 до 40 (80×80) | |||
* '''Гнездо:''' центр (0,0), радиус 5 | |||
* '''Еда:''' на радиусе 30 от центра, 3 или 6 кучек | |||
* '''Феромон:''' диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate` | |||
=== Управляющие параметры (настройки модели) === | |||
{| class="wikitable" | |||
! Переменная !! Тип !! Диапазон !! Описание | |||
|- | |||
| `population` || Slider || 0–100 || Количество муравьёв | |||
|- | |||
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона | |||
|- | |||
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона | |||
|- | |||
| `use-memory?` || Switch || On/Off || Включение/выключение памяти | |||
|- | |||
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6) | |||
|- | |||
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти | |||
|} | |||
=== Цветовая индикация муравьёв === | |||
{| class="wikitable" | |||
! Цвет !! Состояние | |||
|- | |||
| '''Зелёный''' || Ищет еду, память пуста | |||
|- | |||
| '''Синий''' || Идёт по памяти к ранее обнаруженному источнику еды | |||
|- | |||
| '''Фиолетовый''' || Несёт добытую еду в гнездо | |||
|- | |||
| '''Жёлтый''' || Имеет в памяти 1 слот для местонахождения источника еды, но не использует его в данный момент | |||
|- | |||
| '''Красный''' || Имеет 2 и более слотов в памяти | |||
|} | |||
=== Собираемые для анализа данные === | |||
{| class="wikitable" | |||
! Переменная !! Откуда !! Описание | |||
|- | |||
| `total-food-count` || Глобальная || Общее количество доставленной еды | |||
|- | |||
| `count turtles` || Встроенная || Количество живых муравьёв | |||
|} | |||
=== Как это работает === | |||
# Муравьи начинают движение из гнезда с нулевой памятью ('''зелёные''') | |||
# Найдя источник еды, запоминают координаты патча и несут ее в точку отправления, становясь по пути к ней '''фиолетовыми''' | |||
# После доставки еды в гнездо цвет муравьёв меняется на '''жёлтый''' (= 1 слот в памяти) или '''красный''' (= 2+ слотов в памяти) в зависимости от количества зафиксированных в памяти локаций с источниками еды | |||
# Когда энергия объекта падает ниже порога (`memory-threshold`), муравей с памятью становится '''синим''' и направляется к месту, отмеченному в памяти как знакомый источник еды | |||
# Если в данном месте пусто, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает местонахождение источника еды | |||
== План экспериментов == | |||
Все исследования были проведены в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки гипотез. | |||
----- | |||
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий === | |||
* '''Независимые переменные:''' | |||
** <code>use-memory?</code> — три сценария: феромон, память, феромон + память | |||
** <code>more-food?</code> — два уровня: 3 источника, 6 источников | |||
* '''Фиксированные параметры:''' | |||
** <code>population = 50</code> | |||
** <code>memory-threshold = 100</code> | |||
** время прогона = 1000 тиков | |||
* '''Повторений:''' 20 | |||
* '''Всего прогонов:''' 6 комбинаций × 20 = '''120''' | |||
----- | |||
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды === | |||
* '''Фиксированная стратегия:''' феромон + память (<code>use-memory? = true</code>, <code>evaporation-rate = 10</code>, <code>diffusion-rate = 50</code>) | |||
* '''Независимая переменная:''' <code>more-food?</code> — два уровня: 3 источника, 6 источников | |||
* '''Фиксированные параметры:''' те же (<code>population = 50</code>, <code>memory-threshold = 100</code>, 1000 тиков) | |||
* '''Повторений:''' 30 | |||
* '''Всего прогонов:''' 2 комбинации × 30 = '''60''' | |||
----- | |||
=== Исходные данные экспериментов === | |||
'''GitHub:''' [https://github.com/cristycrastys-source/Labs_my_beloved/tree/fed1a5b206bfe3456bfe9520b9b298f4c4c33946/Econometrics/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%82%D1%8B Эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace] | |||
== Результаты == | |||
=== Гипотеза 1: Сравнение трёх стратегий === | |||
Участниками проекта был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии было измерено '''количество доставленной еды''' (`total-food-count`) и '''выживаемость муравьёв''' (`count turtles`). Анализ проведён в R. | |||
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]] | |||
==== Доставленная еда ==== | |||
'''ANOVA (3 источника еды):''' | |||
<pre> | |||
Df Sum Sq Mean Sq F value Pr(>F) | |||
strategy 2 3885725 1942863 3797 <2e-16 *** | |||
Residuals 1137 581745 512 | |||
</pre> | |||
Различия между стратегиями статистически значимы (p < 0.001). | |||
'''t-тест:''' феромон+память vs только феромон (3 источника) | |||
t = -80.886, df = 774.9, p-value < 2.2e-16 | |||
'''Средняя доставленная еда:''' | |||
- Только феромон: 88.3 | |||
- Феромон + память: 204.1 | |||
'''Разница:''' 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6). | |||
'''Вывод по Гипотезе 1:''' комбинация феромона и памяти обеспечивает статистически более высокую эффективность поиска еды по сравнению с использованием только феромона (p < 0.001). | |||
==== Выживаемость ==== | |||
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]] | |||
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты. | |||
'''Средняя выживаемость (`count turtles`) при 6 источниках еды:''' | |||
{| class="wikitable" | |||
|- | |||
! Стратегия !! Средняя выживаемость | |||
|- | |||
| Только память || 41.2 | |||
|- | |||
| Феромон + память || 23.1 | |||
|- | |||
| Только феромон || 8.1 | |||
|} | |||
'''ANOVA для выживаемости (3 источника):''' | |||
<pre> | |||
Df Sum Sq Mean Sq F value Pr(>F) | |||
strategy 2 18721 9360 627.6 <2e-16 *** | |||
Residuals 1137 16957 15 | |||
</pre> | |||
Данные различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря зафиксированным в памяти координатам источника еды. | |||
=== Гипотеза 2: Влияние количества источников еды === | |||
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов). | |||
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]] | |||
==== Доставленная еда ==== | |||
'''Средняя доставленная еда:''' | |||
- 3 источника: 204.5 | |||
- 6 источников: 308.9 | |||
'''t-тест:''' t = -17.59, df = 41.46, p < 0.001 | |||
'''Разница:''' 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4) | |||
'''Вывод по Гипотезе 2:''' увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p < 0.001). | |||
==== Выживаемость ==== | |||
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]] | |||
'''Средняя выживаемость:''' | |||
- 3 источника: 7.2 муравья | |||
- 6 источников: 23.4 муравья | |||
'''t-тест:''' t = -11.73, df = 57.57, p < 0.001 | |||
'''Разница:''' 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9) | |||
'''Вывод:''' увеличение количества еды также значимо повышает выживаемость колонии. | |||
=== Демонстрация работы стратегий === | |||
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии. | |||
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ==== | |||
<gallery widths="300px" heights="225px" perrow="3" caption="Доставленная еда (слева направо): 103, 210, 212"> | |||
Файл:pheromone_only.gif|'''Только феромон'''<br>Зелёные тропы феромона, муравьи идут по коллективному следу.<br><br>'''Параметры:'''<br><code>use-memory? = false</code><br><code>evaporation-rate = 10</code><br><code>diffusion-rate = 50</code> | |||
Файл:memory_only.gif|'''Только память'''<br>Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.<br><br>'''Параметры:'''<br><code>use-memory? = true</code><br><code>evaporation-rate = 0</code><br><code>diffusion-rate = 0</code> | |||
Файл:pheromone_memory.gif|'''Феромон + память'''<br>И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.<br><br>'''Параметры:'''<br><code>use-memory? = true</code><br><code>evaporation-rate = 10</code><br><code>diffusion-rate = 50</code> | |||
</gallery> | |||
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ==== | |||
<gallery widths="300px" heights="225px" perrow="2" caption="Доставленная еда: 204.5 и 308.9"> | |||
Файл:three_sources.gif|'''3 источника еды'''<br>Менее интенсивное движение, меньше фиолетовых муравьёв, меньше насыщенность троп.<br><br>'''Параметры:'''<br><code>more-food? = false</code><br><code>use-memory? = true</code><br><code>evaporation-rate = 10</code><br><code>diffusion-rate = 50</code> | |||
Файл:six_sources.gif|'''6 источников еды'''<br>Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.<br><br>'''Параметры:'''<br><code>more-food? = true</code><br><code>use-memory? = true</code><br><code>evaporation-rate = 10</code><br><code>diffusion-rate = 50</code> | |||
</gallery> | |||
---- | |||
=== Анализ в R === | |||
Все статистические расчёты и визуализации были выполнены в '''среде R''' (версия 4.4.1) с использованием пакетов `ggplot2` и `dplyr`. Код полностью воспроизводим и доступен в репозитории проекта на GitHub. | |||
'''Ссылка на репозиторий:''' | |||
[https://github.com/SofronovaKA/econometrics Ссылка на репозиторий] | |||
'''Содержимое репозитория:''' | |||
{| class="wikitable" style="width: 100%;" | |||
! Файл !! Описание | |||
|- | |||
| <code>hypothesis1_analysis.R</code> || R-скрипт для анализа Гипотезы 1 (сравнение трёх стратегий). Загружает CSV, строит графики, проводит ANOVA и t-тесты. | |||
|- | |||
| <code>hypothesis2_analysis.R</code> || R-скрипт для анализа Гипотезы 2 (влияние количества еды). Загружает CSV, строит графики, проводит t-тесты. | |||
|- | |||
| <code>Гипотеза_1(table_output).csv</code> || Сырые данные эксперимента для Гипотезы 1 (120 прогонов). | |||
|- | |||
| <code>Гипотеза_2(table_output).csv</code> || Сырые данные эксперимента для Гипотезы 2 (60 прогонов). | |||
|} | |||
=== Общий вывод === | |||
Обе гипотезы подтверждены: | |||
1. '''Гипотеза 1:''' комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p < 0.001). | |||
2. '''Гипотеза 2:''' увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p < 0.001), так и выживаемость (23.4 против 7.2, p < 0.001). | |||
'''Вывод:''' наибольшая выживаемость наблюдается при стратегии «память» с 6 источниками еды (41.2 муравья). Память важна для выживания при изобилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном. | |||
== Ссылки == | == Ссылки == | ||
| Строка 540: | Строка 568: | ||
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода | * [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода | ||
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление | * [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление | ||
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление | * [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление и конечная редактура страницы | ||
---- | ---- | ||
[[Категория:Работы по эконометрике]] | [[Категория:Работы по эконометрике]] | ||
Текущая версия от 23:31, 10 июня 2026
Стигмергия в образовании
| Description | |
|---|---|
| Стигмергия | Стигмергия (от др.-греч. στίγμα — знак, метка, и ἔργον — действие, работа) — механизм спонтанного непрямого взаимодействия между индивидами, заключающийся в оставлении индивидами в окружающей среде меток, стимулирующих дальнейшую активность других индивидов. Стигмергия является одной из форм самоорганизации, создающая сложные, казалось бы, интеллектуальные структуры, но без какого-либо планирования, контроля, или даже прямой связи между индивидами. Как таковая, она поддерживает эффективное сотрудничество между чрезвычайно простыми индивидами, у которых нет памяти, интеллекта или даже осведомленности друг о друге. Предположительно, стигмергия является децентрализованным сетевым свойством коллективного взаимодействия термитов. Для эконометрики это означает, что у нас есть наблюдаемые микроданные о действиях агентов во времени, а также агрегированные показатели состояния артефакта (качество статьи, метрики студии, сетевые показатели), и мы можем строить модели «следы → дальнейшие действия/результаты |
Аннотация
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:
- коллективный феромон
- индивидуальная память
- сочетание двух стратегий (феромон + память)
С помощью экспериментов в среде BehaviorSpace были собраны данные об эффективности колонии (по количеству доставленной еды и выживаемости муравьёв). Первый эксперимент (проверка Гипотезы 1) включал в себя 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) был проведён при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов).
Цель работы
Оценить количественно, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.
Рабочие гипотезы
Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание
- H₀: Не существует статистически значимой разницы в количестве доставленной еды `total-food-count` (эффективности) между тремя сценариями: использованием только коллективного феромона, индивидуальной памяти или их сочетания.
- H₁: Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически более высокую эффективность, чем каждый из механизмов по отдельности.
Гипотеза 2. Влияние количества источников еды
- H₀: Увеличение количества источников еды с 3 до 6 не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).
- H₁: Увеличение количества источников еды приводит к высокому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.
Модель
Модель (.nlogox)
GitHub: Скачать модель по ссылке
Просмотр кода с пояснениями
Полный код (.nlogo)
;; ANTS WITH MEMORY - ФИНАЛ
;; ============================================
;; РАЗМЕР МИРА: от -40 до 40 (80×80)
;; ЕДА: на радиусе 30 от центра
;; ============================================
;; ЦВЕТА МУРАВЬЁВ:
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)
;; СИНИЙ - идёт по памяти к еде
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)
;; КРАСНЫЙ - 2+ места в памяти (не использует)
;; ============================================
globals [
total-food-count ; общее количество еды, доставленной в гнездо
]
patches-own [
chemical ; феромон на патче (коллективный след)
food-here ; наличие еды на патче (0 или 1)
is-nest ; является ли патч гнездом (1 да, 0 нет)
]
turtles-own [
my-food ; есть ли у муравья еда (0 или 1)
my-energy ; текущий запас энергии муравья
my-memory ; список запомненных патчей (места, где была еда)
]
;;;;;;;;;;;;;;;;;;;;;;;;
;;; НАСТРОЙКА МИРА
;;;;;;;;;;;;;;;;;;;;;;;;
to setup
clear-all
set-default-shape turtles "bug"
; ===== СОЗДАЁМ ГНЕЗДО =====
; Все патчи в радиусе 5 от центра становятся гнездом
ask patches [
ifelse (distancexy 0 0) < 5 [
set is-nest 1
set pcolor violet
] [
set is-nest 0
set food-here 0
set chemical 0
]
]
; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====
let radius 30 ; расстояние от центра до еды
let sources 3 ; базовое количество источников
if more-food? = true [ set sources 6 ] ; если включён переключатель
; Равномерно распределяем источники по кругу
let angles [] ; список углов
let step 360 / sources ; шаг между источниками
let current 0
repeat sources [
set angles lput current angles
set current current + step
]
; Для каждого угла создаём пятно еды радиусом 5
foreach angles [ angle ->
let xc radius * cos angle
let yc radius * sin angle
ask patches with [ distancexy xc yc < 5 ] [
set food-here 1
; Разные цвета для разных источников
if angle = 0 [ set pcolor cyan ]
if angle = 60 [ set pcolor sky ]
if angle = 120 [ set pcolor blue ]
if angle = 180 [ set pcolor cyan ]
if angle = 240 [ set pcolor sky ]
if angle = 300 [ set pcolor blue ]
]
]
; ===== СОЗДАЁМ МУРАВЬЁВ =====
create-turtles population [
setxy 0 0 ; все муравьи начинают из гнезда
set size 2
set color green ; ЗЕЛЁНЫЙ - ищет еду, память пуста
set my-food 0
set my-energy 200
set my-memory [] ; память пуста
]
set total-food-count 0
reset-ticks
end
;;;;;;;;;;;;;;;;;;;;;
;;; ОСНОВНОЙ ЦИКЛ
;;;;;;;;;;;;;;;;;;;;;
to go
ask turtles [
if who >= ticks [ stop ]
; ===== ТРАТИМ ЭНЕРГИЮ =====
; Каждый шаг отнимает 1 единицу энергии
set my-energy my-energy - 1
if my-energy <= 0 [ die ] ; энергия кончилась - муравей умирает
; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====
; Если муравей в гнезде и несёт еду - выгружает её
if is-nest = 1 and my-food = 1 [
set my-food 0
set my-energy my-energy + 100 ; награда за доставленную еду
set total-food-count total-food-count + 1 ; увеличиваем счётчик
update-color-by-memory ; обновляем цвет в зависимости от памяти
rt 180 ; разворачиваемся
]
; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====
; Если муравей несёт еду - идёт прямо в гнездо
if my-food = 1 [
set color violet ; ФИОЛЕТОВЫЙ - несёт еду
set chemical chemical + 60 ; оставляет феромон
facexy 0 0 ; поворачивается к центру (гнезду)
wiggle
fd 1
stop
]
; ===== ПОИСК ЕДЫ =====
; Если муравей не несёт еду - ищет её
look-for-food
wiggle
fd 1
]
; ===== ОБРАБОТКА ФЕРОМОНА =====
; Диффузия: феромон распространяется на соседние патчи
diffuse chemical (diffusion-rate / 100)
ask patches [
; Испарение: феромон постепенно исчезает
set chemical chemical * (100 - evaporation-rate) / 100
if chemical < 0.01 [ set chemical 0 ]
; Визуализация феромона (чем больше феромона, тем ярче зелёный)
if food-here = 0 and is-nest = 0 [
set pcolor scale-color green chemical 0 5
]
]
tick
end
;;;;;;;;;;;;;;;;;;;;;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ
;;;;;;;;;;;;;;;;;;;;;
to look-for-food
; ===== ПОДБОР ЕДЫ =====
; Если на текущем патче есть еда - подбираем её
if food-here > 0 [
set my-food 1
set food-here food-here - 1 ; еда исчезает с патча
; ЗАПОМИНАЕМ МЕСТО
if use-memory? [
set my-memory lput patch-here my-memory ; добавляем патч в список
if length my-memory > 15 [ set my-memory but-last my-memory ] ; ограничиваем размер
]
rt 180 ; разворачиваемся к гнезду
stop
]
; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====
; Если память включена, энергии мало и есть запомненные места
if use-memory? and my-energy < memory-threshold and length my-memory > 0 [
let target nobody
let best-dist 999999
; Находим ближайшее запомненное место
foreach my-memory [ mem-patch ->
let d distance mem-patch
if d < best-dist [
set best-dist d
set target mem-patch
]
]
if target != nobody [
; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ
ifelse [food-here] of target > 0 [
set color blue ; СИНИЙ - идёт по памяти к еде
face target
stop
] [
; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ
let nearby-food patches with [food-here > 0 and distance target <= 8]
ifelse any? nearby-food [
; нашли еду рядом - идём к ближайшей
let closest-nearby min-one-of nearby-food [distance myself]
; добавляем новое место в память
set my-memory lput closest-nearby my-memory
if length my-memory > 15 [ set my-memory but-last my-memory ]
set color blue ; СИНИЙ - идёт по памяти к еде
face closest-nearby
stop
] [
; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ
set my-memory remove target my-memory
]
]
]
]
; ===== ОБНОВЛЕНИЕ ЦВЕТА =====
update-color-by-memory
; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====
; Если есть феромон - идём по нему
if (chemical >= 0.05) and (chemical < 2) [
uphill-chemical
]
end
;;;;;;;;;;;;;;;;;;;;;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ
;;;;;;;;;;;;;;;;;;;;;
to update-color-by-memory
; Обновляет цвет муравья в зависимости от размера его памяти
; (только если муравей не несёт еду и не в режиме синего)
if my-food = 0 and color != blue [
let mem-count length my-memory
if mem-count = 0 [ set color green ] ; ЗЕЛЁНЫЙ - память пуста
if mem-count = 1 [ set color yellow ] ; ЖЁЛТЫЙ - 1 место
if mem-count >= 2 [ set color red ] ; КРАСНЫЙ - 2+ мест
]
end
to uphill-chemical
; Движение вверх по градиенту феромона
; Сравнивает концентрацию феромона спереди, справа и слева
let scent-ahead chemical-scent 0
let scent-right chemical-scent 45
let scent-left chemical-scent -45
if (scent-right > scent-ahead) or (scent-left > scent-ahead) [
ifelse scent-right > scent-left [ rt 45 ] [ lt 45 ]
]
end
to wiggle
; Лёгкое случайное покачивание, чтобы муравьи не застревали
rt random 30
lt random 30
if not can-move? 1 [ rt 180 ]
end
to-report chemical-scent [angle]
; Возвращает количество феромона на патче под указанным углом
let p patch-right-and-ahead angle 1
if p = nobody [ report 0 ]
report [chemical] of p
end
; Copyright 1997 Uri Wilensky.
Инструменты и параметры модели
Инструменты
- Моделирование: NetLogo (модель Ants с добавленной памятью)
- Анализ данных: R (библиотеки tidyverse, ggplot2, lmtest)
- Среда реализации: Поле цифровой дидактики (SMW)
Параметры среды
- Размер мира: от -40 до 40 (80×80)
- Гнездо: центр (0,0), радиус 5
- Еда: на радиусе 30 от центра, 3 или 6 кучек
- Феромон: диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`
Управляющие параметры (настройки модели)
| Переменная | Тип | Диапазон | Описание |
|---|---|---|---|
| `population` | Slider | 0–100 | Количество муравьёв |
| `diffusion-rate` | Slider | 0–50 | Скорость распространения феромона |
| `evaporation-rate` | Slider | 0–20 | Скорость испарения феромона |
| `use-memory?` | Switch | On/Off | Включение/выключение памяти |
| `more-food?` | Switch | On/Off | Дополнительные источники еды (3 → 6) |
| `memory-threshold` | Slider | 50–200 | Порог энергии для использования памяти |
Цветовая индикация муравьёв
| Цвет | Состояние |
|---|---|
| Зелёный | Ищет еду, память пуста |
| Синий | Идёт по памяти к ранее обнаруженному источнику еды |
| Фиолетовый | Несёт добытую еду в гнездо |
| Жёлтый | Имеет в памяти 1 слот для местонахождения источника еды, но не использует его в данный момент |
| Красный | Имеет 2 и более слотов в памяти |
Собираемые для анализа данные
| Переменная | Откуда | Описание |
|---|---|---|
| `total-food-count` | Глобальная | Общее количество доставленной еды |
| `count turtles` | Встроенная | Количество живых муравьёв |
Как это работает
- Муравьи начинают движение из гнезда с нулевой памятью (зелёные)
- Найдя источник еды, запоминают координаты патча и несут ее в точку отправления, становясь по пути к ней фиолетовыми
- После доставки еды в гнездо цвет муравьёв меняется на жёлтый (= 1 слот в памяти) или красный (= 2+ слотов в памяти) в зависимости от количества зафиксированных в памяти локаций с источниками еды
- Когда энергия объекта падает ниже порога (`memory-threshold`), муравей с памятью становится синим и направляется к месту, отмеченному в памяти как знакомый источник еды
- Если в данном месте пусто, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает местонахождение источника еды
План экспериментов
Все исследования были проведены в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки гипотез.
Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий
- Независимые переменные:
use-memory?— три сценария: феромон, память, феромон + памятьmore-food?— два уровня: 3 источника, 6 источников
- Фиксированные параметры:
population = 50memory-threshold = 100- время прогона = 1000 тиков
- Повторений: 20
- Всего прогонов: 6 комбинаций × 20 = 120
Эксперимент 2 (Гипотеза 2): Влияние количества еды
- Фиксированная стратегия: феромон + память (
use-memory? = true,evaporation-rate = 10,diffusion-rate = 50) - Независимая переменная:
more-food?— два уровня: 3 источника, 6 источников - Фиксированные параметры: те же (
population = 50,memory-threshold = 100, 1000 тиков) - Повторений: 30
- Всего прогонов: 2 комбинации × 30 = 60
Исходные данные экспериментов
GitHub: Эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace
Результаты
Гипотеза 1: Сравнение трёх стратегий
Участниками проекта был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии было измерено количество доставленной еды (`total-food-count`) и выживаемость муравьёв (`count turtles`). Анализ проведён в R.

Доставленная еда
ANOVA (3 источника еды):
Df Sum Sq Mean Sq F value Pr(>F) strategy 2 3885725 1942863 3797 <2e-16 *** Residuals 1137 581745 512
Различия между стратегиями статистически значимы (p < 0.001).
t-тест: феромон+память vs только феромон (3 источника)
t = -80.886, df = 774.9, p-value < 2.2e-16
Средняя доставленная еда: - Только феромон: 88.3 - Феромон + память: 204.1
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).
Вывод по Гипотезе 1: комбинация феромона и памяти обеспечивает статистически более высокую эффективность поиска еды по сравнению с использованием только феромона (p < 0.001).
Выживаемость

Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.
Средняя выживаемость (`count turtles`) при 6 источниках еды:
| Стратегия | Средняя выживаемость |
|---|---|
| Только память | 41.2 |
| Феромон + память | 23.1 |
| Только феромон | 8.1 |
ANOVA для выживаемости (3 источника):
Df Sum Sq Mean Sq F value Pr(>F) strategy 2 18721 9360 627.6 <2e-16 *** Residuals 1137 16957 15
Данные различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря зафиксированным в памяти координатам источника еды.
Гипотеза 2: Влияние количества источников еды
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).

Доставленная еда
Средняя доставленная еда: - 3 источника: 204.5 - 6 источников: 308.9
t-тест: t = -17.59, df = 41.46, p < 0.001
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)
Вывод по Гипотезе 2: увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p < 0.001).
Выживаемость

Средняя выживаемость: - 3 источника: 7.2 муравья - 6 источников: 23.4 муравья
t-тест: t = -11.73, df = 57.57, p < 0.001
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)
Вывод: увеличение количества еды также значимо повышает выживаемость колонии.
Демонстрация работы стратегий
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.
Гипотеза 1: Сравнение трёх стратегий (3 источника еды)
- Доставленная еда (слева направо): 103, 210, 212
-
Только феромон
Зелёные тропы феромона, муравьи идут по коллективному следу.
Параметры:use-memory? = falseevaporation-rate = 10diffusion-rate = 50 -
Только память
Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.
Параметры:use-memory? = trueevaporation-rate = 0diffusion-rate = 0 -
Феромон + память
И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.
Параметры:use-memory? = trueevaporation-rate = 10diffusion-rate = 50
Гипотеза 2: Влияние количества еды (стратегия «феромон + память»)
- Доставленная еда: 204.5 и 308.9
-
3 источника еды
Менее интенсивное движение, меньше фиолетовых муравьёв, меньше насыщенность троп.
Параметры:more-food? = falseuse-memory? = trueevaporation-rate = 10diffusion-rate = 50 -
6 источников еды
Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.
Параметры:more-food? = trueuse-memory? = trueevaporation-rate = 10diffusion-rate = 50
Анализ в R
Все статистические расчёты и визуализации были выполнены в среде R (версия 4.4.1) с использованием пакетов `ggplot2` и `dplyr`. Код полностью воспроизводим и доступен в репозитории проекта на GitHub.
Ссылка на репозиторий: Ссылка на репозиторий
Содержимое репозитория:
| Файл | Описание |
|---|---|
hypothesis1_analysis.R |
R-скрипт для анализа Гипотезы 1 (сравнение трёх стратегий). Загружает CSV, строит графики, проводит ANOVA и t-тесты. |
hypothesis2_analysis.R |
R-скрипт для анализа Гипотезы 2 (влияние количества еды). Загружает CSV, строит графики, проводит t-тесты. |
Гипотеза_1(table_output).csv |
Сырые данные эксперимента для Гипотезы 1 (120 прогонов). |
Гипотеза_2(table_output).csv |
Сырые данные эксперимента для Гипотезы 2 (60 прогонов). |
Общий вывод
Обе гипотезы подтверждены:
1. Гипотеза 1: комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p < 0.001).
2. Гипотеза 2: увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p < 0.001), так и выживаемость (23.4 против 7.2, p < 0.001).
Вывод: наибольшая выживаемость наблюдается при стратегии «память» с 6 источниками еды (41.2 муравья). Память важна для выживания при изобилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.
Ссылки
- Практикум по эконометрике (syllabus)
- An Introduction to Agent-Based Modeling with NetLogo — Wilensky, Rand [1]
- Introduction to Econometrics with R — онлайн-учебник [2]
- Causal Inference: The Mixtape — Cunningham [3]
- Дружелюбная эконометрика — учебник [4]
- NetLogo: netlogo.org
- R: r-project.org
Участники
- Анастасия Юдаева — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода
- Маргарита Еськова — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление
- Кира Софронова — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление и конечная редактура страницы
