вторник, 30 сентября 2008 г.

Первое впечатление о Vensim

Разбираясь с основами системной динамики, я скачал из интернета программу Vensim, предназначенную для создания моделей. И взялся изучать модели из тьюториала, первой мое внимание привлекла модель роста системно-динамического сообщества, группы ученых использующих в своих исследованиях подходы Форрестера. Изучая эту модель по руководству на английском, я несколько изменил свое мнение о программе. На первый взгляд она показалась мне несколько устаревшей, это было вызвано дизайном окошек и кнопочек. Но потыкав реальную модель и посмотрев результаты моделирования, я несколько изменил своей мнение. Особенно мне понравилось то, что при построении графиков можно сделать следующий интуитивно понятный шаг. Выделить несколько интересуемых переменных и нажать кнопку построить график, и тогда графики нужных переменных появятся в одном окне. 
Немножко портит впечатление большое количество сообщений об ошибках, природа которых мне не понятна. Даже открывая модель из примеров, Vensim ругался на какие-то версии.

среда, 10 сентября 2008 г.

Основные понятия системной динамики

Основываясь на информации, полученной в книге Джея Форрестера, я осмелюсь сформулировать ключевые понятия системной динамики.
Итак у нас существует реальная система, которую мы хотим исследовать. Для этого мы строим математическую модель, которая обладает определенной структурой. Сам процесс моделирование является сопоставлением реальной системы её абстрактной, в данном случае, математической модели.  Форрестер выдвинул следующие требования к модели:
  • имеет простую математическую форму
  • позволяет отражать непрерывные взаимодействия в системе так, что дискретная природа отдельных событий не искажает результат моделирования
  • может отражать сложные причинно-следственные связи, учитываемые при моделировании
  • имеет терминологию схожую с терминологией экономических и социальных наук
  • охватывает большое число переменных.
И разработал структуру, которая удовлетворяет этим требованиям. Она получилось состоящей из уровней, потоков, функций решений и каналов информации. 
Уровень это нечто характеризующее накопления внутри системы. 
Поток это связующее звено между уровнями, показывающее движение содержимого от уровня к уровню.
Функция решений характеризует темп потока, мгновенное состояние потока. Поток определяет направление перемещения содержимого, в то время как темп потока определяет скорость с которой это происходит и задается функцией решения. 
Канал информации это влияние уровней на функции решения. Функции решения зависят только от уровней на данный момент и не зависят от темпов. Это сделано из-за того, что мы практически не можем узнать мгновенный темп потока, так как природа моделируемых событий дискретна по своей сути.
Для описания взаимодействий внутри модели с выше описанными элементами используются системы уравнений. Все уравнения в модели можно классифицировать и ниже перечислены классы, к которым может относиться то или другое уравнение.
Уравнения уровней наиболее простые уравнения задающие то как уровни меняются в зависимости от входящих и выходящих потоков. Предполагается, что уравнения уровня не зависит от значений других уровней и опирается только на входящие и исходящие потоки в предыдущий момент времени. Эта независимость позволяет упростить вычисление уровня так, как становится неважным последовательность, в которой вычисление уровней происходит. Вот типичный пример уравнения уровня:

ЗТ.2 = ЗТ.1 + (ДВ) * (ПТ.1-2 - РТ.1-2),

где переменные имеют следующие значения:

ЗТ.1 - запас товаров в момент времени t1;
ЗТ.2 - запас товаров в момент времени t2;
ДВ - интервал времени между t1 и t2;
ПТ.1-2 - темп(скорость) прихода товаров в промежуток времени между t1 и t2;
РТ.1-2 - темп расхода товаров в промежуток времени между t1 и t2.

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

РТ.1-2 = ЗТ.1 / ЗД,

где 

PT.1-2 - темп расхода товаров между моментами времени t1 и t2;
ЗТ.1 - уровень запаса товаров на момент времени t1;
ЗД - константа, среднее продолжительность времени запаздывания.
Но также могут иметь более сложный вид и являться источником нелинейности в системе.
Вспомогательные уравнения используются, когда уравнения темпов становятся очень сложным и их понимание затруднительно. Во вспомогательные уравнения выносятся действия, которые могут быть подставлены в уравнения темпов и служат для их упрощения.
Дополнительные уравнения используются для обработки результатов полученных в модели, могут являться основой для отчетов и графиков. Эти уравнения не влияют на динамические свойства модели.
Уравнения начальных условий задают начальные условия функционирования модели. Они вычисляются один раз до начала расчета модели.

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


Знакомство с системной динамикой

До недавнего времени я работал программистом в компании XJ Technologies и разрабатывал продукт для имитационного моделирования AnyLogic. Имитационное моделирование было для меня до устройства на работу незнакомым понятием. Понятие очень широкое и включающие в себя большое количество подходов, объединенных тем что для изучения некоторой системы активно применяется аппарат численного анализа и широко используется компьютер. В процессе работы я в основном занимался программированием на Java, с использованием платформы Eclipse, так как AnyLogic сделан на основе этой платформы. За год работы я только слышал о том, что собственно можно сделать на продукте, который я поддерживал, исправлял обычные для программного обеспечения "баги".  Теперь уволившись, я получил время для исследования имитационного моделирования и взялся изучать системную динамику, как наиболее близкий мне подход. 
Я выбирал между известными мне системно-динамическим подходом, дискретно событийным и агентным. Системно-динамический меня привлек своей терминологией, которая показалась мне близка по моему высшему образованию. Я закончил математико-механический факультет Санкт Петербургского Государственного Факультета, проучившись 5 лет на кафедре теоретической кибернетике(По-моему скромному мнению лучшей кафедре на всем направлении прикладной математики, хотя многие со мной не согласятся). То что я узнал о системной динамике, работая программистом, было и пока остается очень поверхностным так, что я воспользовался гуглом и сразу же попал в википедию, откуда скачал книгу основоположника системно-динамического подхода Джея Форрестера "Индустриальная динамика"(Jay Forrester "Industrial dynamics"). Книга была переведена на русский язык аж в 1971 году, что поразительно, учитывая то, что Форрестер писал о капиталистических моделях экономики. И в общем стало понятно почему системная динамика сразу привлекла меня. Оказывается Форрестер начинал как инженер и конструировал сервомеханизмы, использую теорию управление, то есть ту теорию, которую я в основном изучал на кафедре теоретической кибернетики. В 60-х годах прошлого века Форрестер стал активно применять полученные знания из технической сферы в сфере экономики и социологии. И по-видимому добился выдающихся результатов, так как по прошествии 50 лет системная динамика является бурно развивающейся областью с большим количеством публикаций и статей, в основном на английском языке.
Книга "Индустриальная динамика" является первой из книг Форрестера и рассказывает о том, как можно применять системно-динамический подход к исследованию поведения предприятия. Как я понял, прочитав четверть книги, автор сознательно избегает использования сложных математических формул и методов, делая упор на словесное описание элементов системы. Тем самым облегчается понимание сути моделирования для людей далеких от математики и не привычных к её строгим формализмам. Местами автор пускается в запутанные философские рассуждения о принятия решений и не понятно, вызвано это манерой автора или это издержки перевода. 
Пока я не разобрался с тем, как же собственно моделировать предприятие, но подход видится многообещающим. Продолжаю изучение доступного материала.