Модель лесного пожара Клеточные автоматы (VBA Excel)

Задание:

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

Условия:

  • поле 30 на 30 клеток;
  • одна клетка - один шаг и одно дерево;
  • вокруг горящего дерева есть 8 ближайших клеток, на которые может перейти пожар,
  • состояние дерева: горящее - красное, сгоревшее - черное, несгоревшее - зеленое.
  • Загорится ли дерево (вероятность) зависит от направления ветра (всего 8 направлений);
  • Вероятность возгорания, направление ветра и скорость ветра выставляется произвольно в начале программы, и являются исходными данными для формирования правил клеточного автомата.

Решение:


Правила для клеток автомата:

  1. Зеленая клетка может превратиться только в «красную» по вероятностному закону, если в соседях у нее красная;
  2. Красная – на следующем шаге, превращается в черную;
  3. Черная никогда не меняется.


В теории в автоматах существуют два принципиально разных вида клеток (по параметрам Причина-Следствие):
  1. Клетка-приемник – использует данные о состояниях своих соседей и в конечном итоге изменяет свое состояние (как правило, для комплексного учета влияния соседей)
  2. Клетка-причина – влияет на соседей и, в конечном счете, изменяет их состояние или создает предпосылки для такого изменения (и не исключено, что и свое).

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

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

скачать xls-файл

Тестируйте.



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

Моделирование насаждений препятствующих распространению пожара в лесу

Задать схему насаждений для моделирования распространения огня при различных направлениях и скоростях ветра можно при помощи этих не сложных и интуитивно понятных элементов управления

Управление моделированием насаждений препятствующих распространению пожара в лесу


Еще есть Клеточный автомат на Delphi 7 ! Не пожар... Как игра "Жизнь"...

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

Другие примеры на языке «Delphi»

Другие примеры на языке «Visual Basic for application - VBA»


Поделиться в соц сетях:




Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...

исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации

Акция !!!
исходный код комментарии цена минимальная


требуются
школьники!


и СТУДЕНТЫ!
Кому не плевать
на деньги!
Сайт помощи студентам по программированию и информатике

Program code