<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0+%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0</id>
	<title>Поле цифровой дидактики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0+%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0"/>
	<updated>2026-07-13T14:02:29Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47640</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47640"/>
		<updated>2026-06-10T14:38:22Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;3&amp;quot; caption=&amp;quot;Доставленная еда (слева направо): 103, 210, 212&amp;quot;&amp;gt;&lt;br /&gt;
Файл:pheromone_only.gif|&#039;&#039;&#039;Только феромон&#039;&#039;&#039;&amp;lt;br&amp;gt;Зелёные тропы феромона, муравьи идут по коллективному следу.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:memory_only.gif|&#039;&#039;&#039;Только память&#039;&#039;&#039;&amp;lt;br&amp;gt;Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 0&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:pheromone_memory.gif|&#039;&#039;&#039;Феромон + память&#039;&#039;&#039;&amp;lt;br&amp;gt;И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;2&amp;quot; caption=&amp;quot;Доставленная еда: 204.5 и 308.9&amp;quot;&amp;gt;&lt;br /&gt;
Файл:three_sources.gif|&#039;&#039;&#039;3 источника еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Менее интенсивное движение, меньше фиолетовых муравьёв.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:six_sources.gif|&#039;&#039;&#039;6 источников еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47639</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47639"/>
		<updated>2026-06-10T14:35:37Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;3&amp;quot; caption=&amp;quot;Доставленная еда (слева направо): 103, 210, 212&amp;quot;&amp;gt;&lt;br /&gt;
Файл:pheromone_only.gif|&#039;&#039;&#039;Только феромон&#039;&#039;&#039;&amp;lt;br&amp;gt;Зелёные тропы феромона, муравьи идут по коллективному следу.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:memory_only.gif|&#039;&#039;&#039;Только память&#039;&#039;&#039;&amp;lt;br&amp;gt;Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 0&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:pheromone_memory.gif|&#039;&#039;&#039;Феромон + память&#039;&#039;&#039;&amp;lt;br&amp;gt;И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;2&amp;quot; caption=&amp;quot;Доставленная еда: 204.5 и 308.9&amp;quot;&amp;gt;&lt;br /&gt;
Файл:three_sources.gif|&#039;&#039;&#039;3 источника еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Менее интенсивное движение, меньше фиолетовых муравьёв.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:six_sources.gif|&#039;&#039;&#039;6 источников еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47638</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47638"/>
		<updated>2026-06-10T14:34:58Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Только феромон&#039;&#039;&#039;&lt;br /&gt;
[[Файл:pheromone_only.gif|thumb|center|300px|Доставлено еды: 103]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = false&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Зелёные тропы феромона, муравьи идут по коллективному следу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
[[Файл:memory_only.gif|thumb|center|300px|Доставлено еды: 210]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Феромон + память&#039;&#039;&#039;&lt;br /&gt;
[[Файл:pheromone_memory.gif|thumb|center|300px|Доставлено еды: 212]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. 3 источника еды&#039;&#039;&#039;&lt;br /&gt;
[[Файл:three_sources.gif|thumb|center|300px|Доставлено еды: 204.5]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food? = false&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Менее интенсивное движение, меньше фиолетовых муравьёв.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. 6 источников еды&#039;&#039;&#039;&lt;br /&gt;
[[Файл:six_sources.gif|thumb|center|300px|Доставлено еды: 308.9]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;300&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
Файл:pheromone_only.gif|Только феромон|link=|animated&lt;br /&gt;
Файл:memory_only.gif|Только память|link=|animated&lt;br /&gt;
Файл:pheromone_memory.gif|Феромон + память|link=|animated&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47637</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47637"/>
		<updated>2026-06-10T14:32:55Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Только феромон&#039;&#039;&#039;&lt;br /&gt;
[[Файл:pheromone_only.gif|thumb|center|300px|Доставлено еды: 103]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = false&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Зелёные тропы феромона, муравьи идут по коллективному следу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
[[Файл:memory_only.gif|thumb|center|300px|Доставлено еды: 210]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Феромон + память&#039;&#039;&#039;&lt;br /&gt;
[[Файл:pheromone_memory.gif|thumb|center|300px|Доставлено еды: 212]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. 3 источника еды&#039;&#039;&#039;&lt;br /&gt;
[[Файл:three_sources.gif|thumb|center|300px|Доставлено еды: 204.5]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food? = false&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Менее интенсивное движение, меньше фиолетовых муравьёв.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. 6 источников еды&#039;&#039;&#039;&lt;br /&gt;
[[Файл:six_sources.gif|thumb|center|300px|Доставлено еды: 308.9]]&lt;br /&gt;
&#039;&#039;&#039;Параметры:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Что видно:&#039;&#039;&#039; Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47635</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47635"/>
		<updated>2026-06-10T14:31:23Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;3&amp;quot; caption=&amp;quot;Доставленная еда (слева направо): 103, 210, 212&amp;quot;&amp;gt;&lt;br /&gt;
Файл:pheromone_only.gif|&#039;&#039;&#039;Только феромон&#039;&#039;&#039;&amp;lt;br&amp;gt;Зелёные тропы феромона, муравьи идут по коллективному следу.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:memory_only.gif|&#039;&#039;&#039;Только память&#039;&#039;&#039;&amp;lt;br&amp;gt;Нет феромона, муравьи меняют цвет (жёлтый, красный, синий), идут по памяти.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 0&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:pheromone_memory.gif|&#039;&#039;&#039;Феромон + память&#039;&#039;&#039;&amp;lt;br&amp;gt;И феромонные тропы, и цветовая индикация памяти, максимальная эффективность.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;2&amp;quot; caption=&amp;quot;Доставленная еда: 204.5 и 308.9&amp;quot;&amp;gt;&lt;br /&gt;
Файл:three_sources.gif|&#039;&#039;&#039;3 источника еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Менее интенсивное движение, меньше фиолетовых муравьёв.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = false&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
Файл:six_sources.gif|&#039;&#039;&#039;6 источников еды&#039;&#039;&#039;&amp;lt;br&amp;gt;Более интенсивное движение, больше фиолетовых муравьёв, выше насыщенность троп.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;more-food? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47632</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47632"/>
		<updated>2026-06-10T14:28:49Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Только феромон&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Только индивидуальная память&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Феромон + память&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;video width=&amp;quot;300&amp;quot; controls autoplay loop muted&amp;gt;&lt;br /&gt;
  &amp;lt;source src=&amp;quot;/images/Файл:pheromone_only.mp4&amp;quot; type=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt;
  Ваш браузер не поддерживает видео.&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Доставлено еды: 103&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;video width=&amp;quot;300&amp;quot; controls autoplay loop muted&amp;gt;&lt;br /&gt;
  &amp;lt;source src=&amp;quot;/images/Файл:memory_only.mp4&amp;quot; type=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt;
  Ваш браузер не поддерживает видео.&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Доставлено еды: 210&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;video width=&amp;quot;300&amp;quot; controls autoplay loop muted&amp;gt;&lt;br /&gt;
  &amp;lt;source src=&amp;quot;/images/Файл:pheromone_memory.mp4&amp;quot; type=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt;
  Ваш браузер не поддерживает видео.&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Доставлено еды: 212&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = false`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 0`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 0&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Зелёные тропы феромона,&amp;lt;br&amp;gt;муравьи идут по коллективному следу.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Нет феромона,&amp;lt;br&amp;gt;муравьи меняют цвет (жёлтый, красный, синий),&amp;lt;br&amp;gt;идут по памяти.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;И феромонные тропы,&amp;lt;br&amp;gt;и цветовая индикация памяти,&amp;lt;br&amp;gt;максимальная эффективность.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | 3 источника еды&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | 6 источников еды&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;video width=&amp;quot;300&amp;quot; controls autoplay loop muted&amp;gt;&lt;br /&gt;
  &amp;lt;source src=&amp;quot;/images/Файл:three_sources.mp4&amp;quot; type=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt;
  Ваш браузер не поддерживает видео.&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Доставлено еды: 204.5&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;video width=&amp;quot;300&amp;quot; controls autoplay loop muted&amp;gt;&lt;br /&gt;
  &amp;lt;source src=&amp;quot;/images/Файл:six_sources.mp4&amp;quot; type=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt;
  Ваш браузер не поддерживает видео.&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Доставлено еды: 308.9&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`more-food? = false`&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`more-food? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Менее интенсивное движение,&amp;lt;br&amp;gt;меньше фиолетовых муравьёв.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Более интенсивное движение,&amp;lt;br&amp;gt;больше фиолетовых муравьёв,&amp;lt;br&amp;gt;выше насыщенность троп.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromone_only.gif&amp;diff=47631</id>
		<title>Файл:Pheromone only.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromone_only.gif&amp;diff=47631"/>
		<updated>2026-06-10T14:23:14Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47629</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47629"/>
		<updated>2026-06-10T14:21:30Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Демонстрация работы стратегий (GIF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_food.png|thumb|center|600px|Рисунок 1. Доставленная еда по трём стратегиям (3 источника)]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA (3 источника еды):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df  Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2 3885725 1942863    3797 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  581745     512                   &lt;br /&gt;
&lt;br /&gt;
Различия между стратегиями статистически значимы (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t-тест: феромон+память vs только феромон (3 источника)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
t = -80.886, df = 774.9, p-value &amp;lt; 2.2e-16&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- Только феромон: 88.3&lt;br /&gt;
- Феромон + память: 204.1&lt;br /&gt;
&lt;br /&gt;
Разница: 115.8 единиц еды (95% доверительный интервал: от 112.9 до 118.6).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 1:&#039;&#039;&#039; Гипотеза подтверждается. Комбинация феромона и памяти обеспечивает статистически значимо более высокую эффективность поиска еды по сравнению с использованием только феромона (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g1_survival.png|thumb|center|600px|Рисунок 2. Выживаемость муравьёв по трём стратегиям (6 источников)]]&lt;br /&gt;
&lt;br /&gt;
Хотя основная гипотеза проверялась на доставленной еде, анализ выживаемости муравьёв дал интересные дополнительные результаты.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Средняя выживаемость (count turtles) при 6 источниках еды:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| Стратегия | Средняя выживаемость |&lt;br /&gt;
|-----------|---------------------|&lt;br /&gt;
| Только память | 41.2 |&lt;br /&gt;
| Феромон + память | 23.1 |&lt;br /&gt;
| Только феромон | 8.1 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ANOVA для выживаемости (3 источника):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
              Df Sum Sq Mean Sq F value Pr(&amp;gt;F)    &lt;br /&gt;
strategy       2  18721    9360   627.6 &amp;lt;2e-16 ***&lt;br /&gt;
Residuals   1137  16957      15                   &lt;br /&gt;
&lt;br /&gt;
Различия также статистически значимы. Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды, что может объясняться более эффективным использованием энергии благодаря запомненным координатам еды.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2: Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
Для проверки влияния количества еды проведён отдельный эксперимент при фиксированной стратегии «Феромон + память» (30 повторений, 2 комбинации: 3 и 6 источников, всего 60 прогонов).&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_food.png|thumb|center|600px|Рисунок 3. Доставленная еда при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
==== Доставленная еда ====&lt;br /&gt;
&lt;br /&gt;
Средняя доставленная еда:&lt;br /&gt;
- 3 источника: 204.5&lt;br /&gt;
- 6 источников: 308.9&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -17.59, df = 41.46, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 104.4 единицы еды (95% доверительный интервал: от 92.4 до 116.4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод по Гипотезе 2:&#039;&#039;&#039; Увеличение количества источников еды с 3 до 6 приводит к статистически значимому росту доставленной еды (p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
==== Выживаемость ====&lt;br /&gt;
&lt;br /&gt;
[[Файл:g2_turtles.png|thumb|center|600px|Рисунок 4. Выживаемость при 3 и 6 источниках]]&lt;br /&gt;
&lt;br /&gt;
Средняя выживаемость:&lt;br /&gt;
- 3 источника: 7.2 муравья&lt;br /&gt;
- 6 источников: 23.4 муравья&lt;br /&gt;
&lt;br /&gt;
t-тест: t = -11.73, df = 57.57, p &amp;lt; 0.001&lt;br /&gt;
&lt;br /&gt;
Разница: 16.2 муравья (95% доверительный интервал: от 13.4 до 18.9)&lt;br /&gt;
&lt;br /&gt;
Увеличение количества еды также значимо повышает выживаемость колонии.&lt;br /&gt;
&lt;br /&gt;
=== Демонстрация работы стратегий ===&lt;br /&gt;
&lt;br /&gt;
Для наглядной демонстрации различий в поведении муравьёв были записаны анимации (GIF) для каждого сценария. Ниже представлены выбранные прогоны, результаты которых близки к средним значениям по соответствующей стратегии.&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 1: Сравнение трёх стратегий (3 источника еды) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Только феромон&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Только индивидуальная память&lt;br /&gt;
! style=&amp;quot;width:33%&amp;quot; | Феромон + память&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:pheromone_only.gif|thumb|center|300px|&#039;&#039;&#039;Доставлено еды: 103&#039;&#039;&#039;]] &lt;br /&gt;
| [[Файл:memory_only.gif|thumb|center|300px|&#039;&#039;&#039;Доставлено еды: 210&#039;&#039;&#039;]] &lt;br /&gt;
| [[Файл:pheromone_memory.gif|thumb|center|300px|&#039;&#039;&#039;Доставлено еды: 212&#039;&#039;&#039;]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = false`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 0`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 0&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Зелёные тропы феромона,&amp;lt;br&amp;gt;муравьи идут по коллективному следу.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Нет феромона,&amp;lt;br&amp;gt;муравьи меняют цвет (жёлтый, красный, синий),&amp;lt;br&amp;gt;идут по памяти.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;И феромонные тропы,&amp;lt;br&amp;gt;и цветовая индикация памяти,&amp;lt;br&amp;gt;максимальная эффективность.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Гипотеза 2: Влияние количества еды (стратегия «феромон + память») ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | 3 источника еды&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | 6 источников еды&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:three_sources.gif|thumb|center|300px|&#039;&#039;&#039;Доставлено еды: 204.5&#039;&#039;&#039;]] &lt;br /&gt;
| [[Файл:six_sources.gif|thumb|center|300px|&#039;&#039;&#039;Доставлено еды: 308.9&#039;&#039;&#039;]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`more-food? = false`&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
| &#039;&#039;&#039;Параметры:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
`more-food? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`use-memory? = true`&amp;lt;br&amp;gt;&lt;br /&gt;
`evaporation-rate = 10`&amp;lt;br&amp;gt;&lt;br /&gt;
diffusion-rate = 50&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Менее интенсивное движение,&amp;lt;br&amp;gt;меньше фиолетовых муравьёв.&lt;br /&gt;
| &#039;&#039;&#039;Что видно:&#039;&#039;&#039;&amp;lt;br&amp;gt;Более интенсивное движение,&amp;lt;br&amp;gt;больше фиолетовых муравьёв,&amp;lt;br&amp;gt;выше насыщенность троп.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Общий вывод ===&lt;br /&gt;
&lt;br /&gt;
Обе гипотезы подтверждены:&lt;br /&gt;
&lt;br /&gt;
1. **Гипотеза 1:** Комбинация феромона и индивидуальной памяти даёт статистически значимо более высокую эффективность доставки еды (204.1 против 88.3, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
2. **Гипотеза 2:** Увеличение количества источников еды с 3 до 6 значимо повышает как доставленную еду (308.9 против 204.5, p &amp;lt; 0.001), так и выживаемость (23.4 против 7.2, p &amp;lt; 0.001).&lt;br /&gt;
&lt;br /&gt;
**Дополнительный вывод:** Наибольшая выживаемость наблюдается при стратегии «Только память» с 6 источниками еды (41.2 муравья). Память важна для выживания при обилии ресурсов, но для максимизации доставки еды необходимо сочетание с феромоном.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Three_sources.gif&amp;diff=47626</id>
		<title>Файл:Three sources.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Three_sources.gif&amp;diff=47626"/>
		<updated>2026-06-10T14:17:08Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Six_sources.gif&amp;diff=47625</id>
		<title>Файл:Six sources.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Six_sources.gif&amp;diff=47625"/>
		<updated>2026-06-10T14:16:54Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Memory_only.gif&amp;diff=47624</id>
		<title>Файл:Memory only.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Memory_only.gif&amp;diff=47624"/>
		<updated>2026-06-10T14:16:35Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromon_only.gif&amp;diff=47623</id>
		<title>Файл:Pheromon only.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromon_only.gif&amp;diff=47623"/>
		<updated>2026-06-10T14:16:20Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromone_memory.gif&amp;diff=47621</id>
		<title>Файл:Pheromone memory.gif</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pheromone_memory.gif&amp;diff=47621"/>
		<updated>2026-06-10T14:15:40Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47597</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47597"/>
		<updated>2026-06-10T13:59:52Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Исходные данные экспериментов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47596</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47596"/>
		<updated>2026-06-10T13:59:39Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Исходные данные экспериментов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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]&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47595</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47595"/>
		<updated>2026-06-10T13:59:25Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Исходные данные экспериментов (CSV) и R-код */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов ===&lt;br /&gt;
&lt;br /&gt;
Сам эксперимент и CSV-файлы с результатами всех прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
- 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] [2]&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1: Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
Был проведён полный факторный эксперимент (6 комбинаций, 20 повторений, 120 прогонов). Для каждой стратегии измерялась доставленная еда (total-food-count) и выживаемость муравьёв (count turtles). Анализ проведён в R.&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47591</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47591"/>
		<updated>2026-06-10T13:53:51Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) и R-код ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов BehaviorSpace и R-скрипты для статистического анализа доступны в GitHub-репозитории: [[1]] (или вставьте прямую ссылку вместо [[1]]).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47590</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47590"/>
		<updated>2026-06-10T13:53:04Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* План экспериментов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализованы два независимых эксперимента для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1 (Гипотеза 1): Сравнение трёх стратегий ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;use-memory?&amp;lt;/code&amp;gt; — три сценария: только феромон, только память, феромон+память&lt;br /&gt;
** &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
** время прогона = 1000 тиков&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 20&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 6 комбинаций × 20 = &#039;&#039;&#039;120&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2 (Гипотеза 2): Влияние количества еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированная стратегия:&#039;&#039;&#039; феромон + память (&amp;lt;code&amp;gt;use-memory? = true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;evaporation-rate = 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;diffusion-rate = 50&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Независимая переменная:&#039;&#039;&#039; &amp;lt;code&amp;gt;more-food?&amp;lt;/code&amp;gt; — два уровня: 3 источника, 6 источников&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; те же (&amp;lt;code&amp;gt;population = 50&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-threshold = 100&amp;lt;/code&amp;gt;, 1000 тиков)&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 30&lt;br /&gt;
* &#039;&#039;&#039;Всего прогонов:&#039;&#039;&#039; 2 комбинации × 30 = &#039;&#039;&#039;60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) и R-код ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов BehaviorSpace и R-скрипты для статистического анализа доступны в GitHub-репозитории: [[1]] (или вставьте прямую ссылку вместо [[1]]).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47585</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47585"/>
		<updated>2026-06-10T13:35:19Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью двух экспериментов в среде BehaviorSpace были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Первый эксперимент (проверка Гипотезы 1) включал 6 комбинаций параметров (3 стратегии × 2 уровня еды) с 20 повторениями (120 прогонов). Второй эксперимент (Гипотеза 2) проводился при фиксированной стратегии «феромон + память» и двух уровнях еды (3 и 6 источников) с 30 повторениями (60 прогонов). &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: &#039;&#039;&#039;12960 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Patarakin&amp;diff=47310</id>
		<title>Обсуждение участника:Patarakin</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Patarakin&amp;diff=47310"/>
		<updated>2026-05-29T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Стигмергия в образовании */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;  Тест&lt;br /&gt;
* {{#invoke:RandomPageFromCategory|main|category=Book}}&lt;br /&gt;
* [[{{#invoke:RandomPageFromCategory|main|category=Person}}]]&lt;br /&gt;
* [[{{#invoke:RandomPageFromCategory|main|category=Book}}]]&lt;br /&gt;
&lt;br /&gt;
== teachers_flow_web ==&lt;br /&gt;
https://digida.mgpu.ru/index.php/Обсуждение:Заглавная_страница#Как_я_взаимодействию_с_ассистентом_искусственного_интеллекта_Перплексити&lt;br /&gt;
&lt;br /&gt;
==Тезаурус 4== &lt;br /&gt;
&lt;br /&gt;
Да, хорошо. Положите пожалуйста. Потому что моя основная проблема, что у меня VOSviewer не работает же и я не могла эти данные получить в таком виде, как вы их прислали. &lt;br /&gt;
Но у меня почти получилось что-то похожее! Обходными путями странными) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Тезаурус 3==&lt;br /&gt;
&lt;br /&gt;
Хорошо, я остановлюсь, во избежание апокалипсиса) &lt;br /&gt;
Но мне казалось, что все не так плохо, за исключением того, что в ручную просматривать фамилии в текстовом файле сложно. Попробовала поговорить с ЖПТ, он написал код для R. Но дальше уже я не сильна, какая-то каша началась.&lt;br /&gt;
&lt;br /&gt;
Я научилась в Экселе сделать функцию &amp;quot;Найти&amp;quot; и он выдает все ячейки с таким ФИО, там есть кнопка &amp;quot;Заменить&amp;quot;. С ней еще не поняла как работать. И есть ли смысл вообще так делать.&lt;br /&gt;
&lt;br /&gt;
== Тезаурус 2== &lt;br /&gt;
Я сохранила из экселя только столбец с авторами, он нормально открылся на маке потом, с этим разобралась. Сейчас основная проблема это понять какой логикой заменять? &lt;br /&gt;
Потому что я вижу автора одного, например. Он есть как самостоятельный автор, есть в соавторстве. И непонятно как с этим соавторством быть. Объединять ли или нет, потому что с одним автором есть 2-3 статьи в соавторстве с разными людьми. &lt;br /&gt;
Это еще полпроблемы. Проблема если в одном соавторстве на русском, а в другом на английском?&lt;br /&gt;
На 59 строк обработала, приступаю на 270. &lt;br /&gt;
Но 900 не факт, что осилю физически и эмоционально. &lt;br /&gt;
&lt;br /&gt;
Я сейчас делаю текстовый документ по каждому универу, в котором отдельных &amp;quot;Нормальных&amp;quot; авторов удаляю, а повторки оставляю и группирую, чтобы вам завтра показать. &lt;br /&gt;
&lt;br /&gt;
== Тезаурус== &lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! &lt;br /&gt;
&lt;br /&gt;
Начала разбираться с тезаурусом, возник ряд проблем: &lt;br /&gt;
Если в датасете есть один автор с точками, другой без точек - мы их меняем. &lt;br /&gt;
1. А если есть один автор, но он без точек в разных местах по одному - как быть? &lt;br /&gt;
2. Если автор в соавторстве пишет, и в одном месте он с точками, а в другом - без точек. Что делаем в этом случае? &lt;br /&gt;
&lt;br /&gt;
Помогите пожалуйста) Айжан --[[Участник:Айжан Ужинкина]] ([[Обсуждение участника:Айжан Ужинкина|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
== Просьба от Антюховой Эльзы ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, посмотрите, пожалуйста, почему я не могу добавить приложения, разработанные на языке программирования Snap?&lt;br /&gt;
&lt;br /&gt;
== Если нужно задать ==&lt;br /&gt;
&lt;br /&gt;
Примерный вопрос ... --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 17:16, 25 ноября 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Получилось добавить Dataset Lens как таблицу, сделала заголовки. Посмотрите, пожалуйста, и отметите в ЛМС это задание, если всё нормально. (Татьяна Астафьева) --[[Участник:Татьяна Астафьева|Татьяна Астафьева]] ([[Обсуждение участника:Татьяна Астафьева|обсуждение]]) 20:30, 25 ноября 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания --[[Участник:Дементьева Мария Владимировна|Дементьева Мария]] ([[Обсуждение участника:Дементьева Мария Владимировна|обсуждение]]) 16:08, 5 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, проверьте, пожалуйста, выполненные задания на моей странице и проставьте баллы в LMS --[[Участник:Ширкина Д|Ширкина Д]] ([[Обсуждение участника:Ширкина Д|обсуждение]]) 10:57, 6 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, посмотрите, пожалуйста, задания и отметьте, если все хорошо, в LMS, прошу прощения за скриншоты с телефона, не могу зайти на сайты через браузер ПК [[Участник: Tatiana Khaidarova]] ([[Обсуждение участника: Tatiana Khaidarova|обсуждение]]) 23:43, 6 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, посмотрите, пожалуйста, страницу и отметьте в LMS (Тюрикова Арина), если всё хорошо --[[Участник:Tyurikovaaa155|Tyurikovaaa155]] ([[Обсуждение участника:Tyurikovaaa155|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! Посмотрите, пожалуйста, страницу (Семина Мария)&lt;br /&gt;
[[Участник:Мария Семина|Мария Семина]] ([[Участник:Мария Семина|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, ссылки в LMS проставила, посмотрите, пожалуйста [[Участник: Tatiana Khaidarova]] ([[Обсуждение участника: Tatiana Khaidarova|обсуждение]]) 15:39, 10 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания (Волынчикова Анна)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, посмотрите, пожалуйста, страницу и отметьте в LMS (Дмитренко Надежда), если всё хорошо и нужно ли что-то подправить --[[Участник:DmitrenkoNP|DmitrenkoNP]] ([[Обсуждение участника:DmitrenkoNP|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Добрый вечер. Выполнил задания. Просьба проверить и отметить в LMS. [[Участник:InasovAA]] (Инасов Артем)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер. Выполнила задания Евгений Дмитриевич. посмотрите, пожалуйста, страничку, проверить и отметить в LMS. [[Участник:Карина]] (Мергалиева Карина)&lt;br /&gt;
&lt;br /&gt;
Сделал NetsBlox. [[Участник:Вольдемар]] (Шкабара Владимир)&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич. Сделал NetsBlox, прошу проверить. [[Участник:DzhamalkhanovRV]]&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания. (Беляева Мария) [[Участник:БеляеваМД]]&lt;br /&gt;
&lt;br /&gt;
== Основы моделирования - результаты к зачету ==&lt;br /&gt;
&lt;br /&gt;
И здесь - пришел, указал, что сделал, оставил подпись --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 09:20, 26 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
== Проверка работ в LMS ==&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич!&lt;br /&gt;
Добавил ссылки на выполненные работы в LMS.&lt;br /&gt;
Просьба проверить. и проставить оценку.&lt;br /&gt;
&lt;br /&gt;
== Информация от Антюховой Эльзы ==&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! &lt;br /&gt;
Хочу сообщить о том, что я внесла необходимые правки в свою выпускную квалификационную работу. Буду очень признательна, если Вы сможете уделить время и посмотреть ее. Заранее спасибо!&lt;br /&gt;
&lt;br /&gt;
== Проверка статьи &amp;quot;Репрезентация мотивов самостоятельной учебной работы в личностных нарративах студентов&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, добрый день! Могли бы Вы проверить мою работу? Что нужно скорректировать/добавить?&lt;br /&gt;
&lt;br /&gt;
== Репрезентация мотивов самостоятельной учебной работы в личностных нарративах студентов ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, я добавила категорию [[:Категория:Психо-лингвистическое исследование]] в конце текста статьи, но на странице моя работа не появилась&lt;br /&gt;
Подскажите, что нужно поправить сейчас?&lt;br /&gt;
&lt;br /&gt;
== Исправление АДЭУ-221 ==&lt;br /&gt;
&lt;br /&gt;
 Арлинская поправила [[Аналитика_профиля_ВК#🗂_Структура_проекта|Работа_Арлинская]]&lt;br /&gt;
 Муханова Анна (добавила интерактивную карту на страничку) [[Карта друзей|Муханова_карта_друзей]]&lt;br /&gt;
 Сабитова Алина (поменяла оформление кодов) [[Анализ целевой аудитории сообщества VK|Сабитова_проект]]&lt;br /&gt;
 Бойко (поправил диаграмму, код, ссылки) [[Аналитический_инструмент_ScratchAPI#🗂_Структура_проекта|Работа_Бойко]]&lt;br /&gt;
&lt;br /&gt;
== Стигмергия в образовании ==&lt;br /&gt;
&lt;br /&gt;
[[Stygmergia v obrazovanii]]&lt;br /&gt;
&lt;br /&gt;
До этого пытались залить на GitHub и через ссылку на raw файл (но как видно на статье сейчас как раз, оно не открывается&lt;br /&gt;
&lt;br /&gt;
На GitHub в репозитории есть залитый файл в формате .nlogox&lt;br /&gt;
&lt;br /&gt;
https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics&lt;br /&gt;
&lt;br /&gt;
Html к сожалению не даёт прикрепить как файл, так что на всякий залила на GitHub и продублировала на гугл диск на всякий случай&lt;br /&gt;
&lt;br /&gt;
https://drive.google.com/drive/folders/17bbGxT_Nz9q77nXFdA4kdBMyWYVgonNg?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Файлы проверила, в приложении всё открывается и работает, заранее спасибо!&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, мы закончили 2 этап и провели эксперименты. Также добавили оформление по новым разделам. Можете, пожалуйста, проверить, всё ли хорошо в нашей работе?&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47309</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47309"/>
		<updated>2026-05-29T11:36:18Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* План экспериментов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: &#039;&#039;&#039;12960 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47308</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47308"/>
		<updated>2026-05-29T11:34:41Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Участники */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47307</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47307"/>
		<updated>2026-05-29T11:33:51Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]] — создание и оформление страницы, разработка и модификация кода модели NetLogo, выгрузка модели на GitHub, описание кода&lt;br /&gt;
* [[Участник:Софронова Кира|Кира Софронова]] — формулировка статистических гипотез, анализ данных в R, визуализация результатов, интерпретация выводов, частичное оформление&lt;br /&gt;
* [[Участник:Маргарита Еськова|Маргарита Еськова]] — аннотация, формирование гипотез, проведение экспериментов в BehaviorSpace, сбор и выгрузка данных на GitHub, частичное оформление&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47306</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47306"/>
		<updated>2026-05-29T11:30:43Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (феромон + память)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47305</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47305"/>
		<updated>2026-05-29T11:30:08Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (память + феромон)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
=== Цель работы ===&lt;br /&gt;
&lt;br /&gt;
Количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47304</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47304"/>
		<updated>2026-05-29T11:29:08Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (память + феромон)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
Цель работы — количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47303</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47303"/>
		<updated>2026-05-29T11:28:42Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Рабочие гипотезы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (память + феромон)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
Цель работы — количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
## Рабочие гипотезы&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Не существует статистически значимой разницы в эффективности (количестве доставленной еды `total-food-count`) между тремя сценариями: использованием только коллективного феромона, только индивидуальной памяти и их сочетанием.&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Сценарий, сочетающий коллективный феромон и индивидуальную память, обеспечивает статистически значимо более высокую эффективность, чем каждый из этих механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;H₀:&#039;&#039;&#039; Увеличение количества источников еды (с 3 до 6) не приводит к статистически значимому изменению эффективности колонии (`total-food-count`) и выживаемости муравьёв (`count turtles`).&lt;br /&gt;
* &#039;&#039;&#039;H₁:&#039;&#039;&#039; Увеличение количества источников еды приводит к статистически значимому росту эффективности колонии и выживаемости муравьёв, а также может влиять на величину преимущества от использования индивидуальной памяти.&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47302</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47302"/>
		<updated>2026-05-29T11:27:01Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов:&lt;br /&gt;
* &#039;&#039;&#039;только коллективный феромон&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;только индивидуальная память&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;сочетание (память + феромон)&#039;&#039;&#039;&lt;br /&gt;
С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
Цель работы — количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47301</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47301"/>
		<updated>2026-05-29T11:25:20Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Аннотация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов: только коллективный феромон, только индивидуальная память и их сочетание. С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. &lt;br /&gt;
&lt;br /&gt;
Цель работы — количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47300</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47300"/>
		<updated>2026-05-29T11:24:39Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
В данном проекте исследуется механизм стигмергии (коллективного взаимодействия через метки в среде) и его конкуренция/синергия с индивидуальной памятью агентов. На примере модифицированной агентной модели «Муравьи» (NetLogo) сравниваются три стратегии поиска ресурсов: только коллективный феромон, только индивидуальная память и их сочетание. С помощью полного факторного эксперимента в среде BehaviorSpace (6 комбинаций параметров, 2160 повторений, всего 12 960 прогонов) были собраны данные о эффективности колонии (доставленная еда) и выживаемости муравьёв. Цель работы — количественно оценить, даёт ли совместное использование коллективного и индивидуального опыта статистически значимое преимущество по сравнению с каждым из механизмов по отдельности.&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47299</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47299"/>
		<updated>2026-05-29T11:22:39Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47298</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47298"/>
		<updated>2026-05-29T11:21:12Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Исходные данные экспериментов (CSV) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47297</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47297"/>
		<updated>2026-05-29T11:17:45Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Дизайн эксперимента */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastics-source/Labs_my_beloved/tree/main/Econometrics Memory_Ants-table.csv]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47296</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47296"/>
		<updated>2026-05-29T11:17:02Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* План экспериментов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в среде BehaviorSpace (NetLogo). Реализован полный факторный эксперимент для проверки двух гипотез.&lt;br /&gt;
&lt;br /&gt;
=== Дизайн эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Независимые переменные (варьируемые):&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?` — три сценария:&lt;br /&gt;
        * `false` — только коллективный феромон (стигмергия)&lt;br /&gt;
        * `true` при `evaporation-rate = 0`, `diffusion-rate = 0` — только индивидуальная память&lt;br /&gt;
        * `true` при `evaporation-rate = 10`, `diffusion-rate = 50` — память + феромон&lt;br /&gt;
    * `more-food?` — два уровня: `false` (3 источника еды) и `true` (6 источников)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039;&lt;br /&gt;
    * `population = 50`&lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели (зависимые переменные):&#039;&#039;&#039;&lt;br /&gt;
    * `total-food-count` — общее количество доставленной в гнездо еды&lt;br /&gt;
    * `count turtles` — количество живых муравьёв (выживаемость)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Повторений для каждой комбинации параметров:&#039;&#039;&#039; 10&lt;br /&gt;
* &#039;&#039;&#039;Длительность одного прогона:&#039;&#039;&#039; 1000 тиков&lt;br /&gt;
&lt;br /&gt;
Итого: 3 сценария × 2 уровня еды × 10 повторений = &#039;&#039;&#039;60 прогонов&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файл с результатами всех прогонов BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* GitHub: [https://github.com/cristycrastics-source/Labs_my_beloved/tree/main/Econometrics Memory_Ants-table.csv]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47295</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47295"/>
		<updated>2026-05-29T11:15:31Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Собираемые данные для анализа */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47294</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47294"/>
		<updated>2026-05-29T11:06:21Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics/Experiments]&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47293</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47293"/>
		<updated>2026-05-29T10:58:48Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GitHub:&#039;&#039;&#039; []&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand [https://archive.org/details/introductiontoag0000wile/page/n507/mode/2up]&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник [https://www.econometrics-with-r.org/index.html]&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham [https://jwmason.org/wp-content/uploads/2021/08/Cunningham-Cuasal-Inference-the-Mixtape.pdf]&lt;br /&gt;
* Дружелюбная эконометрика — учебник [https://books.econ.msu.ru/Introduction-to-Econometrics/]&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47292</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47292"/>
		<updated>2026-05-29T10:44:25Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Гипотеза 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GitHub:&#039;&#039;&#039; []&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham&lt;br /&gt;
* Дружелюбная эконометрика — учебник&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47291</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47291"/>
		<updated>2026-05-29T10:40:59Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
== План эксперимента ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
=== Исходные данные экспериментов (CSV) ===&lt;br /&gt;
&lt;br /&gt;
CSV-файлы с результатами прогонов в BehaviorSpace:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GitHub:&#039;&#039;&#039; []&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham&lt;br /&gt;
* Дружелюбная эконометрика — учебник&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47290</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47290"/>
		<updated>2026-05-29T10:36:45Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 1. Сравнение механизмов: феромон, память и их сочетание ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Эксперимент 2. Влияние количества источников еды ===&lt;br /&gt;
&lt;br /&gt;
== План эксперимента ==&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводятся в BehaviorSpace (NetLogo). Оба эксперимента проводятся за один прогон. Всего выполнено 12 960 прогонов.&lt;br /&gt;
&lt;br /&gt;
=== Параметры эксперимента ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Переменные:&#039;&#039;&#039;&lt;br /&gt;
    * `use-memory?`&lt;br /&gt;
    * `evaporation-rate`&lt;br /&gt;
    * `diffusion-rate`&lt;br /&gt;
* &#039;&#039;&#039;Фиксированные параметры:&#039;&#039;&#039; &lt;br /&gt;
    * `population = 50 &lt;br /&gt;
    * `memory-threshold = 100`&lt;br /&gt;
    * `more-food? = false/true/false/true/false/true`&lt;br /&gt;
* &#039;&#039;&#039;Замеряемые показатели:&#039;&#039;&#039; &lt;br /&gt;
    * `total-food-count`&lt;br /&gt;
    * `count turtles`&lt;br /&gt;
* &#039;&#039;&#039;Повторений:&#039;&#039;&#039; 10 для каждой комбинации&lt;br /&gt;
* &#039;&#039;&#039;Тиков:&#039;&#039;&#039; 1000&lt;br /&gt;
&lt;br /&gt;
== Модель ==&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — [[Wilensky]], Rand&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham&lt;br /&gt;
* Дружелюбная эконометрика — учебник&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Категория:Работы по эконометрике]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47257</id>
		<title>Stygmergia v obrazovanii</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Stygmergia_v_obrazovanii&amp;diff=47257"/>
		<updated>2026-05-27T17:45:34Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: /* Распределение работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Стигмергия]] в образовании =&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Стигмергия]] | ?Description }}&lt;br /&gt;
&lt;br /&gt;
== Аннотация ==&lt;br /&gt;
&lt;br /&gt;
== Рабочие гипотезы ==&lt;br /&gt;
&lt;br /&gt;
=== Модель ===&lt;br /&gt;
&amp;lt;netlogo model=&amp;quot;Memory_Ants&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Скачать модель (.nlogox) ===&lt;br /&gt;
&#039;&#039;&#039;GitHub:&#039;&#039;&#039; [https://github.com/cristycrastys-source/Labs_my_beloved/tree/main/Econometrics]&lt;br /&gt;
&lt;br /&gt;
== Инструменты и параметры модели ==&lt;br /&gt;
&lt;br /&gt;
=== Инструменты ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Моделирование:&#039;&#039;&#039; NetLogo (модель Ants с добавленной памятью)&lt;br /&gt;
* &#039;&#039;&#039;Анализ данных:&#039;&#039;&#039; R (библиотеки tidyverse, ggplot2, lmtest)&lt;br /&gt;
* &#039;&#039;&#039;Среда реализации:&#039;&#039;&#039; Поле цифровой дидактики (SMW)&lt;br /&gt;
&lt;br /&gt;
=== Параметры среды ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Размер мира:&#039;&#039;&#039; от -40 до 40 (80×80)&lt;br /&gt;
* &#039;&#039;&#039;Гнездо:&#039;&#039;&#039; центр (0,0), радиус 5&lt;br /&gt;
* &#039;&#039;&#039;Еда:&#039;&#039;&#039; на радиусе 30 от центра, 3 или 6 кучек&lt;br /&gt;
* &#039;&#039;&#039;Феромон:&#039;&#039;&#039; диффузия и испарение управляются ползунками `diffusion-rate` и `evaporation-rate`&lt;br /&gt;
&lt;br /&gt;
=== Управляющие параметры (настройки модели) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Тип !! Диапазон !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `population` || Slider || 0–100 || Количество муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `diffusion-rate` || Slider || 0–50 || Скорость распространения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `evaporation-rate` || Slider || 0–20 || Скорость испарения феромона&lt;br /&gt;
|-&lt;br /&gt;
| `use-memory?` || Switch || On/Off || Включение/выключение памяти&lt;br /&gt;
|-&lt;br /&gt;
| `more-food?` || Switch || On/Off || Дополнительные источники еды (3 → 6)&lt;br /&gt;
|-&lt;br /&gt;
| `memory-threshold` || Slider || 50–200 || Порог энергии для использования памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Цветовая индикация муравьёв ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Цвет !! Состояние&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Зелёный&#039;&#039;&#039; || Ищет еду, память пуста&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Синий&#039;&#039;&#039; || Идёт по памяти к запомненной еде&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Фиолетовый&#039;&#039;&#039; || Несёт еду в гнездо&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Жёлтый&#039;&#039;&#039; || Имеет 1 место в памяти (но не использует его в данный момент)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Красный&#039;&#039;&#039; || Имеет 2 и более мест в памяти&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Собираемые данные для анализа ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Переменная !! Откуда !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| `total-food-count` || Глобальная || Общее количество доставленной еды&lt;br /&gt;
|-&lt;br /&gt;
| `count turtles` || Встроенная || Количество живых муравьёв&lt;br /&gt;
|-&lt;br /&gt;
| `length my-memory` || Индивидуальная || Размер памяти муравья&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как это работает ===&lt;br /&gt;
&lt;br /&gt;
# Муравьи начинают с пустой памятью (&#039;&#039;&#039;зелёные&#039;&#039;&#039;)&lt;br /&gt;
# Найдя еду, запоминают координаты патча и становятся &#039;&#039;&#039;фиолетовыми&#039;&#039;&#039; (несут еду)&lt;br /&gt;
# После доставки еды в гнездо цвет меняется в зависимости от количества запомненных мест (&#039;&#039;&#039;жёлтый&#039;&#039;&#039; = 1 место, &#039;&#039;&#039;красный&#039;&#039;&#039; = 2+)&lt;br /&gt;
# Когда энергия падает ниже порога (`memory-threshold`), муравей с памятью становится &#039;&#039;&#039;синим&#039;&#039;&#039; и идёт к ближайшему запомненному месту&lt;br /&gt;
# Если запомненное место опустело, муравей ищет еду в радиусе 8 патчей вокруг; если не находит — забывает это место&lt;br /&gt;
&lt;br /&gt;
== План экспериментов ==&lt;br /&gt;
&lt;br /&gt;
== Результаты ==&lt;br /&gt;
&#039;&#039;(R-код, графики, выводы)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Просмотр кода с пояснениями ==&lt;br /&gt;
=== Полный код (.nlogo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot; line&amp;gt;&lt;br /&gt;
;; ANTS WITH MEMORY - ФИНАЛ&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; РАЗМЕР МИРА: от -40 до 40 (80×80)&lt;br /&gt;
;; ЕДА: на радиусе 30 от центра&lt;br /&gt;
;; ============================================&lt;br /&gt;
;; ЦВЕТА МУРАВЬЁВ:&lt;br /&gt;
;; ЗЕЛЁНЫЙ - ищет еду (память пуста)&lt;br /&gt;
;; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
;; ФИОЛЕТОВЫЙ - несёт еду в гнездо&lt;br /&gt;
;; ЖЁЛТЫЙ - 1 место в памяти (не использует)&lt;br /&gt;
;; КРАСНЫЙ - 2+ места в памяти (не использует)&lt;br /&gt;
;; ============================================&lt;br /&gt;
&lt;br /&gt;
globals [&lt;br /&gt;
  total-food-count      ; общее количество еды, доставленной в гнездо&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
patches-own [&lt;br /&gt;
  chemical              ; феромон на патче (коллективный след)&lt;br /&gt;
  food-here             ; наличие еды на патче (0 или 1)&lt;br /&gt;
  is-nest               ; является ли патч гнездом (1 да, 0 нет)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
turtles-own [&lt;br /&gt;
  my-food               ; есть ли у муравья еда (0 или 1)&lt;br /&gt;
  my-energy             ; текущий запас энергии муравья&lt;br /&gt;
  my-memory             ; список запомненных патчей (места, где была еда)&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; НАСТРОЙКА МИРА&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to setup&lt;br /&gt;
  clear-all&lt;br /&gt;
  set-default-shape turtles &amp;quot;bug&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ГНЕЗДО =====&lt;br /&gt;
  ; Все патчи в радиусе 5 от центра становятся гнездом&lt;br /&gt;
  ask patches [&lt;br /&gt;
    ifelse (distancexy 0 0) &amp;lt; 5 [&lt;br /&gt;
      set is-nest 1&lt;br /&gt;
      set pcolor violet&lt;br /&gt;
    ] [&lt;br /&gt;
      set is-nest 0&lt;br /&gt;
      set food-here 0&lt;br /&gt;
      set chemical 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ ИСТОЧНИКИ ЕДЫ =====&lt;br /&gt;
  let radius 30                      ; расстояние от центра до еды&lt;br /&gt;
  let sources 3                      ; базовое количество источников&lt;br /&gt;
  if more-food? = true [ set sources 6 ]  ; если включён переключатель&lt;br /&gt;
  &lt;br /&gt;
  ; Равномерно распределяем источники по кругу&lt;br /&gt;
  let angles []                       ; список углов&lt;br /&gt;
  let step 360 / sources              ; шаг между источниками&lt;br /&gt;
  let current 0&lt;br /&gt;
  repeat sources [&lt;br /&gt;
    set angles lput current angles&lt;br /&gt;
    set current current + step&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; Для каждого угла создаём пятно еды радиусом 5&lt;br /&gt;
  foreach angles [ angle -&amp;gt;&lt;br /&gt;
    let xc radius * cos angle&lt;br /&gt;
    let yc radius * sin angle&lt;br /&gt;
    ask patches with [ distancexy xc yc &amp;lt; 5 ] [&lt;br /&gt;
      set food-here 1&lt;br /&gt;
      ; Разные цвета для разных источников&lt;br /&gt;
      if angle = 0   [ set pcolor cyan ]&lt;br /&gt;
      if angle = 60  [ set pcolor sky ]&lt;br /&gt;
      if angle = 120 [ set pcolor blue ]&lt;br /&gt;
      if angle = 180 [ set pcolor cyan ]&lt;br /&gt;
      if angle = 240 [ set pcolor sky ]&lt;br /&gt;
      if angle = 300 [ set pcolor blue ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== СОЗДАЁМ МУРАВЬЁВ =====&lt;br /&gt;
  create-turtles population [&lt;br /&gt;
    setxy 0 0                       ; все муравьи начинают из гнезда&lt;br /&gt;
    set size 2&lt;br /&gt;
    set color green                 ; ЗЕЛЁНЫЙ - ищет еду, память пуста&lt;br /&gt;
    set my-food 0&lt;br /&gt;
    set my-energy 200&lt;br /&gt;
    set my-memory []                ; память пуста&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set total-food-count 0&lt;br /&gt;
  reset-ticks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ОСНОВНОЙ ЦИКЛ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to go&lt;br /&gt;
  ask turtles [&lt;br /&gt;
    if who &amp;gt;= ticks [ stop ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ТРАТИМ ЭНЕРГИЮ =====&lt;br /&gt;
    ; Каждый шаг отнимает 1 единицу энергии&lt;br /&gt;
    set my-energy my-energy - 1&lt;br /&gt;
    if my-energy &amp;lt;= 0 [ die ]       ; энергия кончилась - муравей умирает&lt;br /&gt;
    &lt;br /&gt;
    ; ===== СБРОС ЕДЫ В ГНЕЗДЕ =====&lt;br /&gt;
    ; Если муравей в гнезде и несёт еду - выгружает её&lt;br /&gt;
    if is-nest = 1 and my-food = 1 [&lt;br /&gt;
      set my-food 0&lt;br /&gt;
      set my-energy my-energy + 100    ; награда за доставленную еду&lt;br /&gt;
      set total-food-count total-food-count + 1  ; увеличиваем счётчик&lt;br /&gt;
      update-color-by-memory           ; обновляем цвет в зависимости от памяти&lt;br /&gt;
      rt 180                           ; разворачиваемся&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ВОЗВРАЩЕНИЕ С ЕДОЙ =====&lt;br /&gt;
    ; Если муравей несёт еду - идёт прямо в гнездо&lt;br /&gt;
    if my-food = 1 [&lt;br /&gt;
      set color violet                 ; ФИОЛЕТОВЫЙ - несёт еду&lt;br /&gt;
      set chemical chemical + 60       ; оставляет феромон&lt;br /&gt;
      facexy 0 0                       ; поворачивается к центру (гнезду)&lt;br /&gt;
      wiggle&lt;br /&gt;
      fd 1&lt;br /&gt;
      stop&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    ; ===== ПОИСК ЕДЫ =====&lt;br /&gt;
    ; Если муравей не несёт еду - ищет её&lt;br /&gt;
    look-for-food&lt;br /&gt;
    &lt;br /&gt;
    wiggle&lt;br /&gt;
    fd 1&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБРАБОТКА ФЕРОМОНА =====&lt;br /&gt;
  ; Диффузия: феромон распространяется на соседние патчи&lt;br /&gt;
  diffuse chemical (diffusion-rate / 100)&lt;br /&gt;
  &lt;br /&gt;
  ask patches [&lt;br /&gt;
    ; Испарение: феромон постепенно исчезает&lt;br /&gt;
    set chemical chemical * (100 - evaporation-rate) / 100&lt;br /&gt;
    if chemical &amp;lt; 0.01 [ set chemical 0 ]&lt;br /&gt;
    &lt;br /&gt;
    ; Визуализация феромона (чем больше феромона, тем ярче зелёный)&lt;br /&gt;
    if food-here = 0 and is-nest = 0 [&lt;br /&gt;
      set pcolor scale-color green chemical 0 5&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ПОИСК ЕДЫ С ПАМЯТЬЮ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to look-for-food&lt;br /&gt;
  ; ===== ПОДБОР ЕДЫ =====&lt;br /&gt;
  ; Если на текущем патче есть еда - подбираем её&lt;br /&gt;
  if food-here &amp;gt; 0 [&lt;br /&gt;
    set my-food 1&lt;br /&gt;
    set food-here food-here - 1       ; еда исчезает с патча&lt;br /&gt;
    &lt;br /&gt;
    ; ЗАПОМИНАЕМ МЕСТО&lt;br /&gt;
    if use-memory? [&lt;br /&gt;
      set my-memory lput patch-here my-memory   ; добавляем патч в список&lt;br /&gt;
      if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]  ; ограничиваем размер&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    rt 180                           ; разворачиваемся к гнезду&lt;br /&gt;
    stop&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ИСПОЛЬЗОВАНИЕ ПАМЯТИ =====&lt;br /&gt;
  ; Если память включена, энергии мало и есть запомненные места&lt;br /&gt;
  if use-memory? and my-energy &amp;lt; memory-threshold and length my-memory &amp;gt; 0 [&lt;br /&gt;
    let target nobody&lt;br /&gt;
    let best-dist 999999&lt;br /&gt;
    &lt;br /&gt;
    ; Находим ближайшее запомненное место&lt;br /&gt;
    foreach my-memory [ mem-patch -&amp;gt;&lt;br /&gt;
      let d distance mem-patch&lt;br /&gt;
      if d &amp;lt; best-dist [&lt;br /&gt;
        set best-dist d&lt;br /&gt;
        set target mem-patch&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
    &lt;br /&gt;
    if target != nobody [&lt;br /&gt;
      ; ПРОВЕРЯЕМ, ЕСТЬ ЛИ ЕЩЁ ЕДА НА ЗАПОМНЕННОМ МЕСТЕ&lt;br /&gt;
      ifelse [food-here] of target &amp;gt; 0 [&lt;br /&gt;
        set color blue                ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
        face target&lt;br /&gt;
        stop&lt;br /&gt;
      ] [&lt;br /&gt;
        ; ЕСЛИ ЕДЫ НЕТ - ИЩЕМ В РАДИУСЕ 8 ПАТЧЕЙ ВОКРУГ&lt;br /&gt;
        let nearby-food patches with [food-here &amp;gt; 0 and distance target &amp;lt;= 8]&lt;br /&gt;
        ifelse any? nearby-food [&lt;br /&gt;
          ; нашли еду рядом - идём к ближайшей&lt;br /&gt;
          let closest-nearby min-one-of nearby-food [distance myself]&lt;br /&gt;
          ; добавляем новое место в память&lt;br /&gt;
          set my-memory lput closest-nearby my-memory&lt;br /&gt;
          if length my-memory &amp;gt; 15 [ set my-memory but-last my-memory ]&lt;br /&gt;
          set color blue            ; СИНИЙ - идёт по памяти к еде&lt;br /&gt;
          face closest-nearby&lt;br /&gt;
          stop&lt;br /&gt;
        ] [&lt;br /&gt;
          ; НЕТ ЕДЫ В РАДИУСЕ - УДАЛЯЕМ ЭТО МЕСТО ИЗ ПАМЯТИ&lt;br /&gt;
          set my-memory remove target my-memory&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ОБНОВЛЕНИЕ ЦВЕТА =====&lt;br /&gt;
  update-color-by-memory&lt;br /&gt;
  &lt;br /&gt;
  ; ===== ДВИЖЕНИЕ ПО ФЕРОМОНУ =====&lt;br /&gt;
  ; Если есть феромон - идём по нему&lt;br /&gt;
  if (chemical &amp;gt;= 0.05) and (chemical &amp;lt; 2) [&lt;br /&gt;
    uphill-chemical&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;; ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
to update-color-by-memory&lt;br /&gt;
  ; Обновляет цвет муравья в зависимости от размера его памяти&lt;br /&gt;
  ; (только если муравей не несёт еду и не в режиме синего)&lt;br /&gt;
  if my-food = 0 and color != blue [&lt;br /&gt;
    let mem-count length my-memory&lt;br /&gt;
    if mem-count = 0 [ set color green ]      ; ЗЕЛЁНЫЙ - память пуста&lt;br /&gt;
    if mem-count = 1 [ set color yellow ]     ; ЖЁЛТЫЙ - 1 место&lt;br /&gt;
    if mem-count &amp;gt;= 2 [ set color red ]       ; КРАСНЫЙ - 2+ мест&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to uphill-chemical&lt;br /&gt;
  ; Движение вверх по градиенту феромона&lt;br /&gt;
  ; Сравнивает концентрацию феромона спереди, справа и слева&lt;br /&gt;
  let scent-ahead chemical-scent 0&lt;br /&gt;
  let scent-right chemical-scent 45&lt;br /&gt;
  let scent-left chemical-scent -45&lt;br /&gt;
  if (scent-right &amp;gt; scent-ahead) or (scent-left &amp;gt; scent-ahead) [&lt;br /&gt;
    ifelse scent-right &amp;gt; scent-left [ rt 45 ] [ lt 45 ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to wiggle&lt;br /&gt;
  ; Лёгкое случайное покачивание, чтобы муравьи не застревали&lt;br /&gt;
  rt random 30&lt;br /&gt;
  lt random 30&lt;br /&gt;
  if not can-move? 1 [ rt 180 ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
to-report chemical-scent [angle]&lt;br /&gt;
  ; Возвращает количество феромона на патче под указанным углом&lt;br /&gt;
  let p patch-right-and-ahead angle 1&lt;br /&gt;
  if p = nobody [ report 0 ]&lt;br /&gt;
  report [chemical] of p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
; Copyright 1997 Uri Wilensky.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [[Практикум по эконометрике (syllabus)]]&lt;br /&gt;
* An Introduction to Agent-Based Modeling with NetLogo — Wilensky, Rand&lt;br /&gt;
* Introduction to Econometrics with R — онлайн-учебник&lt;br /&gt;
* Causal Inference: The Mixtape — Cunningham&lt;br /&gt;
* Дружелюбная эконометрика — учебник&lt;br /&gt;
* NetLogo: [https://netlogo.org netlogo.org]&lt;br /&gt;
* R: [https://r-project.org r-project.org]&lt;br /&gt;
&#039;&#039;(Всё что использовали и что помогло при изучении - сюда)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Участники ==&lt;br /&gt;
* [[Участник:Софронова_Кира|Кира Софронова]]&lt;br /&gt;
* [[Участник:Маргарита_Еськова|Маргарита Еськова]]&lt;br /&gt;
* [[Участник:CristCas|Анастасия Юдаева]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46576</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46576"/>
		<updated>2026-04-30T09:11:07Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Description=Просто человечек&lt;br /&gt;
|Field_of_knowledge=Математика, Физика, Химия, Астрономия, География, Информатика, Робототехника, История, Педагогика, Социология, Экономика, Искусственный интеллект, Управление, Литература, Обществознание, Большие данные, Геометрия, Игра, Статистика, Музыка, Философия, Алгебра, Иностранный язык, Технология&lt;br /&gt;
|Ancestors=Патаракин Евгений Дмитриевич&lt;br /&gt;
|similar_concepts=A/B тестирование, Backpack, JSON, 1 ученик : 1 компьютер, Инструментарий текстового анализа, Веб-коммуникации&lt;br /&gt;
|Environment=Minecraft, Plants vs. Zombies, SimCity, Sims, Snake, Deepseek, Draw.io, GitHub, Moodle, Google Colab, Google Docs, Google Forms, Jupyter, DataLens, Miro, MySQL, Python, Word, Excel, Power shell, Microsoft Power Point, Microsoft office, Qwen, ChatGPT, Telegram, VK&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Робототехника, Английский язык, История, Обществознание, Экономика, Моделирование&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Community=Roblox, Genshin impact, GitHub, Microsoft Power Point, Steam workshop, VK, MGPU, МГПУ, ИЦО, ЦИБ-241&lt;br /&gt;
|Виды_спорта=Бадминтон, Фитнес (фитнес), Танцы (танцы), Бег, Настольный теннис&lt;br /&gt;
|Working_On=Stygmergia v obrazovanii&lt;br /&gt;
}}&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
[[Категория:ЦИБ-241]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46575</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46575"/>
		<updated>2026-04-30T09:10:03Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Description=Просто человечек&lt;br /&gt;
|Field_of_knowledge=Математика, Физика, Химия, Астрономия, География, Информатика, Робототехника, История, Педагогика, Социология, Экономика, Искусственный интеллект, Управление, Литература, Обществознание, Большие данные, Геометрия, Игра, Статистика, Музыка, Философия, Алгебра, Иностранный язык, Технология&lt;br /&gt;
|Ancestors=Патаракин Евгений Дмитриевич&lt;br /&gt;
|similar_concepts=A/B тестирование, Backpack, JSON, 1 ученик : 1 компьютер, Инструментарий текстового анализа, Веб-коммуникации&lt;br /&gt;
|Environment=Minecraft, Plants vs. Zombies, SimCity, Sims, Snake, Deepseek, Draw.io, GitHub, Moodle, Google Colab, Google Docs, Google Forms, Jupyter, DataLens, Miro, MySQL, Python, Word, Excel, Power shell, Microsoft Power Point, Microsoft office, Qwen, ChatGPT, Telegram, VK&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Робототехника, Английский язык, История, Обществознание, Экономика, Моделирование&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Community=Roblox, Genshin impact, GitHub, Microsoft Power Point, Steam workshop, VK, MGPU, МГПУ, ИЦО, ЦИБ-241&lt;br /&gt;
|Виды_спорта=Бадминтон, Фитнес (фитнес)&lt;br /&gt;
|Working_On=Stygmergia v obrazovanii&lt;br /&gt;
}}&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
[[Категория:ЦИБ-241]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46574</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46574"/>
		<updated>2026-04-30T09:07:33Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Description=Просто человечек&lt;br /&gt;
|Field_of_knowledge=Математика, Физика, Химия, Астрономия, География, Информатика, Робототехника, История, Педагогика, Социология, Экономика, Искусственный интеллект, Управление, Литература, Обществознание, Большие данные, Геометрия, Игра, Статистика, Музыка, Философия, Алгебра, Иностранный язык, Технология&lt;br /&gt;
|Ancestors=Патаракин Евгений Дмитриевич&lt;br /&gt;
|similar_concepts=A/B тестирование, Backpack, JSON, 1 ученик : 1 компьютер, Инструментарий текстового анализа, Веб-коммуникации&lt;br /&gt;
|Environment=Minecraft, Plants vs. Zombies, SimCity, Sims, Snake, Deepseek, Draw.io, GitHub, Moodle, Google Colab, Google Docs, Google Forms, Jupyter, DataLens, Miro, MySQL, Python, Word, Excel, Power shell, Microsoft Power Point, Microsoft office, Qwen, ChatGPT, Telegram, VK&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Робототехника, Английский язык, История, Обществознание, Экономика, Моделирование&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Community=Roblox, Genshin impact, GitHub, Microsoft Power Point, Steam workshop, VK, MGPU, МГПУ, ИЦО, ЦИБ-241&lt;br /&gt;
|Виды_спорта=Бадминтон, Фитнес (фитнес)&lt;br /&gt;
|Working_On=https://digida.mgpu.ru/index.php/Stygmergia_v_obrazovanii&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
[[Категория:ЦИБ-241]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46570</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46570"/>
		<updated>2026-04-30T08:45:32Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;привет&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46562</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46562"/>
		<updated>2026-04-30T08:27:17Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46561</id>
		<title>Участник:Маргарита Еськова</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9C%D0%B0%D1%80%D0%B3%D0%B0%D1%80%D0%B8%D1%82%D0%B0_%D0%95%D1%81%D1%8C%D0%BA%D0%BE%D0%B2%D0%B0&amp;diff=46561"/>
		<updated>2026-04-30T08:25:47Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: Новая страница: «Участник:Еськова Маргарита Ивановна  == Описание участника ==  {| class=&amp;quot;wikitable&amp;quot; ! Описание участника !! Description |- | &amp;#039;&amp;#039;&amp;#039;Область знаний&amp;#039;&amp;#039;&amp;#039; || Бизнес-информатика, Информатика, Экономика, Управление, Большие данные, Математика, Статистика, Моделирование, Искусственный и...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Участник:Еськова Маргарита Ивановна&lt;br /&gt;
&lt;br /&gt;
== Описание участника ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Описание участника !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Область знаний&#039;&#039;&#039; || Бизнес-информатика, Информатика, Экономика, Управление, Большие данные, Математика, Статистика, Моделирование, Искусственный интеллект&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Веб-сайт&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Видео запись&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Кто оказал влияние (учителя) из Категория:Person&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Понятия, которые интересуют из Категория:Понятие&#039;&#039;&#039; || Цифровая трансформация бизнеса, Анализ данных, IT-архитектура предприятия, Управление IT-проектами, Big Data, Машинное обучение, ERP-системы&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Среды и средства, которые использует из цифровых средств или игр или книг&#039;&#039;&#039; || Python, SQL, Excel, Power BI, Git, Jupyter Notebook, VS Code, Google Colab, книги по бизнес-аналитике и Data Science&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Позиция (положение)&#039;&#039;&#039; || Бакалавриат&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Профиль подготовки&#039;&#039;&#039; || Бизнес-информатика&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Педагогическая направленность&#039;&#039;&#039; || Нет&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Принадлежность к организациям (сообщества)&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Виды спорта, которыми занимается&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Проекты, статьи и рецепты, над которыми работает&#039;&#039;&#039; || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категория:ЦИБ-241]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Поля для автоматического запроса #ask --&amp;gt;&lt;br /&gt;
|Field_of_knowledge = Бизнес-информатика, Информатика, Экономика, Управление, Большие данные, Математика, Статистика, Моделирование, Искусственный интеллект&lt;br /&gt;
|Working_On =&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%95%D0%B3%D0%BE%D1%80_%D0%A8%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=44282</id>
		<title>Обсуждение участника:Егор Шокиров</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:%D0%95%D0%B3%D0%BE%D1%80_%D0%A8%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=44282"/>
		<updated>2026-02-19T06:52:11Z</updated>

		<summary type="html">&lt;p&gt;Маргарита Еськова: Новая страница: «---- Категория:UserMGPU Категория:ЦИБ-241»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
[[Категория:ЦИБ-241]]&lt;/div&gt;</summary>
		<author><name>Маргарита Еськова</name></author>
	</entry>
</feed>