Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_практикум ММСП.doc
Скачиваний:
57
Добавлен:
09.11.2019
Размер:
2.11 Mб
Скачать

5.3. Построение модели

ВНИМАНИЕ! Прежде, чем открывать файл примера или создавать собственный файл необходимо разрешить работу с макросами. Для этого в главном меню Сервис/Макрос/Безопасность… необходимо выбрать вкладку Уровень  безопасности и выбрать низкий уровень безопасности.

Выделим игровое поле – ячейки B2:F6 (см. рис. 52). Ячейки игрового поля соответствуют клеткам клеточного автомата. Придадим ячейкам игрового поля вид небольших квадратов и построим "жирную" границу игрового поля (выделим ячейки B2:F6 и используем контекстное меню Формат ячеек…/Граница).

В игровом поле записывается текущее состояние клеток в момент времени t (в начале игры записывается начальное состояние в момент ). Если клетка жива, то в ячейку запишем 1, если клетка мертва, то в ячейку запишем 0.

В ячейках H2:L6 будем хранить "потенциал" клеток, вычисленный в соответствии с окрестностью Мура. Потенциал клетки равен числу живых соседей, определяемых согласно принятой окрестности. Для вычисления потенциала в ячейку H2 введем формулу

=СУММ(A1:C3)-B2 (1)

В формуле (1) вычитается содержимое ячейки B2, т. к. в расчете потенциала согласно окрестности Мура учитываются только состояния соседних ячеек. В формуле (1) учитываются состояния ячеек, граничащих с игровым полем B2:F6. Примем эти ячейки мертвыми, т. е. содержащими 0 (могут быть и более сложные условия). Размножим формулу (1) сначала до ячейки L2, а затем вниз, заполнив всю таблицу H2:L6.

Рис. 5.2. Пример игрового поля

В ячейках B10:F14 запишем состояния автомата в следующий момент времени . Для этого в ячейку B10 запишем правило поведения автомата:

=ЕСЛИ(ИЛИ(H2>3;H2<2);0; ЕСЛИ(H2=3;1; ЕСЛИ(H2=2;B2))) (2)

В формуле (2) сначала проверяется условие ИЛИ(H2>3;H2<2). Если H2>3 или H2<2, то в ячейку запишется 0. Это означает, что клетка в момент времени мертва, если в момент потенциал клетки равен 0, 1, 4, 5, 6, 7, 8. Если первое условие (H2>3;H2<2)не выполняется, то выполняется вложенный условный оператор ЕСЛИ. Если во вложенном операторе выполняется условие H2=3, то в следующий момент времени клетка жива. Если условие H2=3 не выполняется, то выполняется второй вложенный условный оператор ЕСЛИ. Если потенциал H2=2 (это условие всегда выполнится, т. к. уже проверены все возможные другие состояния), то в следующий момент времени состояние клетки не меняется (равно состоянию клетки B2). Таким образом, в следующий момент времени клетка жива, если в предыдущий момент в окрестности Мура клетка имеет трех живых соседей. Если в предыдущий момент времени клетка имеет двух живых соседей, то в следующий момент ее состояние не меняется. При других условиях клетка погибает.

Формулу (2) размножим на таблицу B10:F14.

Таким образом, если в таблице B2:F6 имеется состояние клеточного автомата в момент , то в таблице B10:F14 вычисляется состояние в момент . Чтобы вычислить состояние автомата в момент , необходимо скопировать таблицу B10:F14 в таблицу B2:F6. Повторяя описанные действия, можно выполнить произвольное число шагов по времени. Действия по копированию таблиц удобно записать в виде макроса. Для создания макроса необходимо в среде Excel выполнить следующие действия.

1. В меню "Сервис" выбрать команду "Макрос/Начать запись". Задать имя макроса (в примере задано имя Клеточный автомат, можно оставить имя по умолчанию). Назначить сочетание клавиш, вызывающих макрос, например, CTRL+t. Нажать OK.

2. По шагам выполнить операции копирования значений ячеек B10:F14

Шаг 1. Выделить ячейки B10:F14.

Шаг 2. В меню "Правка" выбрать команду "Копировать".

Шаг 3. Установить курсор в ячейку B2.

Шаг 4. В меню "Правка" выбрать команду "Специальная вставка", в окне специальной вставки отметить "значения" и нажать OK.

3. Остановить запись макроса. Для этого в меню "Сервис" выбрать команду "Макрос/Остановить запись".

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