Где:
-
births – уровень рождаемости;
-
imigration – уровень миграции;
-
deaths – уровень смертности;
-
emigration – уровень эмиграции.
Переменные модели:
Потоки:
В поле активного класса постройте по уравнению системной динамики, с учетом переменных, параметров и потоков модель, используя палитру «Системная динамика». Вид модели должен соответствовать рисунку 4.10.
Рис. 4.10. Активный класс сектора населенияПри построении активного класса сектора населения нужно в его поле добавить функцию HousingTable. Эта функция создается с помощью инструмента «Табличная функция» панели системная динамика. После размещения функции в класс нужно задать ей имя HousingTable, тип интерполяции должен быть линейный, если аргумент функции выходит за пределы табличных значений, то выбирается ближайший. Затем следует сформировать таблицу значение функции так, как это показано на рисунке 4.11.
Рис. 4.11. Значения функцииДля возможности взаимодействия агента с другим агентом следует создать интерфейс. Для агента сектора населения интерфейс будет образован двумя переменными houses и householdToHousesRatio.
Для создания интерфейса класса разместите в поле агента из палитры «Презентация» элемент «Скругленный прямоугольник» и активизируйте его свойство «Значок». В созданный прямоугольник поместите фигуру человека. Для этого откройте палитру

«Картинки» и разместите изображение человека с помощью одноименного элемента. У изображения активизируйте свойство «Значок».
Создайте копии переменных houses и householdToHousesRatio. Для этого выделите нужную переменную, вызовите контекстное меню и выполните команду «Создать копию» (см. рисунок 4.12).
Рис. 4.12. Контекстное меню динамической переменнойОставьте копии переменных на модели, а сами переменные расположите на контуре значка активного класса, так как это показано на рисунке 4.13.
Рис. 4.13. Значок активного классаДля переменной houses установите свойства «Отображается на верхнем уровне» и «Зависимая» в состояние активности. Такая настройка позволяет создать внешнюю переменную, которая может принимать значение из другого активного класса.
Для переменной householdToHousesRatio установите свойство «Отображается на верхнем уровне» в состояние активности. Такая переменная может передавать значение в другой активный класс. Имена копий переменных в поле модели берутся в пару скобок <> (рисунок 4.14). Для перевода зависимостей на копии используют мышь.
Рис. 4.14. Копии динамических переменныхАктивный класс сектора жилищного строительства
Создайте нового агента housingSector. Активный агент обладает набором параметров, которые приводятся в таблице 4.3.
Таблица 4.3
Параметры сектора жилищного строительства
№
| Параметр
| Описание
| Значение
|
1
| constructionNormal
| Норма возведения нового жилья
| 0,07
|
2
| landPerHouse
| Доля городской земли на строение
| 0,1
|
3
| area
| Городская площадь
| 8000
|
4
| housesInitial
| Начальное число домов в городе
| 14000
|
5
| demolitionNormal
| Норма сноса ветхого жилья
| 0,015
|
Уравнение системной динамики жилищного строительства примет вид:
Переменные модели:
Описание переменных приводится в таблице 4.4.
Таблица 4.4
Переменные сектора жилья
№
| Переменная
| Описание
|
1
| constrMultiplier
| Интенсивность строительства
|
2
| constrDueToHousingAv
| Реальная потребность в строительстве
|
3
| constrDueToLandAv
| Земельные участки, имеющиеся для строительства
|
4
| fractionOfOccupiedLand
| Доля использованной под застройку земли
|
5
| housesExport
| Число возведенных домов
|
6
| householdsToHousesRatio
| Заселенность города
|
Вид модели приводится на рисунке 4.15.
Рис. 4.15. Активный класс сектора жилищного строительстваВ модель нужно разместить две табличные функции HousingAvTable и LandAvTable. Значение таблицы первой функции приводятся на рисунке 4.16, а значения второй функции на рисунке 4.17.
Рис. 4.16. Таблица функции HousingAvTableОбе функции должны реализовывать линейный метод интерполяции, при отсутствии значения берется ближайшее значение.
Рис. 4.17. Таблица функции LandAvTableСоздайте значок для представления активного класса. В качестве элементов значка используйте «Скругленный прямоугольник» и изображение здания из палитры «Картинки» элемент «Дом». Вид значка показан на рисунке 4.18.
Рис. 4.18. Значок активного класса сектора жильяСоздайте интерфейс активного класса. Получите копии переменных householdsToHousesRatio и housesExport. Копии оставьте на модели, переменные поместите на значок, так как это показано на рисунке 4.18. Настройте свойства переменных таким образом, чтобы переменная householdsToHousesRatio могла принимать значение из активного класса, а переменная housesExport передавать значение в активный класс.
Настройка корневого объекта модели
Рис. 4.19. Соединение активных классовПерейдите в графическое поле корневого агента Main и разместите в нем агенты populationSector и housingSector. Используйте элемент «Соединитель» палитры «Агент» и соедините классы с помощью их интерфейсов, так как это показано на рисунке 4.19.
Данные можно передавать внешней переменной класса от переменной интерфейса класса источника. Зависимые переменные очерчены не сплошной линией. При правильном соединении стрелка должна быть направлена от переменной класса источника к внешней переменной класса приемника.
Рис. 4.20. График динамики роста населения
Разметите временной график для отображения роста численности городского населения (population). Период обновления графика равен 0,25 единиц модельного времени, одновременно отображается 100000 точек. Временной диапазон 100 единиц модельного времени.
Настройте эксперимент модели. Модель должна останавливаться в заданное время, конечное время задайте равным 100 единиц. Установите «Режим выполнения» как «Виртуальное время».
Протестируйте модель, вид графика изменения численности населения должен соответствовать рисунку 4.20.
Создайте дополнительный временной график, для вывода динамики изменения городской площади (Fraction of occupied land), отведенной под жилищное строительство. Вид графика показан на рисунке 4.21.
Рис. 4.21. Изменение площади под застройку
Рис. 4.22. Распределение населенияСоздайте столбиковую диаграмму, которая отображает количество родившихся жителей, умерших, покинувших город, прибывших в город (см. рисунок 4.22).
Протестируйте модель, вид графиков должен соответствовать контрольным рисункам.
-
В чем заключается концепция построения моделей системной динамики по Дж. Форрестору?
-
Каков принцип построения уравнения для накопителя модели системной динамики?
-
Дайте классификацию элементов AnyLogic используемых для построения моделей системной динамики.
-
Опишите алгоритм построения модели системной динамики в AnyLogic.
-
Дайте характеристику динамическим переменным AnyLogic.
-
Как строится интерфейс между активными классами в моделях системной динамики?
-
Для чего используется элемент «Табличная функция» в моделях системной динамики?
-
Дайте описание модели реализации продукта по Бассу без учета повторных покупок.
-
Дайте описание модели реализации продукта по Бассу с учетом повторных покупок.
-
Опишите модель развития эпидемии.
-
Дайте описание модели исследования численности активного населения.
Требуется построить динамическую модель реализации продукции, используя технологию агентного моделирования.
Создайте новую модель ModelAgBuy. При создании модели единицы модельного времени задайте как дни.
Далее следует создать популяцию агентов внутри корневого агента Main. Для этого нужно открыть вкладку «Агент» и использовать инструмент «Агент». С помощью мыши экземпляр агента перетаскивается в поле корневого агента. Будет открыт диалог для создания популяции агентов. Нужно выбрать «Популяцию агентов» (рисунок 5.1.)