EcoSimulation — 09-I. Приклади різноманітних моделей, їх задум і дизайн

Д.А. Шабанов
Підручник за курсом
«Імітаційне моделювання надорганізмових систем
(з використанням LibreOffice Calc)»

Моделі на основі клітинних автоматів Приклади різноманітних моделей, їх задум і дизайн Приклад моделі. Перехід від гермафродитизму до роздільностатевості
Імітаційне моделювання
надорганізмових систем-08 
Імітаційне моделювання надорганізмових систем-09-I Імітаційне моделювання
надорганізмових систем-09-II

 

9. Приклади різноманітних моделей, їх задум і дизайн

9.1. Модель динаміки епідемії

Нижче наведено опис створення нескладної моделі, що описує поширення епідемії. Цю модель можна завантажити з сайту або створити самостійно згідно з описом (останнє — краще).

Модель розглядає чотири стани особин: вразливий ( код 1), хворий (2), імунний (3), померлий (4). Для моделювання слід задати ймовірності переходів між цими станами: зараження імунного при наявності поруч хворого (1→2), а також одужання хворого і його переходу у стан імунного (1→3). Ймовірність загибелі хворого — одиниця мінус ймовірність його одужання.

Рис. 9.1.1. Окно моделі epidemia

Щоб керувати змінами цих навчальних параметрів можна застосувати смугу прокрутки. Щоб вставити смугу, пройдіть по шляху «Перегляд / Панелі інструментів» і оберіть панель «Елементи керування». На аркуші LO Calc з'явиться ця панель. Перейдіть в режим розробки за допомогою кнопки, на якій написано «ОК»: «Режим розробки». Вам стануть доступні елементи управління, серед яких можна вибрати смугу прокрутки. Вибравши її, окресліть якийсь простір на аркуші; LO Calc вставить туди цей елемент управління. Залежно від того, який простір ви окреслите для цього елементу, він буде горизонтальним або вертикальним.

Щоб налаштувати смугу прокрутки, виділіть її, залишаючись в режимі розробки. Стане активною кнопка «Елемент керування», на якій зображені перекреслені інструменти. Натиснувши її, ви потрапите в діалог «Властивості: Смуга прокрутки». На першій вкладці, «Загальні», можна налаштувати властивості смуги, в число яких входять розміри, положення, мінімальне і максимальне значення, що задаються за допомогою цієї смуги, крок зміни, її розміри тощо. На другій вкладці, «Дані», слід вказати ту комірку, значення в якій буде змінюватися за допомогою цієї смуги прокрутки. Після того, як властивості елементу керування налаштовані, вікно діалогу можна просто закрити: зміни будуть збережені. Зверніть увагу: смуга прокрутки запрацює лише тоді, коли ви вийдете з режиму розробки! Щоб змінити розташування смуги або її інші властивості, треба буде знову входити у режим розробки.

Один зі способів використання смуги прокрутки такий. Смуга керує значенням, що знаходиться у певній комірці (можна — у комірці, що розташована під самою смугою). Значення цієї комірки змінюється від 1 до 100. У комірці, де розраховується значення початкового параметру, стоїть формула, що ділить значення комірки, якою керує смуга прокрутки, на 100. Це значення можна показувати у процентах. Такий ускладнений шлях пов’язаний з тим, що за допомогою смуги прокрутки можна задавати лише цілі значення, а початкові параметри (ймовірності) мають бути виражені частками одиниці.

Крім того, до числа початкових параметрів належить початковий склад популяції. Його також можна задавати за допомогою смуг прокрутки. Наприклад, можна визначити частку хворих та частку імунних; усі інші особини — це вразливі.

Найпростіший варіант побудови моделі такий. На певному просторі (у прикладі, що надається, це — прямокутник 10 на 10, але можливий і будь-який інший варіант) слід випадково розташувати особин відповідно до розподілу, що заданий початковими параметрами. Для кожної комірки на цьому полі слід визначити, яка особина її займає. Для таких задач слід використовувати порівняння випадкового числа (від 0 до 1) з розподілом одиниці. Якщо б ми розглядали 2 стани комірок (наприклад, білі та чорні), ми могли б вираховувати випадкове число у самій формулі (якщо випадкове число менша за ймовірність появи білої клітини — комірка біла, а якщо воно вище — чорна). Ми використовуємо розподіл з трьома станами; в одній формулі те ж саме випадкове число, що розраховується в ній самій, неможливо порівнювати водночас з двома різними числами. Тому десь на листі Calc слід розмістити поле випадкових чисел (на демонстраційній моделі це поле позначене жовтим кольором). У кожній комірці цього поля стоїть формула =RAND().

Тепер в полі початкового розподілу можна визначити, які особини займають кожну комірку. Для цього використано формулу =IF(випадкове_число<$частка_вразливих;1;IF(випадкове_число<($частка_вразливих+$частка_хворих);2;3)). Кожна комірка поля початкових значень посилається на своє випадкове число; значення часток вразливих та хворих, що задана початковими параметрами, однакова для усіх комірок на цьому полі. Наведена формула спочатку порівнює випадкове число з часткою (ймовірністю) вразливих; якщо воно менше за таку ймовірність, у комірці з’являється вразлива особина. Якщо випадкове число більше за ймовірність появи вразливої особини, воно порівнюється з сумою ймовірностей появи вразливих та хворих особин. Менша — особина буде хворою; більша — імунною. Такі формули дозволяють зайняти потрібну площу випадково розташованими особинами, ймовірність появи яких задана початковими параметрами.

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

=IF(комірка_початкового_розподілу=1;IF(COUNTIF(сусідні_комірки;2)=0;1;IF(RAND()<COUNTIF(сусідні_комірки;2)*$ймовірність_захворіти;2;1));IF(комірка_початкового_розподілу=2;IF(RAND()<$ймовірність_одужати;3;4);3)).

Щоб визначити, скільки хворих межує з вразливою особиною, слід виділити групу 3 на 3, в якій порахувати кількість хворих (двійок). Так, якщо нас цікавить, скільки двійок межує з коміркою C11, можна використати формулу COUNTIF(B10:D12;2). Сама комірка C11 також потрапляє у цю групу, але це не впливає на розрахунок, оскільки в ній одиниця, а не двійка. Ймовірність захворіти визначає добуток кількості хворих сусідів на ймовірність заразитися від хворого сусіда. Щоб визначити, чи захворіє особина, яка нас цікавить, випадкове число порівнюється з цим добутком. Якщо добуток більший за одиницю (наприклад, вразлива особина має три хворих сусіди; ймовірність заразитися від кожного з них дорівнює 0,5; випадкове число від 0 до 1 буде меншим за добуток 3 і 0,5).

Якщо в комірці, що нас цікавить, розташована хвора особина, вона може одужати або померти. В цьому випадку її долю також визначає порівняння випадкового числа з ймовірностями, що задані в початкових параметрах. Якщо ж в комірці початкового розподілу була не вразлива і не хвора особина, там була імунна особина. Така сама особина в ній й залишиться.

Тепер можна підрахувати, скільки яких особин у зміненому розподілі. Для цього можна використати формули =COUNTIF(діапазон;1). Діапазон — це поле зі зміненим розподілом. Наведена формула розраховує кількість вразливих. Зрозуміло, що для того, щоб показувати кількість хворих, потрібна формула =COUNTIF(діапазон;2).

На підставі кількості вразливих, хворих та імунних слід розрахувати ймовірності появи таких особин у наступному розподілі. Припустимо, що на тому місці, де були померлі особини, з’являться (з характерними ймовірностями) нові особини. Тоді ймовірність появи вразливих особин можна розрахувати за формулою =кількість_вразливих/(кількість_вразливих+кількість_хворих+кількість_імунних).

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

Щоб побудувати змінений розподіл другого циклу можна скопіювати відповідні комірки першого циклу.

Перед тим, як копіювати другий цикл до третього циклу, слід убрати абсолютну адресацію (позначки $) з формул. Якщо це не зробити, початкове поле третього циклу буде будуватися у відповідності до розрахунку ймовірностей появи різних особин наприкінці першого, а не другого циклу.

Щоб розподіли особин можна було оцінювати з першого погляду, можна використати умовне форматування. Виділить первинні та змінені розподіли. Пройдіть шляхом «Формат / Умовне форматування / Умова». Для кожного можливого значення оберіть тій чи інший стиль. Розподіл стане більш наочним...

Щоб побудувати графік, виведіть у одну групу кількість вразливих, хворих, імунних та померлих особин на кожному циклі. Пересуньте ці групи так, щоб вони розташувалися одна під одною. Побудуйте за цими даними графік.

 

.

 

Подборка моделей для знакомства с вариантами их построения

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

Как научится этим умениям? Анализируя чужие модели и создавая собственные.

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

47. Когда отбор становится неэффективным? Модель из этой колонки можно скачать здесь.

50. Альтруизм и парадокс Симпсона. Модель (громоздкую, "некрасивую") из этой колонки можно скачать здесь.

51. Подпорки альтруизма. Из этой колонки модель размещена тут.

137. Обсуждение перехода от гермафродитизма к раздельнополости как пример неклассического развития естественнонаучной гипотезы. Модель к этой колонке подробно описана на следующей странице, а сама она доступна в варианте для Excel-2013 и в варианте для Excel-2003.

138. О природе мужского и женского, или от конъюгации к оогамии. Вот варианты модели для Excel-2013 и для Excel-2003.

Кроме того, предлагаю рассмотреть идеи для создания еще двух моделей. 

Задача о мальчиках и девочках. Эта задача вызвала серьезные споры. Простой способ получить однозначный ответ — построить модель