EcoSimulation — 04. Врахування демографічної структури популяцій


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

Д.А. Шабанов

Ускладнення моделі: імітація логістичного зростання Врахування демографічної структури популяцій Імітація обмеження доступної кількості ресурсів
Імітаційне моделювання
надорганізмових систем-03 
Імітаційне моделювання надорганізмових систем-04 Імітаційне моделювання
надорганізмових систем-05

 

4. Врахування демографічної структури популяцій

4.1. Нові можливості

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

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

При створенні цієї моделі використовуємо дві можливості, які ми ще не застосовували.

По-перше, для тих комірок, у які ми вводили вхідні параметри, використовуємо імена. Це дозволить краще розуміти формули, які ми будемо вводити у комірки у зоні розрахунків.

Щоб привласнити комірці (або діапазону комірок) унікальне ім'я, треба розгорнути меню, що розташовано поруч з полем у лівому верхньому куті листа LO Calc, де вказується адреса комірки. Якщо ви оберете опцію «Керування назвами...», ви ввійдете у діалог, де зможете задавати, змінювати та видаляти імена окремих комірок (рис. 4.1). Деякі сполучення символів використовувати в якості імені не можна (наприклад, ім'я не може збігатися з позначенням будь-якої іншої комірки, тобто не може бути комбінація літери і номера). В іменах символів можна використовувати підкреслення (_). 

Рис. 4.1. Іменування комірок. Ліворуч показано, де треба викликати діалог «Керування назвами...». Праворуч — такий діалог для моделі, яку ми будемо зараз будувати

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

Рис. 4.2. Тут показано фрагмент налаштованої панелі інструментів LO Calc, у яку входить і панель «Засоби керування». Важливо слідкувати, у якому положенні знаходиться кнопка «Режим розробки», на якій зображено руку, що натискає надпис «ОК»

Рис. 4.3. Кнопка «Режим розробки» натиснута; тепер можна обрати смугу прокрутки, поставити її на лист LO Calc та налаштувати

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

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

Рис. 4.4. Курсор стоїть на комірці B9; її ім'я можна побачити в полі в лівому верхньому куті. Значення початкових параметрів змінюються смугами прокрутки. Позначення відповідають рекомендованому стилю, що пояснюється у відповідному додатку

Починаючи з цієї моделі, ми будемо дотримуватися стилю позначень, який можна назвати «рекомендованим» (в даному курсі), в усякому разі, для популяційно-екологічних моделей. Список позначень, які використовуються в таких моделях, наведено тут. Уся сукупність особин (її чисельність позначається заголовною літерою N) в таких моделях складається з окремих груп (їх чисельність позначається рядковими літерами n з необхідними позначками — верхніми та нижніми індексами). У моделях експоненційного та логістичного зростання, які ми робили раніше, для кожного циклу роботи моделі (рядку на листі LO Calc) характерна була якась певна чисельністисельність позначається заголовною літерою N) в таких моделях складається з окремих груп (їх чисельність позначається рядковими літерами n з необхідними позначками — верхніми та нижніми індексами). У моделях експоненційного та логістичного зростання, які ми робили раніше, для кожного циклу роботи моделі (рядку на листі LO Calc) характерна була якась модельної популяції. Ми переходимо до складніших моделей: в них на кожному циклі чисельність модельної популяції та окремих груп, що її складають, можуть зазнавати низку перетворень. Етапи цих перетворень ми будемо позначати за допомогою грецьких літер. Наприклад, на початку циклу в наступній моделі чисельність групи позначається літерою α, а у кінці, після скорочення — ω ( «рух» від початкового стану до кінцевого символізують перша і остання літери грецького алфавіту). У більш складних моделях на певному циклі (який ми позначимо t) чисельність модельної популяції може проходити через етапи  αtN → βtN → γtN → δtN → εt→ … → ωtN. Як ви бачите, верхній лівий індекс позначає етап розрахунків в циклі, а нижній лівій індекс — цикл.

Модельна популяція в цілому складається з окремих груп; для їх позначення використовуються праві індекси. Верхній правий індекс слугує для позначення статі, генотипу або якійсь подібної характеристики особин, що утворюють цю групу, а нижній правий індекс — для позначення віку особин: αtngaβtngaγtngaδtngaεtnga → ... → ωtnga. Зрозуміло, що, наприклад, αtN = Σ(αtnga).

В моделі, яку показано на рис. 4.4, початкова (тобто така, що відповідає нульовому циклу) чисельність самиць першого віку позначена як α0nf1, а самців, відповідно, α0nm1. Місткість середовища, як і в логістичній моделі, позначено як K. Для позначення плодючості самиць використовується літера b (від англійського breed). Індекси для позначення плодючості відповідають таким для чисельностей груп: bfдля самиць другого віку і bfдля самиць третього віку. Кількість самиць, яких за один сезон може запліднити один самець, позначено літерою T. Вибір цієї літери досить довільний, що пов'язано з тим, що більшість літер латинської абетки зарезервовані за змінними, які будуть використовуватися у наступних моделях. Цей вибір пов'язаний з англійським словом, що позначає зраду, — treason; така асоціація поліпшить запам'ятовування обраного позначення.

4.2. Опис найпростішої моделі з трьома поколіннями

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

В інформаційному блоці дані короткі пояснення щодо роботи моделі.

У блоці для вхідних параметрів — 6 комірок, пояснення до яких видно на рис. 4.4. Їм привласнені імена (зверху донизу): a0_n_f1, a0_n_m1, K, b_f2, b_f3 і T.

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

У стовпці A представлені цикли роботи моделі (що у дійсності можуть відповідати, наприклад, рокам). Перший рядок у зоні розрахунків — нульовий, A17{0}. Друга комірка цього стовпця, A18, як і усі наступні комірки («розтягнуті» з A18) містять найпростіший лічильник: A18{=A17+1}.

У стовпці B вказується чисельність самок першого року на початку циклу — αtnf1. Формули в комірках такі: B17{=a0_n_f1}, B18{=ROUNDDOWN(S17/2+RAND();)}; всі наступні комірки цього стовпчика отримані з B18 «розтягуванням». Сенс цієї формули простий. В комірці S17 вказано кількість потомства, що з'явилося на попередньому кроці моделі. Половина цієї кількості — самиці. Округлення (важливе в тому випадку, якщо з'являється непарна кількість нащадків) носить ймовірнісний характер (як пояснювалося раніше).

У стовпці C вказується чисельність самиць другого віку на початку циклу — αtnf2. Формули в осередках такі: С17{0} (за умовами все особини на початку роботи моделі відносяться до першого віку), С18{=I17}; всі наступні комірки стовпчика отримані з С18 «розтягуванням». В комірці I17 вказується чисельність самиць першого віку, які лишилися після скорочення чисельності рік тому. Тепер вони досягли другого віку. 

Аналогічні формули введені в стовпець D, де вказується чисельність самиць третього року — αtnf3. Формули в осередках такі: D17{0}, D18{0} (особини третього віку не встигають з'явитися і через рік), D19{=J18}; всі наступні комірки стовпчика отримані з D19 «розтягуванням». Пояснення цієї формули аналогічно попередньому випадку — це чисельність самциь попереднього віку роком раніше.

Формули в стовпці E (нижче комірки E17 з посиланням на один з початкових параметрів), де вказується чисельність самців першого року, αtnm1, визначають число самців як різницю між загальною кількістю нащадків і числом самиць в їх складі; E18{=S17-B18}. Стовпець F аналогічний стовпцю C, а G — аналогічний D.

Рухаємося далі. У стовпці HαN, розраховується загальна чисельність всіх особин; H17{=SUM(B17:G17)}. Функцію SUM ми ще не розглядали, але її застосування є інтуїтивно зрозумілим і не потребує багатослівних пояснень.

У стовпчиках I — N чисельність всіх вікових класів перераховується після порівняння αN і K. Їх позначення аналогічні таким для стовпців B — G, за тим винятком, що ми розглядаємо вже чисельність груп після скорочення (ωn). Для перерахунку використовуються формули, аналогічні наступним: I17{=ROUNDDOWN(IF($H17>K;B17*K/$H17;B17)+RAND();)}. У функції IF визначається, чи виконується умова H17>K, тобто перевищує сумарна чисельність особин місткість середовища. Якщо не перевищує, скорочення не проводиться. Якщо перевищує, чисельність всіх груп скорочується пропорційно, внаслідок множення на величину K/H17, тобто на різницю від ділення місткості середовища на наявну чисельність. Наприклад, якщо чисельність особин перевершує ємність середовища в два рази, то K/H17=1/2 і чисельність всіх груп особин зменшується вдвічі. Обчислена за допомогою функції IF величина піддається ймовірнісному округленню за допомогою функцій ROUNDDOWN і RAND, як це описувалося в пункті 3.5.

У стовпчиках O і P відбувається обчислення загальної кількості статевозрілих самиць і самців, ωNF і ωNM відповідно. Формули є дуже простими: O17{=SUM(J17:K17)} і P17{=SUM(M17:N17)}, тобто в цих комірках складається чисельність статевозрілих самок і самців різного віку.

У стовпчиках Q і R обчислюється кількість пар з самицями другого і третього віку, ωPF2 і ωPF3 відповідно. Слід передбачити, що самців може не вистачити на всіх самиць, і обчислення необхідно проводити так: Q17{=IF(P17=0;0;ROUNDDOWN(IF(O17/P17>T;P17*T*J17/O17;J17);))}. Перша з функцій IF оберігає від ділення на 0, оскільки далі необхідно ділити чисельність самиць на чисельність самців. Якщо самців в популяції немає, то і пар немає. Якщо самці є, то треба визначити, чи достатня їх чисельність для того, щоб вони покрили всіх самиць. Якщо відношення числа самиць до числа самців менше величини T, то чисельність пар з самицями другого віку дорівнює чисельності самиць другого віку, а чисельність пар з самицями третього віку дорівнює чисельності самиць третього віку. Якщо самців бракує (треба сказати, що при передбачених в моделі умовах це може відбутися тільки на найпершому етапі, якщо задати надлишок самиць і недолік самців), то чисельність пар з самицями обох вікових груп скорочується пропорційно наявного кількості самців: кількість_самців*T*кількість_самиць_відповідного_віку/кількість_самиць, або для самиць другого віку, P17*T*J17/O17.

Нарешті, в стовпці S обчислюється кількість потомства (позначимо його як O, від англійського offspring). Для цього до добутку кількості пар з самицями другого віку і плодючості самиць другого віку слід додати добутку кількості пар з самицями третього віку і плодючості самиць третього віку: S17{=Q17*b_f2+R17*b_f3}. Після цього всі обчислення даного циклу закінчені, можна переходити до наступного циклу і виконувати ту ж послідовність дій знову.

4.3. Аналіз отриманої моделі

Тепер є сенс задуматися про деякі аспекти отриманої моделі. Як видно по її скріну (рис. 4.4), при деяких поєднаннях значень вхідних величин в моделі виникають згасаючі «биття». Важливо зрозуміти, що є їх причиною. Які поєднання вхідних коефіцієнтів породжують ці «биття»? Чим відрізняються ситуації в їх мінімумах і максимумах? Чому протягом декількох перших років при показаннях на малюнку вхідних значеннях зростання модельної популяції було загальмованим, а потім вона зробила «ривок»?

Чи можна обчислити співвідношення, зміна якого викликає «биття» чисельності? Чи можна побудувати графік такої величини? Чи можна накласти графік такої величини на графік динаміки чисельності?

Які спрощення, прийняті при побудові даної моделі, були найважливішими? Ймовірно, саме серйозне спрощення (тісно пов'язане з причиною биття) полягає в тому, що смертність при перевищенні ємності середовища для всіх вікових класів виявлялася однаковою. Друге серйозне спрощення полягає в тому, що чисельність популяції зростає без будь-якого уповільнення, поки не досягає ємності середовища, а потім рік за роком різко зрізається на цьому рівні.

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

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

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

А з чим пов'язані коливання чисельності? З періодичною зміною співвідношення між поколіннями. Розглянемо докладніше, як візуалізувати ці зміни, тим більше, що це дасть можливість обговорити найпростіші прийоми редагування графіків. Введемо в одну з комірок збоку від зони обчислень формулу, яку видно на рис. 4.5. Над нею зробимо підпис, що пояснює, що саме ми обчислюємо. Виберемо для цієї комірки процентний формат даних (рис. 4.5). 

Рис. 4.5. Починаємо додавати до моделі елементи, що призначені для аналізу її динаміки. Зверніть увагу на формулу в комірці U17

«Розтягнемо» додані нами комірку з формулою і комірку з заголовком (U16 і U17) на дві комірки вправо. LO Calc сам зрозуміє, що в нових комірках з підписами треба замінити одиницю на двійку і трійку! Потім «розтягнемо» комірки з підписами униз (до кінця моделі або на її початкову частину, протягом якої найсильніше проявляються биття). Відобразимо отримані дані на графіку. Результат показаний на рис. 4.6.

Рис. 4.6. Додано графік, що дозволяє проаналізувати динаміку співвідношення поколінь. Для економії місця його розташовано над зоною розрахунків

Причиною «биття» є коливання співвідношення між поколіннями! Коли більш численне покоління переходить у третій вік, це призводить до стрибка чисельності потомства, різкого скорочення чисельності особин усіх віків та формуванню менш численного покоління. Коли воно почне розмножуватися, у модельній популяції зможе лишитися більша кількість потомства; так сформується більш численне покоління... Зазначені циклічні коливання співвідношення поколінь й породжують згасаючі циклічні «биття» чисельності популяції. Згодом чисельність стабілізується, але будь-яке збурення (наприклад, суттєва зміна чисельності популяції в результаті якогось впливу) знову породить «биття» чисельності, які в стабільних умовах з часом згасатимуть.

Цікавий спосіб представлення тих же результатів показано на рис. 4.7. Дані стовпчика, що описує частку молодих особин, відкладені по осі ординат, а дані про частки трирічних — на осі ординат. Ламана крива описує траєкторію системи в показаному фазовому просторі. Найперша точка — в нижньому правому куті наведеного графіка (100% молодих). Наступна — на початку координат (всі особини — дворічки). На третьому році співвідношення поколінь 50%/50% (особини першого покоління залишили потомство, і на кожну пару батьків довелося, відповідно до показаних на рис. 4.4 параметрів, по двоє нащадків). Побудуйте такий графік самостійно!

Рис. 4.7. Траєкторія модельної популяції в фазовому просторі. З кожним кроком модельна система переміщається з одного кута цієї ламаної лінії в наступний. Початок — у правому нижньому кутку

Наскільки реалістичним є припущення, що особини різного віку в рівній мірі вичерпують ресурси середовища і мають рівні шанси на виживання в разі конкурентного скорочення чисельності? Швидше за все, це дуже грубе наближення. Досвід катастроф, пов'язаних з нестачею ресурсів (і в популяціях людини, і в популяціях інших видів) свідчать, що деякі групи населення виявляються особливо вразливими. Співвідношення статей і вікових груп у популяції, що пройшла через «голодне» скорочення чисельності, сильно зсувається, в порівнянні з вихідною.

4.4. Логіка побудови імітаційної моделі

Спираючись на модель, показану на рис. 4.4, ми можемо обговорити ще одну навчальну проблему. Як будується модель? Спочатку автор моделі розділяє процес, який він вивчає, на певні кроки. Більшість моделей в цьому курсі працюють, багато разів повторюючи певний цикл (наприклад, такий, що відповідає року або ж певному поколінню). Події, що відбуваються на кожному циклі, можна розділити на певні етапи. Наприклад, етапи, що розглядає наша модель — розрахунок α-чисельності на кожному циклі, визначення ω-чисельності (зі скороченням у разі перевищення ємності середовища), утворення пар та розмноження. Що, наприклад, впливає на α-чисельність, визначає її значення? Для першого циклу у моделі (його можна вважати нульовим) — початкова чисельність, що задається серед початкових параметрів. Для усіх наступних циклів α-чисельність залежить від ω-чисельності та результату розмноження на попередньому етапі. Сукупність таких зв'язків умовно показано на рис. 4.8.

Рис. 4.8. Залежності змінних у моделі показані на цій схемі стрілками. Якщо ми вкажемо формули, що визначають ці залежності, ми отримаємо концептуальну модель. Її можна реалізувати на різній програмній основі

Для розрахунків, що входять у систему перетворень, необхідно визначити початкові параметри. Результатом розрахунків буде певний вихідний результат, наприклад, динаміка певного показника. Інтегральним показником, динаміка якого демонструється на графіку на рис. 4.4, є чисельність статевозрілих особин.

Якщо ми визначимо, за якими формулами розраховуються усі проміжні та прикінцеві значення, ми створимо концептуально модель. Цю модель можна реалізувати на різній основі (можна, навіть, на сукупності папірців, на яких записувати розраховані значення, або, навпаки, на одному великому листі паперу). Звісно, краще робити це на комп'ютері з використанням певного програмного забезпечення. Як ви розумієте, в цьому курсі ми використовуємо LO Calc.           

  Як ми це робили? Виділили на листі LO Calc зону для розміщення вхідних параметрів, зону розрахунків та зону виводу результатів. У зоні розрахунків крок за кроком приписали перший (нульовий, за нашою нумерацією) цикл. За результатами цього циклу почали наступний. Логічно розміщувати цикли в рядках, а певні показники, що розраховуються на кожному циклі — у стовпчиках. Нульовий рядок можна «розтягнути» на перший; відмінність між ними стосується лише того, як розраховується α-чисельність. Перший рядок, у такому разі, можна «розтягнути» на усі останні.

Засоби демонстрації вихідних результатів можуть брати те, що на рис. 4.8 названо інтегральними показниками, з самих розрахунків чи з особливого, окремого блоку (як це зроблено, наприклад, на рис. 4.6). За необхідності, крім динаміки можна вивести необхідний показник, що дозволить порівнювати різні прогони моделі (наприклад, чисельність популяції наприкінці 100-го циклу). 

У вас не виникає відчуття дива? Ми розмістили на листі електронних таблиць певну кількість комірок, зв'язали їх нескладними формулами. Рутинна робота, але внаслідок її виконання модель «ожила». Можна змінювати початкові параметри та спостерігати, як буде змінюватися поведінка моделі. У певних випадках ці зміни будуть прогнозованими, інтуїтивно зрозумілими, у інших — навпаки, контрінтуїтивними.

У будь-якому разі, виконання такої роботи на крок наближає до розуміння поведінки моделей-оригіналів, до розуміння дійсності, яку повністю не може відбити ніяка модель.

4.5. Модель з відмінностями груп особин за виживаністю

Спробуємо зробити нашу модель більш реалістичною. У попередньому розглянутому нами варіанті смертність залежить від чисельності популяції (і є однаковою для всіх вікових категорій), а народжуваність — не залежить. Спробуємо реалізувати інший варіант: той, в якому смертність не пов'язана з чисельністю популяції (але відрізняється для різних вікових груп і статей), а народжуваність — залежить.

Зверніть увагу: задавати смертність (або зворотний їй величину — виживаність) можна по-різному. Ми будемо використовувати наступний варіант. Смертність 0,2 означає, що на кожному кроці гине 20% особин. Такий смертності аналогічне виживання (s, від survival) 0,8. У наборі параметрів, який ми будемо використовувати, задається саме виживання, а не смертність.

Перебудуйте попередню модель наступним чином. У число вхідних даних моделі введіть показники виживаності для кожної з шести розглянутих груп. Так, sf1 — це частка самиць першого віку (потомства на попередньому кроці моделі), які збережуться після скорочення чисельності. Аналогічно слід визначити sf2, sf3, sm1, sm2 і sm3. Вам доведеться додати комірки для цих початкових параметрів та надати новим параметрам імена.

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

Самостійно визначте, які значення виживаності (і, що ще важливіше — які співвідношення між виживаностями представників різних груп) можна вважати правдоподібними.

Чисельність представників всіх груп після скорочення (ωnf1, ωnf2, ωnf3, ωnm1, ωnm2, ωnm3) слід обчислювати за таким прикладом: ωnf= αnf1 × sf1. Щоб ця чисельність не опинилася нецілою, можна використовувати ймовірнісне округлення. З цього моменту засвоєння курсу моделювання ми почнемо використовувати комбіновану форму записи формул: ми будемо поєднувати символьні позначення змінних з функціями LO Calc. У такому разі можна запропонувати такий варіант: ωnf1=ROUNDDOWN(αnf1*sf1+RAND();)

У попередній версії моделі загальна чисельність особин (αN) обчислювалася до скорочення чисельності (так як ця величина використовувалася при самому скороченні). В цій версії необхідно буде розраховувати ωN, і, таким чином, вам доведеться додати новий стовпчик (при цьому чи вилучити стовпчик з розрахунком αN, чи залишити — справа вашого смаку). Зрозуміло, що ωN=Σ(ωnga), тобто ωN=ωnf1+ωnf2+ωnf3+ωnm1+ωnm2+ωnm3.

Способи обчислення ωNF і ωNM, тобто загальної кількості статевозрілих самців і самиць після скорочення чисельності, а також ωPF2 і ωPF3, тобто чисельності пар з самицями другого і третього віку можна не змінювати. Залишилося зрозуміти, як слід обчислювати кількість нащадків.

У даній моделі реалізуємо найпростіший (і досить далекий від дійсності) варіант. Якщо наявна кількість особин в сумі з приплодом не досягає K, має зберігатися весь приплід. Якщо перевищує — приплід має скорочуватися так, щоб сумарна чисельність сягала K. Зробити це можна за допомогою наступної формули, написаної в комбінованій формі: O=ROUNDDOWN(IF((ωN+ωPF2*bf2+ωPF3*bf3)<K;ωPF2*bf2+ωPF3*bf3;K-ωN)+RAND();).

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