Модель лесного пожара Клеточные автоматы (VBA Excel)
Задание:
Создать и визуализировать математическую модель распространения лесного пожара в Excel.
Условия:
- поле 30 на 30 клеток;
- одна клетка - один шаг и одно дерево;
- вокруг горящего дерева есть 8 ближайших клеток, на которые может перейти пожар,
- состояние дерева: горящее - красное, сгоревшее - черное, несгоревшее - зеленое.
- Загорится ли дерево (вероятность) зависит от направления ветра (всего 8 направлений);
- Вероятность возгорания, направление ветра и скорость ветра выставляется произвольно в начале программы,
и являются исходными данными для формирования правил клеточного автомата.
Решение:
Правила для клеток автомата:
- Зеленая клетка может превратиться только в «красную» по вероятностному закону, если в соседях у нее красная;
- Красная – на следующем шаге, превращается в черную;
- Черная никогда не меняется.
В теории в автоматах существуют два принципиально разных вида клеток (по параметрам Причина-Следствие):
- Клетка-приемник – использует данные о состояниях своих соседей и в конечном итоге изменяет свое состояние
(как правило, для комплексного учета влияния соседей)
- Клетка-причина – влияет на соседей и, в конечном счете, изменяет их состояние или создает предпосылки
для такого изменения (и не исключено, что и свое).
В нашем случае, проще и удобнее использовать второй вид клеток, а для ускорения процесса расчета провести трансформацию правил. Самые сложные правила отдадим красной клетке. Матрица вероятностей «поджога соседей» должна учесть и скорость, и направление ветра, и влажность леса. Такая клетка как бы переводит соседние зеленые клетки в новое состояние (так более реально выглядит пожар). И сама тут же гаснет. В этом случае правила для зеленых и черных клеток – пусты.
Процесс пересчета состояний:
Цикл перебора клеток бежит пока не встретит «красную» в массиве. В самом массиве сразу ничего не меняется,
а лишь проверяются соседи и если среди них есть «зеленая», то в нее бросается «Искра» (функция RND).
Клетка, возможно, загорится, а возможно и нет. Изменения, если произойдут, зафиксируются в специальной коллекции.
Матрица вероятностей «поджога соседей» формируется таким образом, что «красные» клетки бросает искры в
основном по направлению ветра – и только на «зеленые» соседние клетки.
После окончания цикла очередного шага, вносим изменения в массив, одновременно очищая «коллекцию изменений».
скачать xls-файл
Тестируйте.
А это чуть усложненный вариант, позволяющий учитывать характер (план) растительности на участке местности и характеристики пород деревьев с точки зрения устойчивости к пожарам…
Большинство лиственных пород имеют пониженный коэффициент возгорания и являются естественным барьером на пути распространения огня в лесу…
Задать схему насаждений для моделирования распространения огня при различных направлениях и скоростях ветра можно при помощи этих не сложных и интуитивно понятных элементов управления
Еще есть Клеточный автомат на Delphi 7 ! Не пожар... Как игра "Жизнь"...
И клеточный автомат для маркетинговых исследований распространения на рынке двух товаров, отличающихся ценой и качеством. Изменяя параметры, можно видеть, как один товар вытесняется с рынка другим... с различной скоростью...
Другие примеры на языке «Delphi»
Другие примеры на языке «Visual Basic for application - VBA»
Поделиться в соц сетях: