12
Построение динамической модели системы Задание №2 по курсу “Компьютерная математика” (5 курс) Преподаватель: Атрохов К. Г. Осень 2015 Задание Вам нужно ознакомиться с методологией имитационного моделирования систем, которая называется “Системная динамика”, и самостоятельно (или в группе из двух человек) реализовать две модели в системе моделирования iThink/STELLA. Формат Задание можно выполнять как самостоятельно, так и вдвоем Плагиат не принимается Диаграмма должна быть выполнена на компьютере в пакете iThink/STELLA Выполненная работа сдается преподавателю по практике При сдаче нужно объяснить логику и процесс построения модели Оценка по заданию выставляется в формате зачет/незачет Системная динамика Методология подробно описана в книге Д. Медоуз “Азбука системного мышления” (см. сайт). Здесь приведено краткое описание, необходимое для выполнения задания. Система состоит из запасов и потоков. Запасы — это элементы системы, которые можно измерить какимлибо (даже фантастическим) образом, например, ВВП страны, средняя продолжительность жизни, выручка компании за год, количество фолловеров в твитере, уровень компетентности работника и т.п. Запасы изменяются в результате работы потоков. Потоки по сути представляют собой скорость изменения запасов. Существует два вида потоков: входящий и исходящий. Например, так можно описать количетво фолловеров и два потока: те, кто подписались, и те, кто отписались. Замечание: Модель выполнена в iThink/STELLA, которые не дружат с кириллицей, поэтому в этих программах лучше сразу все делать латиницей или поанглийски.

Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

Embed Size (px)

Citation preview

Page 1: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

Построение динамической модели системы Задание №2 по курсу “Компьютерная математика” (5 курс) Преподаватель: Атрохов К. Г. Осень 2015 

Задание Вам нужно ознакомиться с методологией имитационного моделирования систем, которая называется “Системная динамика”, и самостоятельно (или в группе из двух человек) реализовать две модели в системе моделирования iThink/STELLA. 

Формат ● Задание можно выполнять как самостоятельно, так и вдвоем ● Плагиат не принимается ● Диаграмма должна быть выполнена на компьютере в пакете iThink/STELLA ● Выполненная работа сдается преподавателю по практике ● При сдаче нужно объяснить логику и процесс построения модели ● Оценка по заданию выставляется в формате зачет/незачет 

Системная динамика Методология подробно описана в книге Д. Медоуз “Азбука системного мышления” (см. сайт). Здесь приведено краткое описание, необходимое для выполнения задания.  Система состоит из запасов и потоков. Запасы —  это элементы системы, которые можно измерить каким­либо (даже фантастическим) образом, например, ВВП страны, средняя продолжительность жизни, выручка компании за год, количество фолловеров в твитере, уровень компетентности работника и т.п. Запасы изменяются в результате работы потоков. Потоки по сути представляют собой скорость изменения запасов. Существует два вида потоков: входящий и исходящий. Например, так можно описать количетво фолловеров и два потока: те, кто подписались, и те, кто отписались. 

 Замечание: Модель выполнена в iThink/STELLA, которые не дружат с кириллицей, поэтому в этих программах лучше сразу все делать латиницей или по­английски.  

Page 2: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

Входить в уровень (и исходить из него) может разное количество потоков, на самой схеме уровней может быть несколько (чем их больше, тем более сложную систему вы рассматриваете). Пример из книги Медоуз (выполнен в другой программе Vensim для контраста): 

 Следующий важнейший элемент системной диаграммы —  связи. Без них динамика систем будет выглядеть примитивно: все запасы будут изменяться с постоянной скоростью (скорость исходящего потока минус скорость входящего). Однако, в любой систме динамику определяют именно связи, которые могут быть довольно сложными.  Связь может идти от запаса к потоку, а также соединять два потока. Например, в банке лежат деньги на депозите (это запас Deposit). Каждый месяц депозит пополняется суммой начислений по процентной ставке банка (этот поток называется Interest). Без указаний связей поток имеет постоянную скорость и сумма на депозите растет линейно. 

 

  Но ведь Interest связан с Deposit, так как чем больше сумма лежит на депозите, тем больше сумма начислений. Это усиливающий цикл обратной связи, и рост депозита становится нелинеен (экспонента вместо прямой). 

Page 3: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

 

  При задании связи можно указать формулу, по которой изменяется скорость потока. В этом случае, если ставка равна 10%, то формула будет Deposit*0.1, т.е. на каждом шаге моделирования к депозиту будет добавлено именно такое значение. 

Пример построения модели в iThink/STELLA Программы iThink / STELLA являются коммерческой разработкой компании isee systems (http://www.iseesystems.com/). Вы можете использовать либо iThink, либо STELLA — у них идентичные функции и UI. Основное различие в брендировании: iThink предназначен для бизнес­структур и внутри содержит модели бизнес направленности, а STELLA направлена в основном на использование в учебных заведениях. Скачать эти программы вы можете с сайта компании:  

● iThink — http://www.iseesystems.com/Softwares/Business/ithinkSoftware.aspx ● STELLA — http://www.iseesystems.com/softwares/Education/StellaSoftware.aspx 

Также установщики программ вы можете найти на факультетском сервере mmf­fs.  Построим простую модель для прогнозирования населения РБ через 6 лет. В модели будем исходить из предположения, что основное влияние на динамику роста населения оказывают рождаемость и смертность (а миграцию учитывать не будем). Причинно­следственная диаграмма для этой модели выглядит так: 

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

Page 4: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

 Эту диаграмму довольно легко “конвертировать” в системно­динамическую. Запас будет один, очевидно, что это население. У этого запаса будет два потока: входящий (рождаемость) и исходящий (смертность).  Данные для прогнозирования найдем на сайте Белстата: 

● Население в 2015 — 9 481 тыс. ● Коэффициент рождаемости — 12.5 на тыс. человек (тренд восходящий) ● Коэффициент смертности — 12.8 на тыс. человек (тренд нисходящий) 

 Окно программы содержит 4 вкладки (аспекта модели): 

● Interface — это витрина для модели, куда можно добавлять различные элементы управления 

● Map — здесь можно задать текстовое описание для каждого блока ● Model (основная для нас) — здесь происходит моделирование ● Equation — здесь можно видеть применяемые в модели уравнения 

 На панели инструментов для нас пока важны первые четыре: 

● Запасы ● Потоки — по умолчанию двунаправленные, но нам нужны однонаправленные, для 

чего просто долго нажмите на иконку и выберите Flow ● Конвертеры ● Связи 

 

 Переходим на вкладку Model. Добавляем запас (Stock) и называем его Population. Добавляем входящий поток (однонаправленный) Births и такой же исходящий поток Deaths. 

Page 5: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

 Добавить коэффициенты рождаемости/смертности можно напрямую, но лучше сделать это используя конвертеры. Добавим два конвертера Birth rate/death rate, а также нанесем связи между элементами.  Замечание: То есть конвертеры можно понимать как переменные, содержащие значения (в том числе вычисляемые по формулам). 

 Программа показывает знаки вопроса (?) пока не заданы конкретные значения. Чтобы их задать, кликните по элементу, например, вот так можно задать Birth rate (12.5/1000=0.0125). 

 Задайте остальные значения/формулы: 

Page 6: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

● Population = 9481 ● Birth rate = 12.5/1000 ● Death rate = 12.8/1000 ● Births = Population * Birth rate (т.е. мы тем самым утверждаем, что рождаемость 

есть население, умноженное на коэффициент рождаемости) ● Deaths = Population * Death rate 

 Важно: Внутри формул можно использовать и встроенные функции (описание некоторых из них приведено в конце документа).  После этого нужно задать параметры моделирования, для чего откройте Run > Run specs… Зададим период моделирования от 1 до 6, а параметр DT (шаг) выставим в 1 (чтобы не было промежуточных пересчетов). 

 

Для запуска моделирования нажмите иконку в левом нижнем углу ( ) или Run > Run. Вы увидите анимацию, но никаких результатов. Результаты можно отобразить в виде графика или таблицы. Добавим таблицу (она есть на панели инструментов) и перетянем туда (drag­and­drop) Population. Запустите моделирование снова, и вы увидите результат.  Замечание: Если на таблице нажать иконку с булавкой, то таблица закрепится на экране.  

Page 7: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

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

 В итоге получился такой график. 

Page 8: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

 Тренд, понятное дело, нисходящий (так как коэффициент смертности пока выше коэффициента рождаемости), однако, ситуация постепенно выравнивается.  В iThink/STELLA формулу можно задать неявно, в виде графической функции. Это полезно в тех случаях, когда аналитический вид формулы связи не известен. Например, в нашем случае мы можем изменить формулу для коэффициента смертности на график (для интереса, реальной подоплеки для этого нет). Для этого соединим Death rate с Population, очистим его значение и нажмем Become Graphical Function в окне его свойств. В открывшемся диалоге можно указать диапазоны значений, а также количество точек, после чего нарисовать зависимость.  

  Естественно, запустив симуляцию снова вы увидите новый график, перестроенный с учетом заданной графической функции для Death rate.  

Page 9: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

Замечание: Не всякую причинно­следственную модель можно перевести в динамическую. Для этого нужно знать законы/правила/формулы, по которым взаимодействуют элементы системы. В терминах системной динамики нужно знать значения запасов, формулы для потоков и конвертеров. Например, в задании #1 в моделе присутствовали такие элементы, как продуктивность и моральный дух команды. Но чтобы построить динамику такой системы, нужно иметь подходящую модель для указанных понятий. Часто это сделать довольно затруднительно. Но если вы хорошо представляете себе эти связи или модель хорошо известна, то динамическую модель построить достаточно просто. 

Задание 1: Модель распространения продукта по Бассу Согласно модели, предложенной Фрэнком Бассом в 1969 году, рост количества потребителей товара происходит по двум каналам: 

● Эффект рекламы — люди, которые сами пробуют новый продукт в первую очередь, и узнают о нем из разных сообщений (в модели они называются Innovators) 

● Эффект межличностной коммуникации (людская молва, сарафанное радио) — люди, которые узнают о новом продукте от первой категории, прислушиваются к их мнению (в модели они называются Imitators) 

 На начальном этапе преобладает эффект рекламы, т.к. почти никто не знает о продукте. По мере роста количества потребителей эффективность рекламы снижается, но зато возрастает эффект людской молвы. Количество потребителей продукта увеличивает поток новых потребителей за счет эффекта межличностной коммуникации, что указывает на наличие цикла усиливающей обратной связи.  Важно: Далее будет построена часть модели — вам нужно будет ее закончить самостоятельно!  Модель строится на следующих предположениях: 

1. У нас есть запас потенциальных клиентов (Potential adopters), который составляет 100 000 чел. 

2. Второй запас в модели — клиенты, купившие продукт (Adopters), в начальный момент времени отсутствуют 

3. Основной поток (Adoption rate) переводит потенциальных клиентов в реальных покупателей 

4. Этот поток формируется из двух каналов: инноваторов и имитаторов 5. Инноваторы (Innovators) покупают товар под воздействием рекламы. 

Эффективность рекламы (Ad effectiveness) пусть равна 0.011 6. Имитаторы (Imitators) покупают товар после взаимодействия с потребителями уже 

купившими товар. 

Page 10: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

7. Моделирование взаимодействия (людской молвы, word of mouth, WOM): потребители (Adopters) с некоторой частотой (Contact rate = 100 чел. в год) вступают в контакт с потенциальными клиентами. При этом они обладают некоторой силой убеждения (Adoption fraction), например, 0.015. Поэтому не все контакты приводят к покупке. 

8. Время моделирования установим в 8 лет. Параметр DT выберите 0.25, чтобы получались гладкие графики. 

Ниже нарисована часть модели, описывающая канал инноваторов. Канал имитаторов вам нужно смоделировать самостоятельно. 

 Добавьте в модель график, куда поместите инноваторов и имитаторов. Также укажите полярности связей (+/­, для этого кликните правой кнопкой мыши по связи и выберите Polarity) и определите какие циклы обратной связи можно выделить в получившейся модели. 

Задание 2: Склад товаров Данная модель описана в книге Д. Медоуз «Азбука системного мышления» (глава 2). 

Page 11: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

 Модель состоит из склада и двух потоков — поставок и продаж. Менеджер склада желает поддерживать 10­дневные запасы на складе исходя из среднего значения продаж за последние дни.  Есть три вида задержек (их вам и нужно будет добавить в модель): 

1. Задержка в восприятии покупательского спроса (воспринимаемая активность продаж). Она представляет собой усредненное значение продаж за несколько дней (это количество дней определяется константой Запаздывание в восприятии) 

2. Задержка в отправке заказа — когда заказ делится на части (количество частей параметризуется Запаздыванием в отклике) 

3. Задержка поставок — через сколько дней заказ будет поставлен на склад (определяется константой Запаздывание поставок) 

 Постройте модель для следующих комбинаций задержек: 

● Эксперимент 1 (сравните с графиком 32 в книге) ○ Запаздывание в восприятии = 5 дней ○ Запаздывание в отклике = 3 дней ○ Запаздывание поставок = 5 дней 

● Эксперимент 2 (сравните с графиком 34 в книге) ○ Запаздывание в восприятии = 2 дней ○ Запаздывание в отклике = 3 дней ○ Запаздывание поставок = 5 дней 

● Эксперимент 3 (сравните с графиком 35 в книге) ○ Запаздывание в восприятии = 5 дней ○ Запаздывание в отклике = 2 дней ○ Запаздывание поставок = 5 дней 

Page 12: Построение динамической модели системыkm.mmf.bsu.by/courses/2015/km9/SATask02.pdf · Медоуз “Азбука системного мышления”

● Эксперимент 4 (сравните с графиком 36 в книге) — если все ОК, то вы не увидите колебаний как на предыдущих графиках 

○ Запаздывание в восприятии = 5 дней ○ Запаздывание в отклике = 6 дней ○ Запаздывание поставок = 5 дней 

 Формулы для остальных блоков такие: 

● Время моделирования = 0..100 дней ● Запас = 200 ● Запросы от покупателей = 20 (дни 0­25), 22 (дни 26­100) ● Продажи = определите сами, учитывая что вы продаете согласно спроса, но не 

больше того, что вас есть на складе ● Воспринимаемая активность продаж = определите сами, здесь вам может помочь 

встроенная функция SMTH1 ● Желаемый запас = 10 * Воспринимаемая активность продаж ● Разность между имеющимся и желаемым запасом = определите сами ● Заказы, отправляемые производителю = определите сами, учтите, что заказ не 

может быть меньше нуля ● Поставки = определите сами, учитывая задержку в доставке, здесь вам может 

помочь встроенная функция DELAY