Моделирование демографического развития Вологодской области в среде мультиагентного моделирования NetLogo

Анализ методов и средств демографического моделирования регионов. Построение концептуальной модели. Экспериментальные исследования моделей демографического развития и применения разработанных программных модулей. Реализация основного цикла программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

set n-deaths 0

set f-deaths 0

set sum-age-at-death 0

set sum-n-children-at-death 0

set n-children-per-female 0

reset-ticks

end

Исходя из данных, которые мы разработали в 3 главе, в подпункте разработки поведения программных агентов, теперь реализуем все четыре основные процедуры на языке Logo.

4.1 Реализация основного цикла программы

Реализуем процедуру “to reproduce”, исходя из блок-схемы, представленной на рисунке 3.2.

to reproducing

set n-born 0

fertility-rate

Устанавливаем количество рожденных в нулевое значение, а также задаем фертильность по возрастам.

ask humans with [gender = "F" and my-spouse != 0]

[if random-float 1 < fertility

[let mother self

let father my-spouse

Проверяем агента на требуемые условия, а также выявляем вероятность рождения ребенка.

hatch-humans 1 [

set age 0

set my-spouse 0

set fertility 0

set n-children 0

set my-mother mother

set my-father father

Создаем новую копию агента, и задаем его характеристики и ссылки на родителей.

if random-float 1 < 0.51 [

set gender "M"

]

ask my-household [

set household-members (turtle-set household-members myself)

]

]

Определяем пол ребенка, и приписываем его к семье.

set n-born n-born + 1

set n-children n-children + 1

ask humans with [my-spouse = myself]

[ set n-children n-children + 1]

]

]

end

Обновляем глобальные характиристики, а также характеристики родителей.

Реализуем процедуру “to dying”, основываясь на блок-схеме процедуры, изображенной на рисунке 3.3.

to dying

ask humans

[ let risk-of-dying mortality

if random-float 1 < risk-of-dying

В участке кода выше проверям вероятность смерти для каждого агента.

[set n-deaths n-deaths + 1

set sum-age-at-death sum-age-at-death + age

if gender = "F" and age > 17 [

set f-deaths f-deaths + 1

set sum-n-children-at-death sum-n-children-at-death + n-children

]

В данном участке кода обновляем глобальные переменные, увеличивая число умерших.

ask humans with [my-spouse = myself]

[ set my-spouse 0 set widowed 1 ]

die

]

Здесь реализуется поведение агентов, когда супруг или супруга агента умерла, и тогда устанавливается вдовство, и также сам агент уничтожается из моделирования.

set age age + 1

]

ask households with [count household-members = 0] [ die ]

end

В этом участке кода реализуется вариант, когда агент не умирает, Тогда его возраст увеличивается на 1 год. Следующая строчка кода показывает, что пустые семьи удаляются из моделирования.

Реализуем процедуру “to recuiting”. Данная процедура также имеет блок-схему на рисунке 3.4.

to recruiting

if ticks > 0 [ ask humans with [gender = "M" and

age > 17 and age < 26 and my-spouse = 0]

[ if random-float 1 < recruitment [ set recruit 1] ]

ask humans with [recruit > 0]

[ set recruit recruit + 1 if recruit > 2 [set recruit 0 ] ]

]

end

Даная процедура небольшая. Реализация выполняется про принципу: если во время моделирования, агент мужского пола, старше 17 лет, и младше 26, а также не имеющий супруга существует, то ему с долей вероятности устанавливается свойство рекрута, равным единице, тогда он попадает на службу в армию. Если свойство рекрута становится равным двум, То тогда агент демобилизуется, и возвращается в основной цикл моделирования.

Реализуем процедуру “to marring”, основываясь на блок-схеме алгоритма процедуру, показанном на рисунке 3.5.

to marrying

ask humans with [gender = "F" and age > 17 and my-spouse = 0]

[ let husband one-of humans with

[ gender = "M" and age > 18 and my-spouse = 0 and recruit = 0]

На участке кода выше согласно модели выбираем девушку старше 17 лет, и ищем для нее партнера, который старше 18 лет, а также не служит в армии.

if husband != nobody

[ set my-spouse husband

set widowed 0

let couple (turtle-set self husband)

Если жених найден, то устанавливаем переменную, отвечающую за вдовство, равной нулю, устанавливаем найденного жениха, как супруга, создаем локальную переменную «пара».

ask husband [

set my-spouse myself

ifelse widowed = 0

[ hatch-households 1

[ set household-members couple

ask couple

[set my-household myself]

]

]

[ ask my-household

[ set household-members (turtle-set household-members self) ]

set widowed 0

]]]]

end

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

4.2 Реализация вспомогательных процедур

Реализация таблицы смертности представлена участком кода ниже. Реализация основывается на том, что проверяется возраст агента, с помощью ветвления, и затем зарезервированным словом “set” устанавливается значение смертности для данного возрастного участка.

to-report mortality

let mortality-year 0

let delitel 2.5

if Life_table = "year 2013" [

if age = 0 [set mortality-year 0.00539 / delitel]

if age > 0 and age <= 4 [set mortality-year 0.00113 / delitel]

if age > 4 and age <= 9 [set mortality-year 0.00096 / delitel]

if age > 9 and age <= 14 [set mortality-year 0.00113 / delitel]

if age > 14 and age <= 19 [set mortality-year 0.00193 / delitel]

if age > 19 and age <= 24 [set mortality-year 0.00471 / delitel]

if age > 24 and age <= 29 [set mortality-year 0.01039 / delitel]

if age > 29 and age <= 34 [set mortality-year 0.01453 / delitel]

if age > 34 and age <= 39 [set mortality-year 0.02362 / delitel]

if age > 39 and age <= 44 [set mortality-year 0.02697 / delitel]

if age > 44 and age <= 49 [set mortality-year 0.03492 / delitel]

if age > 49 and age <= 54 [set mortality-year 0.05723 / delitel]

if age > 54 and age <= 59 [set mortality-year 0.08869 / delitel]

if age > 59 and age <= 64 [set mortality-year 0.10623 / delitel]

if age > 64 and age <= 69 [set mortality-year 0.08602 / delitel]

if age > 69 and age <= 74 [set mortality-year 0.06125 / delitel]

if age > 74 and age <= 79 [set mortality-year 0.14058 / delitel]

if age > 79 and age <= 84 [set mortality-year 0.14308 / delitel]

if age > 84 and age <= 89 [set mortality-year 0.13014 / delitel]

if age > 89 and age <= 94 [set mortality-year 0.04872 / delitel]

if age > 94 [set mortality-year 0.01238]

]

report mortality-year

end

Реализация таблицы фертильности представлена на следующем участке кода. Реализация приведена тем же способом, что и реализация таблицы смертности.

to fertility-rate

let delitel 1.9

ask humans with [gender = "F"]

[

if age < 15 [set fertility 0.000 ]

if age > 14 and age <= 19 [ set fertility 0.0284 / delitel ]

if age > 19 and age <= 24 [ set fertility 0.15 / delitel ]

if age > 24 and age <= 29 [ set fertility 0.363 / delitel ]

if age > 29 and age <= 34 [ set fertility 0.302 / delitel ]

if age > 34 and age <= 39 [ set fertility 0.128 / delitel ]

if age > 39 and age <= 44 [ set fertility 0.022 / delitel ]

if age > 45 and age <= 49 [ set fertility 0.01 / delitel ]

if age > 49 [ set fertility 0.000 ]

]

end

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

to age-determination

ask humans

[ let a-number random-float 1

if Life_table = "year 2013"[

if a-number < 0.0138

[ set age 0 ]

if a-number >= 0.0138 and a-number < 0.0636

[ set age random 4 + 1 ]

if a-number >= 0.0636 and a-number < 0.1180

[ set age random 5 + 5 ]

if a-number >= 0.1180 and a-number < 0.1652

[ set age random 5 + 10 ]

if a-number >= 0.1652 and a-number < 0.2117

[ set age random 5 + 15 ]

if a-number >= 0.2117 and a-number < 0.2761

[ set age random 5 + 20 ]

if a-number >= 0.2761 and a-number < 0.3616

[ set age random 5 + 25 ]

if a-number >= 0.3616 and a-number < 0.4425

[ set age random 5 + 30 ]

if a-number >= 0.4425 and a-number < 0.5143

[ set age random 5 + 35 ]

if a-number >= 0.5143 and a-number < 0.5766

[ set age random 5 + 40 ]

if a-number >= 0.5766 and a-number < 0.6430

[ set age random 5 + 45 ]

if a-number >= 0.6430 and a-number < 0.7252

[ set age random 5 + 50 ]

if a-number >= 0.7252 and a-number < 0.8056

[ set age random 5 + 55 ]

if a-number >= 0.8056 and a-number < 0.8708

[ set age random 5 + 60 ]

if a-number >= 0.8708 and a-number < 0.9010

[ set age random 5 + 65 ]

if a-number >= 0.9010

[ set age random 25 + 70 ]

]]

End

5 ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ МОДЕЛЕЙ ДЕМОГРАФИЧЕСКОГО РАЗВИТИЯ И ПРИМЕНЕНИЯ РАЗРАБОТАННЫХ ПРОГРАММНЫХ МОДУЛЕЙ

В модели используются данные «Умершие по возрасту и полу в 2015»[12] и данные «Родившиеся живыми по возрасту матери в 2015 году»[13], моделирования начинается с данного года.

Экспериментальные показатели модели по количеству родившихся и количеству умерших за год, не совпадает с фактическими. Связанно это с несовершенством модели, поэтому было принято решение ввести искусственное ограничение на данные таблицы. Введены переменные “delitelm” - ограничитель для таблицы смертности, и “delitelf” - ограничитель для таблицы фертильности.

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

Рисунок 5.1 - Моделирование без ограничителя

Рисунок 5.2 - Моделирование с ограничителем

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

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

Рисунок 5.3 - Моделирование на 50 лет без ограничителя

Рисунок 5.4 - Моделирование на 50 лет с ограничителем

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

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

6. РАЗРАБОТКА ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ

Разработанная модель основывается на агент-ориентированном программировании. Разработка структур исходила из того, чтобы дать агенту необходимые характеристики, с помощью которых он бы мог реализовывать свое поведение. В модели используются все нужные характеристики, описывающие человека: возраст, пол, фертильность, служба в армии, вдовство, количество детей, ссылки на семью и родителей, а также ссылка на супруга, что позволяет в полной мере описать взаимоотношения как в семьи, так и между людьми. Для структуры «семья» используется только лишь ссылки на членов семьи, для простого создания указателей на агентов, входящих в семью.

Для того, чтобы начать моделирование, необходимо сначала установить все требуемые для этого параметры. Данное действие выполняет процедура “to setup”. В ней задается количество моделируемых агентов:

create-humans 1194

Процедура “create” требует, чтобы для создаваемых объектов также определили все их характеристики, что выполняется в квадратных скобках. Для того, чтобы агенты выполнили какое-то действие необходимо воспользоваться зарезервированным словом “ask”, как в примере ниже в процедуре “to setup”:

ask humans with [gender = “F” and age > 17]

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

В программе есть основной цикл. Рассмотренный в пункте 3.2. Данный цикл выполняет всю основные действия. Весь цикл вызывается из процедуры “to go”, в ней по порядку исполняются процедуры основного цикла, а затем обновляются глобальные переменные, которые хранят информацию по годам. Все остальные вспомогательные процедуры рассмотрены в главе 4.

Для того, чтобы начать моделирование, в среде NetLogo во вкладе интерфейс необходимо нажать по очереди кнопку setup, а затем кнопку go. Если нажать только кнопку go, то среда выдаст ошибку инициализации.

В интерфейсе модели присутствуют два графика - “Number of humans”, “Born and dead”. В первом графике указывается количество общее количество агентов, и распределение агентов по полам в каждый год моделирования, во втором графике показывается количество родившихся и количество умерших за каждый год моделирования.

Также во вкладке интерфейс присутствуют рычажки, которые определяют глобальные переменные, которые можно во время моделирования менять. Рычажки предоставляют более простой графический способ изменения переменных. В модели присутствуют рычажки “recruitment”, “delitelm”, “delitelf”, “num-of-ticks”, которые отвечают за переменные количества лет службы в армии, ограничителя для смертности и фертильности, а также количества тактов моделирования соответственно.

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

Show n-death

В модели не используется графическое представление агентов, так как моделирование происходит лишь логически, не используя какую-либо территорию.

ЗАКЛЮЧЕНИЕ

Результатом выпускной квалификационной работы является агент-ориентированная модель населения Вологодской области. Данная модель прогнозирует демографическое развитие области, основываясь на данных 2015 года. С помощью нее можно прогнозировать поступление налогов, развитие региона с экономической точки зрения.

К сожалению, итоги моделирования пессимистичны, в Вологодской области наблюдается сокращение численности населения. Данная модель не является достаточно точной, в ней не реализовано много нюансов демографического развития, но тенденция к сокращению численности можно назвать объективной.

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

Создан основной цикл, разработано поведение программных агентов, построены блок-схемы алгоритмов процедур основного цикла программы. Разработаны вспомогательные процедуры для работы основного цикла программы.

С точки зрения законченности модель в среде NetLogo, работает без ошибок, если учитывать все предостережения, указанные в технической документации. Модель прекрасно моделирует население Вологодской области, выявляет тенденцию к сокращению численности, что можно назвать положительным результатом выполнения выпускной квалификационной работы.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. О стратегии социально-экономического развития Вологодской области на период до 2030 года: постановление Правительства Вологодской области от 17.10.2016 №920.

2. Швецов, А. Н. ГИОУР_лекция2_демография [Электронный ресурс]: электрон. учебник / Швецов А. Н. - Электрон. Дан. - Вологда: ВоГУ, 2016.

Размещено на Allbest.ru

...

Подобные документы

  • Анализ методов и средств моделирования мультиагентных схем. Тестирование лабораторных работ "Climatechange", "ElFarol" и "Pagerank". Экспериментальное тестирование и отладка программного комплекса. Оценка качества разработанного программного продукта.

    дипломная работа [4,5 M], добавлен 12.08.2017

  • Характеристика основных методов и средств моделирования мультиагентных систем. Ознакомление с результатами экспериментального тестирования и отладки программного комплекса. Рассмотрение методов оценки качества разработанного программного продукта.

    дипломная работа [3,1 M], добавлен 27.10.2017

  • Методы материального моделирования в среде GPSS. Построение и разработка концептуальной модели. Алгоритмизация модели и ее машинная реализация. Экспериментальное моделирование на ЭВМ. Определение максимальной длины очереди готовых к обработке пакетов.

    курсовая работа [189,0 K], добавлен 14.09.2011

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

    курсовая работа [67,9 K], добавлен 07.12.2009

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

    презентация [49,3 K], добавлен 16.10.2013

  • Понятие компьютерной и информационной модели. Задачи компьютерного моделирования. Дедуктивный и индуктивный принципы построения моделей, технология их построения. Этапы разработки и исследования моделей на компьютере. Метод имитационного моделирования.

    реферат [29,6 K], добавлен 23.03.2010

  • Значение вербальных и знаковых информационных моделей для исследования объектов, процессов, явлений. Роль метода формализации в процессе создания компьютерной модели. Использование программы AutoCAD для трехмерного моделирования и визуализации объекта.

    курсовая работа [866,5 K], добавлен 08.01.2015

  • Изучение применения трёхмерного моделирования и анимации при создании статической рекламы, динамических заставок для телеканалов, моделирования катастроф, в компьютерных играх. Характеристика создания моделей с помощью модификаторов Edit Poly, Edit Mesh.

    практическая работа [4,0 M], добавлен 29.09.2011

  • Основные понятия теории моделирования. Виды и принципы моделирования. Создание и проведение исследований одной из моделей систем массового обслуживания (СМО) – модели D/D/2 в среде SimEvents, являющейся одним из компонентов системы MATLab+SimuLink.

    реферат [1,2 M], добавлен 02.05.2012

  • Теоретические основы моделирования систем в среде имитационного моделирования AnyLogic. Средства описания поведения объектов. Анимация поведения модели, пользовательский интерфейс. Модель системы обработки информации в среде компьютерного моделирования.

    курсовая работа [1,5 M], добавлен 15.05.2014

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

    курсовая работа [79,2 K], добавлен 25.06.2011

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

    курсовая работа [659,1 K], добавлен 24.03.2012

  • Анализ и формализация задачи моделирования: построение концептуальной модели, ее формализация в виде Q-схемы. Построение имитационной модели: создание блок-схемы, представление базовой исходной имитационной модели. Исследование экономических процессов.

    контрольная работа [156,0 K], добавлен 21.11.2010

  • Система массового обслуживания модели функционирования мастерской. Структурная и Q-схемы, построение временной диаграммы, варианты по оптимизации модели. Составление программы на языке имитационного моделирования GPSS и разбор результатов моделирования.

    курсовая работа [74,2 K], добавлен 23.06.2011

  • Моделирование как основная функция вычислительных систем. Разработка концептуальной модели для системы массового обслуживания и ее формализация. Аналитический расчет и алгоритмизация модели, построение блок-диаграмм. Разработка и кодирование программы.

    курсовая работа [164,8 K], добавлен 18.12.2011

  • Технология разработки и тестирования программного обеспечения в среде Visual Studio на примере создания программы моделирования систем массового обслуживания. Аналитические и имитационные методы моделирования с разными дисциплинами обслуживания заявок.

    дипломная работа [1,1 M], добавлен 09.09.2012

  • Компьютерное моделирование - вид технологии. Анализ электрических процессов в цепях второго порядка с внешним воздействием с применением системы компьютерного моделирования. Численные методы аппроксимации и интерполяции и их реализация в Mathcad и Matlab.

    курсовая работа [1,1 M], добавлен 21.12.2013

  • Проектирование напряженно-деформированного состояния объекта при граничных условиях. Разработка концептуальной модели и расчетной схемы объекта анализа. Выбор и краткое описание программных и технических средств. Интерпретация результатов моделирования.

    дипломная работа [439,8 K], добавлен 18.08.2009

  • Разработка решения задачи имитационного моделирования системы массового обслуживания (СМО), на примере склада продукции. Построение концептуальной модели системы. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.

    курсовая работа [75,5 K], добавлен 26.06.2011

  • Создание базы данных для автоматизации электронного магазина по продаже шин в терминале ER моделирования. Построение логической и концептуальной модели базы данных. Её реализация в интерактивной среде Интернет. Расчет экономической эффективности магазина.

    курсовая работа [4,5 M], добавлен 10.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.