На днях на Хабре появилась симпатичная статья "Создаем интерактивную симуляцию лесного пожара на Python с использованием клеточных автоматов". Я хочу пригласить вас ещё раз вернуться к этой модели, для того чтобы познакомиться с интересным и универсальным явлением самоорганизующейся критичности (СОК) и его свойствами. Этот механизм может реализовываться в открытых системах, состоящих из множества элементов, в которых локальные взаимодействия способны приводить к глобальным фазовым перестройкам всего ансамбля. При наличии внешнего источника энергии, создающего неупорядоченность, система, демонстрирующая СОК, достигает особого состояния, в котором катастрофические события образуют поток с определёнными статистическими и спектральными характеристиками. Эти характеристики легко выявляются в натурных наблюдениях. Универсальность СОК проявляется в том, что подобное поведение наблюдается в самых различных явлениях: шумах в электронике, эпидемиях, пожарах, землетрясениях, горных обвалах, экономических кризисах, вспышках возбуждения нейронов головного мозга и других случаях.

Модель леса с пожарами

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

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

Вот как выглядит пример такого процесса при достаточно редких пожарах, для которых P_i = 0.001 P_t, то есть, на 1000 вновь выросших деревьев приходится одно загоревшееся.

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

Функцией состояния здесь является количество живых деревьев, нормированное всей площадью леса (максимальным количеством клеток).
Функцией состояния здесь является количество живых деревьев, нормированное всей площадью леса (максимальным количеством клеток).

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

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

Распределение для катастроф, аппроксимация бета-распределением и математическое ожидание для масштаба пожара.

Распределение для катастроф, аппроксимация бета-распределением и математическое ожидание для масштаба пожара (синяя линия).

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

Точное выражение для распределения масштаба катастроф нас интересовать не будет, но оно неплохо описывается бета-распределением, показанным на рисунке сплошной линией. Бета-распределение — это двухпараметрическое распределение для случайных величин, принадлежащих интервалу (0, 1), которое описывает случайные доли какого-нибудь целого. Оно является распределением с максимальной энтропией для фиксированных средних геометрических значений для долей и соответствующих остатков, и по этой причине является «наиболее вероятным» наблюдаемым распределением для стохастических систем, не имеющих какой-либо структуры. Такую же роль играет, например нормальное распределение для неструктурированных случайных величин с фиксированными средним и дисперсией.

Отсюда мы можем сделать вывод о том, что катастрофы носят «достаточно» случайный характер, так что с помощью одного вполне случайного процесса (появление новых деревьев и новых пожаров) мы сгенерировали другой случайный процесс. В чём же тогда смысл нашего моделирования?

Розовый шум в лесу

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

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

Вот как выглядят эти две характеристики:

Спектры для динамики популяции и последовательности катастроф (1 млн. событий).

Спектры для динамики популяции и последовательности катастроф (1 млн. событий).

На графиках обе оси логарифмические, и мы видим, что спектры неплохо ложатся на прямые линии. Как известно, если обе оси на графике логарифмические, то прямая линия соответствует степенной функции. В качестве ориентира тонкой линией показан график функции y = x⁻¹. Сигнал, с таким спектром называется розовым шумом (фликкер-шумом или 1/f-шумом). Впервые он был описан в 1920-х годах при анализе шума в электронных устройствах с усилителями. Его вы можете услышать в хороших наушниках если включите усиление тишины, либо на нектором удалении от крупного водопада.

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

Интерес исследователей к розовому шуму был вызван его фрактальными свойствами: он не имеет выделенного временного масштаба и сигнал ведёт себя одинаково на различных периодах. В частности, его мощность в полосе частот между 10–20 Гц равна мощности в полосах между 100–200 Гц или 1000–2000 Гц. На практике это приводит к тому, что наблюдая только за сигналом (не зная, как именно он генерируется) невозможно статистическими методами предсказать его или, в нашем случае, определить когда произойдёт очередная катастрофа.

В нашей системе плотность леса перед пожаром растёт постепенно со вполне определённой средней скоростью \sim 1/P_t, кроме того, катастрофические события влияют друг на друга и не являются независимыми, поскольку изменяют состояние фистемы. Несмотря на всё это катастрофы формируют розовый шум, в котором последовательность событий не имеет какого-то выделенного масштаба и образуют пуассоновский поток.

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

Например, мы можем наблюдать за потоком автомобилей на трассе вдали от городов и выяснить, что за час мимо нас проехало 15 машин. Таким образом, мы можем сказать, что поток имеет интенсивность 1 машина в 4 минуты. Значит ли это, что они ехали строго раз в 4 минуты? Нет, они могли пройти плотной колонной или несколькими кластерами. Значит ли это, что если мы прождали после того как увидели машину 4 минут, что вот-вот должна проехать следующая? Нет, не значит, поскольку машины двигаются независимо друг от друга, длительность нашего ожидания никакой информации не несёт. В этом и состоит отличие интенсивности от частоты периодического процесса.

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

Распределения периодов между пожарами различного масштаба, уничтожающими n деревьев. Линией показано экспоненциальное распределение.
Распределения периодов между пожарами различного масштаба, уничтожающими n деревьев. Линией показано экспоненциальное распределение.

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

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

В областях, отмеченных красным цветом, давно не было землетрясений, поэтому низкий уровень сейсмичности помечен красным -- цветом опасности.
В областях, отмеченных красным цветом, давно не было землетрясений, поэтому низкий уровень сейсмичности помечен красным -- цветом опасности.
А это землетрясения, произошедшие спустя неделю, после приведённой выше публикации оценки сесмичности. Как видно, множество небольших событий произошло в областях с пониженной сесмичностью.
А это землетрясения, произошедшие спустя неделю, после приведённой выше публикации оценки сесмичности. Как видно, множество небольших событий произошло в областях с пониженной сесмичностью.

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

Частые пожары лучше редких

Что ещё интересного может показать наша модель? Увеличивая вероятность пожаров, мы будем наблюдать как сначала средний масштаб выгорания уменьшается, а потом устанавливается на некотором значении, изменяя форму распределения (сплошной линией показана аппроксимация бета-распределением, голубая линия показывает средний масштаб катастроф):

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

Если пожары станут очень частыми, то изменится и спектр катастроф, существенно отклоняясь от линейной зависимости.

При этом начинает выделяться угловая частота для катастроф определённого масштаба, хотя Фурье спектр остаётся линейным, а распределения интервалов — экспоненциальными. Таким образом мы видим, что самоорганизующаяся критичность может иметь различные формы и механизмы, сохраняя ключевые характеристики. Вот как выглядит процесс для P_i = 0.1 P_t :

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

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

* * *

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

Вы можете поиграть с описанной выше моделью здесь (лучше использовать компьютер, а не телефон).

Комментарии (9)


  1. jorge-list
    15.05.2025 03:27

    Спасибо за это восхитительное исследование!


  1. MAXH0
    15.05.2025 03:27

    Пришла беда - открывай ворота


  1. Perekhod_I
    15.05.2025 03:27

    занятно, спасибо


  1. its_fire_fire_fun_fun_fun
    15.05.2025 03:27

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

    По какому принципу выбиралась регулярная решетка? Квадратная, треугольная, гексагональная? Это ведь критическим образом влияет на порог возникновения связанного кластера. Я сталкивался со многими entry-level исследованиями, где этим не заморачивались и получали ерунду.

    Почему вообще решетка регулярная? Деревья-то растут как попало, можно и модель твердых дисков применить.

    С равномерностью распределения появляения новых деревьев тоже странно. Если провозглашается клеточный автомат, то нет проблем в том чтобы сделать в том числе скоррелированную с уже имеющимся деревьями модель (деревья ведь рощами растут, а не равномерно-случайно). Или я не так понял и все же введена корреляция?


    1. samsergey Автор
      15.05.2025 03:27

      Спасибо за вопросы, они позволяют дополнить статью методологическими рассуждениями.

      Если коротко, то модель моделирует не пожары в лесу, а простейшую систему, демонстрирующую явление самоорганизующейся критичности.

      При выборе модели, которая должна выявить или продемонстрировать какое-то универсальное явление или процесс, имеет смысл рассматривать минимальную модель (нормальную форму, универсальный объект и т. п.) которая уже способна на искомое поведение. Условно говоря, если для наблюдения какого-то эффекта достаточно линейной или квадратичной модели, то добавление дополнительных нелинейностей только добавит ограничений на её использование, но не внесёт ничего принципиально нового. Однако во всех более сложных и приближённых к реальности системах, имеющим в качестве подсистемы минимальную модель, ожидаемый эффект, если будет наблюдаться, будет объяснëн и может быть предсказан. Ещё раз подчеркну, что речь идёт об универсальном явлении, таком, например, как бифуркации, СОК или эмерджентность.

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

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

      Я проводил эксперименты с гексагональной решеткой. Поскольку метрика пространства не играет существенной роли в эффекте СОК, то статистические и спектральные свойства системы не изменились. Введение более сложной кластеризации (образование рощиц или кустов) может внести некоторые отклонения от наиболее простых распределений и картины спектральной плотности, но объясняться эти отклонения будут не явлением СОК, а внесёнными нами усложнениями модели.


  1. Flammmable
    15.05.2025 03:27

    Великолепная статья! И почему читатели проходят мимо неё?


    1. vkni
      15.05.2025 03:27

      Да не проходит никто, просто тут надо конспектировать, а не комментировать. :-)


  1. vkni
    15.05.2025 03:27

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


  1. Flammmable
    15.05.2025 03:27

    Пробовали ли вы смоделировать скорость зарастание пустых пространств лесом в зависимости от наличия рядом с пустым пространством того или иного количества деревьев (то есть смоделировать именно размножение деревьев)?

    И иследовали ли вы ситуацию (и предельные параметры) при которых в ходе очередно катастрофы все деревья выгорали подчистую, не оставляя шансов на продолжение существования леса?

    Ещё любопытно, при каких соотношениях интенсивности гроз и параметров размножения на неограниченном (или очень большом пространстве) будет достигаться максимальная однородность плотности леса, а при каких значениях - максимальная неоднородность плотности.