Шрифт:
Интервал:
Закладка:
Диаграммы запасов и потоков должны указывать, как работает каждая связь, и поэтому будут включать дополнительные переменные, такие как маржа (рис. 11.11).
Таким образом, видно, что прибыль в этом месяце рассчитывается на основании как объема продаж в этом месяце, так и процента маржи с объема продаж.
Во-вторых, диаграммы запасов и потоков гораздо точнее называют переменные. Например, в диаграмме цикличной причинности рост населения мы называли просто количеством родившихся, в то время как на диаграмме запасов и потоков у нас есть количество родившихся в год, что подчеркивает связанный со временем характер потоков. Это тоже отражает точность, требуемую для моделирования.
Программный продукт ithink был разработан специально для моделирования динамики систем и позволяет вам делать следующее:
• рисовать диаграммы запасов и потоков, подходящие к вашей модели;
• указывать вводные значения переменных;
• указывать связи между переменными;
• получать результаты в форме графиков и таблиц.
После того как диаграмма запасов и потоков нарисована и все вводные переменные и связи между ними указаны, модель начинает имитировать поведение системы во времени и выдавать запрошенные результаты.
Первый и самый важный этап в построении модели ithink не требует программного обеспечения, так как он происходит независимо от компьютера. Он включает анализ проблемы и составление диаграммы цикличной причинности, отражающей основные элементы системы. Компьютерное моделирование начинается только после одобрения диаграммы цикличной причинности соответствующей группой.
Таким образом, диаграммы цикличной причинности являются основной спецификацией для модели ithink, но, как уже отмечалось, представление в ithink имеет форму диаграммы запасов и потоков, которая обычно содержит больше переменных.
Главный экран ithink позволяет вам очень легко построить диаграмму запасов и потоков. В программном обеспечении содержатся все основные символы (прямоугольники, трубы с кранами, круги и полукруглые стрелки), которые вы можете перетаскивать на экран по своему желанию. В нем имеются и другие инструменты, например «динамитная шашка», с помощью которой вы можете «взорвать» символы, которые больше не требуются!
Следующий этап после составления диаграммы – указание числовых значений некоторых переменных и всех необходимых связей между ними. Числовых значений требуют следующие переменные:
• начальные значения всех запасов;
• значения всех входных свободных звеньев.
Все прочие переменные будут выражены в виде алгебраических отношений в соответствии со связями, указанными в диаграмме запасов и потоков. Поскольку ithink «знает» эти связи, указать их очень легко.
Позвольте пояснить это на примере очень простой модели роста населения (рис. 11.12).
Население – это запас, следовательно, он требует начального значения, скажем 10 000 человек в конкретном месте на начало 2000 г. Годовой уровень рождаемости показан с помощью входного свободного звена, пусть он составляет 15 родившихся на 1000 человек в год. Годовой уровень смертности также показан с помощью входного свободного звена и составляет, скажем, 12 умерших на 1000 человек в год. Количество родившихся и умерших в год рассчитывается следующим образом:
Количество родившихся в год = население × годовой уровень рождаемости / 1000;
Количество умерших в год = население × годовой уровень смертности / 1000.
В ithink вводимые значения данных и алгебраические выражения сводятся вместе на «экране равенств», который находится «позади» диаграммы запасов и потоков. Для данной модели населения экран равенств выглядит следующим образом:
Первая строчка выглядит самой загадочной, но в действительности все просто. В ней определяется, как рассчитывается запас население: население в конце текущего периода времени (t), скажем в конце 2005 г., равняется населению в конце предыдущего периода (t – dt), скажем 2004 г. Это значение, конечно, такое же, как в начале текущего периода, плюс разница между притоком и оттоком (количество родившихся в год – количество умерших в год) в течение текущего периода dt, скажем календарного 2005 г.
Бухгалтеры узнают здесь знакомый рецепт: сальдо на конец периода равен сальдо на начало периода плюс сальдо движения за период. Математики увидят разностное уравнение. Те из нас, кто доверяет здравому смыслу, оценят тот факт, что количество воды, которое наберется в ванну за пять минут, будет равно количеству, которое есть в ней сейчас, плюс то, что притечет в течение следующих пяти минут, минус то, что вытечет.
Следующая линия указывает начальное значение населения (10 000 человек на начало 2000 г.), а следующие две определяют, как рассчитывается количество родившихся и умерших в год. И наконец, две последние линии указывают значения для годового уровня рождаемости (15 родившихся на 1000 человек в год) и смертности (12 умерших на 1000 человек в год), которые будут применяться во всей модели.
Модель работает по алгоритму, указанному этими равенствами для каждого года. Учитывая значение населения в начале 2000 г., модель сначала рассчитывает потоки за календарный 2000 г., всего 150 родившихся и 120 умерших. В 2000 г. чистый рост населения (количество родившихся в год – количество умерших в год) равен 30, и количество населения в конце 2000 г. рассчитывается в соответствии с равенством, указанным в первой строчке, как 10 000 + (150–120) × 1 = 10 030. Это число становится начальным значением на начало следующего, 2001 г., тот же процесс происходит в 2001 г. и т. д., в каждом году.
Все эти расчеты производятся автоматически. После того как вы ввели данные и соответствующее равенство (обычно это очень легко), модель работает сама, и вам не нужно возвращаться к равенству. Равенства вводятся только один раз, их не надо копировать, как в электронных таблицах: повторение во времени встроено в программу.
Но самое интересное – это, конечно, результат работы модели, который для периода в 50 лет выглядит так, как показано на рис. 11.13. Экспоненциальный рост, маскирующийся под линейный!