Эксперименты с моделью Urban Suite - Economic Disparity

Материал из Поле цифровой дидактики

ОПИСАНИЕ МОДЕЛИ

 Description
Economic DisparityМодель «Экономическое неравенство» представляет собой симуляцию городской среды, в которой две категории населения — богатые и бедные — выбирают место жительства, учитывая три ключевых параметра: стоимость земли, качество территории и близость к рабочим местам. Модель иллюстрирует процессы пространственной сегрегации по доходам, формирование кластеров услуг в более состоятельных районах и динамическое изменения характеристик территории под влиянием социально-экономического состава населения. Она служит инструментом для изучения взаимосвязи социально-экономических факторов и распределения населения, а также демонстрирует принципы гедонистического выбора и положительную обратную связь в городской экономике. Каждый агент действует согласно собственным правилам и целям, что делает модель более реалистичной по сравнению с подходами, основанными на оптимизации общесистемных критериев. Изучение эмерджентных свойств. Модель показывает, как индивидуальные предпочтения агентов приводят к крупномасштабным структурам - сегрегации населения по доходам и кластеризации услуг в более состоятельных районах. Это демонстрирует концепцию эмерджентности в сложных системах.

Модель Urban Suite - Economic Disparity представляет упрощённую городскую экономическую систему, где агенты с различным социально-экономическим статусом конкурируют за землю в городском пространстве. Модель исследует процессы пространственной сегрегации и формирования экономического неравенства в городской среде. В модели есть фиксированные рабочие места (серые квадраты), распределённые по городской территории. Агенты стремятся минимизировать расстояние до ближайшего места работы.

ЭКСПЕРИМЕНТ 1

Автор - ZatsepinNA

Гипотеза
Изменение весов "rich-quality-priority" и "poor-price-priority" приведёт к разным типам городской сегрегации и уровням неравенства.

Цель эксперимента: Исследовать, как изменение приоритетов агентов (богатых и бедных) влияет на структуру городского пространства. В частности, нас интересует, как веса параметров rich-quality-priority (насколько богатые ценят качество района) и poor-price-priority (насколько бедные чувствительны к цене) определяют:

  • уровень пространственной сегрегации (измеряется индексом Дункана ),
  • степень неравенства в распределении полезности (измеряется коэффициентом Джини),
  • среднее расстояние между представителями двух групп,
  • разницу в средней полезности между богатыми и бедными.

Настройки NetLogo

;; ========== КОД ДЛЯ ЭКСПЕРИМЕНТОВ ==========

;; Индекс Дункана
to-report duncan-index
  let total-rich count rich
  let total-poor count poor
  if total-rich = 0 or total-poor = 0 [ report 0 ]
  let seg-sum 0
  ask patches [
    let p-rich count rich-here / total-rich
    let p-poor count poor-here / total-poor
    set seg-sum seg-sum + abs(p-rich - p-poor)
  ]
  report seg-sum / 2
end

;; Среднее расстояние между богатыми и бедными
to-report avg-distance-rich-poor
  if count rich = 0 or count poor = 0 [ report 0 ]
  let distances []
  ask rich [
    let closest-poor min [distance myself] of poor
    set distances lput closest-poor distances
  ]
  report mean distances
end

to-report utility-diff
  let rich-utils [utility-r] of rich with [utility-r > 0]
  let poor-utils [utility-p] of poor with [utility-p > 0]
  if (length rich-utils = 0 or length poor-utils = 0) [ report 0 ]
  let avg-rich mean rich-utils
  let avg-poor mean poor-utils
  report abs(avg-rich - avg-poor)
end

to-report gini-coefficient [ values ]
  if length values <= 1 [ report 0 ]
  let valid-values filter [ x -> x > 0 ] values
  if length valid-values <= 1 [ report 0 ]
  let avg-val mean valid-values
  if avg-val = 0 [ report 0 ]  ; защита от деления на 0
  let sorted sort valid-values
  let n length sorted
  let gini-sum 0
  let cumsum 0
  foreach sorted [ val ->
    set cumsum cumsum + val
    set gini-sum gini-sum + (cumsum - val / 2) / n / avg-val
  ]
  report 1 - gini-sum / n
end

;; Создать CSV файл
to create-csv [exp-name]
  let path (word "C:/Users/User/Desktop/" exp-name ".csv")
  file-open path
  file-print "run,ticks,rich_count,poor_count,duncan_index,avg_distance,utility_diff,gini_coefficient"
  file-close
end

to write-line [exp-name]
  let path (word "C:/Users/User/Desktop/" exp-name ".csv")

  ;; Берём только агентов с ненулевой полезностью
  let rich-utils [utility-r] of rich with [utility-r > 0]
  let poor-utils [utility-p] of poor with [utility-p > 0]
  let all-utils sentence rich-utils poor-utils

  ;; Если нет данных — ставим 0
  let gini-val ifelse-value (length all-utils > 1) [
    gini-coefficient all-utils
  ] [ 0 ]

  file-open path
  file-print (word
    run-number ","
    ticks ","
    count rich ","
    count poor ","
    duncan-index ","
    avg-distance-rich-poor ","
    utility-diff ","
    gini-val
  )
  file-close
end

;; Процедура для одного прогона
to run-single-run [exp-name rich-val poor-val]
  set rich-quality-priority rich-val
  set poor-price-priority poor-val
  setup
  repeat 2000 [
    go
  ]
  write-line exp-name
end

;; Процедура для 30 прогонов
to run-experiment [exp-name rich-val poor-val]
  set experiment-name exp-name
  create-csv exp-name
  set run-number 0
  repeat 30 [
    set run-number run-number + 1
    run-single-run exp-name rich-val poor-val
    print (word "Прогон " run-number " из 30 завершен.")
  ]
  print (word "Эксперимент " exp-name " ЗАВЕРШЕН!")
end

;; === КНОПКИ ИНТЕРФЕЙСА ===

to experiment-1
  run-experiment "exp1_08_05" 0.8 0.5
end

to experiment-2
  run-experiment "exp2_02_05" 0.2 0.5
end

to experiment-3
  run-experiment "exp3_05_08" 0.5 0.8
end

to experiment-4
  run-experiment "exp4_05_02" 0.5 0.2
end


Для реализации эксперимента в исходный код модели были добавлены следующие процедуры:

  • duncan-index — для расчёта индекса сегрегации,
  • avg-distance-rich-poor — для измерения среднего расстояния между богатыми и бедными,
  • utility-diff — для вычисления разницы в средней полезности между группами,
  • gini-coefficient — для оценки уровня неравенства,
  • run-experiment — для автоматического запуска 30 прогонов каждого сценария и записи результатов в CSV-файл.

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

Эксперимент проводился при четырёх комбинациях параметров rich-quality-priority и poor-price-priority, фиксированных системных настройках (residents-per-job = 100, number-of-tests = 30, max-jobs = 10, death-rate = 4, poor-per-step = 5, rich-per-step = 5) и на протяжении 2000 тиков. Данные были собраны для 30 независимых повторов на каждый сценарий.

Анализ графиков (Шаг 1–4)

На каждом графике:

  • Ось X: сценарий (A, B, C, D)
  • Ось Y(слева): значение индекса Дункана
  • Ось Y(справа): значение коэффициента Джини
  • Коробки (box plot) — показывают распределение результатов (медиана, IQR)
  • Точки — отдельные прогоны (30 на сценарий)

Шаг 1 эксперимента (Сценарий A: rich=0.8, poor=0.5)

Duncan Index: медиана ≈ 0.272, IQR [0.271–0.273]

Gini Coefficient: медиана ≈ 0.836, IQR [0.835–0.837]

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

Вывод для Шага 1

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

Шаг 2 эксперимента (Сценарий B: rich=0.2, poor=0.5)

Duncan Index: медиана ≈ 0.271, IQR [0.270–0.272]

Gini Coefficient: медиана ≈ 0.837, IQR [0.836–0.838]

Богатые почти не обращают внимания на качество, бедные умеренно чувствительны к цене. Сегрегация немного снижается, но неравенство остаётся высоким. Это говорит о том, что рассеивание богатых по городу не устраняет неравенство — бедные всё ещё ограничены ценой.

Вывод для Шага 2

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

Шаг 3 эксперимента (Сценарий C: rich=0.5, poor=0.8)

Duncan Index: медиана ≈ 0.271, IQR [0.270–0.272]

Gini Coefficient: медиана ≈ 0.840, IQR [0.839–0.841]

Богатые умеренно ценят качество, бедные очень чувствительны к цене. Сегрегация остаётся на среднем уровне, но неравенство растёт — бедные вынуждены жить в самых дешёвых районах, что усиливает разрыв в полезности.

Вывод для Шага 3

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

Шаг 4 эксперимента (Сценарий D: rich=0.5, poor=0.2)

Duncan Index: медиана ≈ 0.270, IQR [0.269–0.271]

Gini Coefficient: медиана ≈ 0.841, IQR [0.840–0.842]

Богатые умеренно ценят качество, бедные почти не реагируют на цену. Сегрегация минимальна — группы смешиваются. Однако неравенство достигает максимума — бедные теперь живут в хороших районах, но их полезность всё ещё ниже, чем у богатых.

Вывод для Шага 4

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

Главный вывод

Изменение приоритетов агентов напрямую формирует структуру городского пространства. Богатые, которые сильно ценят качество, создают элитные анклавы, вытесняя бедных в периферийные районы. Бедные, чувствительные к цене, усиливают сегрегацию, выбирая самые дешёвые зоны. Однако если бедные перестают реагировать на цену, сегрегация исчезает — но неравенство растёт, потому что они получают выгоду, но всё ещё отстают от богатых.

Это означает, что:

  • Сегрегация — результат рационального выбора, а не случайности: агенты оптимизируют свою полезность на основе приоритетов.
  • Цена — более мощный фактор, чем качество: снижение ценовой чувствительности бедных сильнее влияет на сегрегацию, чем требования богатых.
  • Смешанные районы ≠ справедливость: даже при отсутствии пространственного разделения неравенство может быть выше, если бедные не получают дополнительных ресурсов.

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

Заключение

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

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

ЭКСПЕРИМЕНТ 2

--KryuchkovSR (обсуждение) 22:58, 25 декабря 2025 (MSK)

Гипотеза: увеличение веса значения "death-rate" приводит к падению средней цены жилья "mean(price)" в общем и "mean(price) только в заселённых районах".

Цель эксперимента: Исследовать, как частота смертей влияет на среднюю цену в городе в общем, а также в местах, которые уже заселены, а не просто находятся на карте и пустуют.

Условия эксперимента:

1. death-rate = 4, 7, 10, 13.

2. rich-per-step = 5, poor-per-step = 5.

3. Остальные поля по умолчанию.

4. Шагов: 2000.


Настройки эксперимента в NetLogo

В данном эксперименте я получаю данные сразу для всех 4 значений death-rate (4, 7, 10, 13), а также получаю:

  • mean [price] of patches - средний уровень цен по всему пространству
  • mean [price] of patches with [any? turtles-here] - средний уровень цен только в заселённых районах

Шаг 1 эксперимента (death-rate = 4):

"mean price" = 4: медиана ≈ 45.7
"mean price lived area" = 4: медиана ≈ 50.7

При низкой смертности (death-rate = 4) система стабильно развивается: общая средняя цена растёт медленно, но уверенно. Средняя цена на заселённых участках растёт ещё медленнее — это говорит о том, что агенты (особенно богатые) активно «выбирают» и «поднимают» цены в своих районах, но общее пространство (включая пустые зоны) растёт быстрее.

Вывод для Шага 1:

При низкой смертности (death-rate = 4) система стабильна, но сегрегирована: богатые агенты создают «горячие точки» высоких цен, в то время как общая средняя цена растёт за счёт расширения рынка. Это подтверждает, что низкая смертность позволяет агентам формировать устойчивые «элитные» районы, повышая локальную цену, но не влияя сильно на общую динамику.

ЭКСПЕРИМЕНТ 3

--ZhiltsovES (обсуждение)

Гипотеза: Распределение рабочих мест в дорогих районах создаёт дополнительное преимущество для богатых и увеличивает социальное неравенство