Моделирование демографического развития Вологодской области в среде мультиагентного моделирования 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