Компьютерное моделирование: долгий путь к сияющим вершинам?
Архив1. Многие вещи нам не понятны не потому, что наши понятия слабы, но потому, что сии вещи не входят в круг наших понятий.
Козьма Прутков
Среди программных средств, могучей волной обрушившихся на пользователей персональных компьютеров и с контрабандных китайских компакт-дисков, и с лицензионных, и с удаленных серверов Интернета, немалую долю составляют инструментальные средства, предназначенные для бизнес-планирования и бизнес-моделирования. Они могут быть представлены как самостоятельные продукты либо как "примочки" к софту для презентаций или к другим программным средствам. Спектр подобных средств столь широк, что попытка выбрать для решения конкретной задачи "что-то получше" напоминает поиски иголки в стоге сена. Конечно, опытный человек способен сделать правильный выбор и скорее всего выберет достаточно простой и уже известный либо ему, либо его друзьям инструмент. Менее опытный - скорее всего ухватится за супермодный софт, в названии которого фигурируют непонятные, но такие многообещающие слова, как, например, "генетический", "интеллектуальный", "нейросетевой" и т. д. Попробуем непредвзято взглянуть на существующие инструментальные средства моделирования и, насколько это возможно, выработать некоторые критерии, позволяющие облегчить выбор нужного программного продукта. Однако прежде чем приступить к этому, мы должны сверить часы, то есть договориться об основных терминах, которые мы будем употреблять.
Исторически случилось так, что первые работы по компьютерному моделированию, или, как говорили раньше, моделированию на ЭВМ, были связаны с физикой, где с помощью моделирования решался целый ряд задач гидравлики, фильтрации, теплопереноса и теплообмена, механики твердого тела и т. д. [1, 2, 4]. Моделирование в основном представляло собой решение сложных нелинейных задач математической физики с помощью итерационных схем, за исключением разве тех задач, где использовался метод Монте-Карло, и по существу было оно, конечно, моделированием математическим. Успехи математического моделирования в физике способствовали распространению его на задачи химии, электроэнергетики, биологии и некоторые другие дисциплины, причем схемы моделирования не слишком отличались друг от друга. Сложность решаемых на основе моделирования задач всегда ограничивалась лишь мощностью имеющихся ЭВМ.
Надо заметить, что подобный вид моделирования весьма широко распространен и в настоящее время. Боле того, за время развития методов моделирования на ЭВМ при решении задач фундаментальных дисциплин и смежных предметных областей накоплены целые библиотеки подпрограмм и функций, облегчающих применение и расширяющих возможности моделирования. И все же в настоящее время понятие "компьютерное моделирование" обычно связывают не с фундаментальными дисциплинами, а в первую очередь с системным анализом - направлением кибернетики, впервые заявившим о себе в начале 50-х годов при исследовании сложных систем в биологии, макроэкономике, при создании автоматизированных экономико-организационных систем управления [3].
Системный анализ стремительно сформировался сначала в весьма модное направление науки об управлении сложными системами, а затем по мере развития - в методологию, а точнее, в нечто безбрежное, таинственное, доступное только самым могучим умам. Они с гордостью называли себя системными аналитиками и, как и положено после канонизации, возвышались над тысячами инженеров и программистов, работая в таинственных Институтах Системного Анализа Сложных, Очень Сложных и Совсем Сложных Систем, публикуя работы с названиями типа "Теория декомпозиции сингулярных, квазилинейных, иерархических макросистем рефлексивного типа". Однако по истечении некоторого времени обнаружилась странная особенность подобных работ: они существовали сами по себе, а многочисленные практические работы по системному анализу и управлению реальными объектами выполнялись сами по себе, без какой-либо связи с этими теоретическими изысканиями. Более того, обнаружилась странная особенность Системного Анализа: в чистом виде весь предмет может быть сведен к нескольким, интуитивно довольно прозрачным "принципам системного анализа", выглядящим как библейские заповеди, - принцип иерархичности, принцип единства целей, принцип эмерджентности и др.
Общая теория систем, концепция которой впервые была сформулирована в 50-е годы Л. Берталанфи и которая, казалось бы, должна составлять теоретический фундамент системного анализа, сегодня так же далека от завершения, как и в 60-е годы, если не считать некоторых результатов, имеющих исключительно абстрактный, математический характер. Основные же методы и процедуры, используемые обычно при системном анализе, заимствованы из других дисциплин, в большей степени у исследования операций, которая появилась, вообще говоря, раньше, чем системный анализ. Позаимствованы и другие методы, которые обычно связывают с системным анализом, - теория игр, теория принятия решений, математическое программирование, теория динамических систем и др. Более того, при тщательном рассмотрении истории возникновения и перспектив развития системного анализа никак нельзя обнаружить даже тенденций зарождения в его недрах единого подхода к анализу сложных систем, не говоря уже об оформлении его в строгую и законченную теорию, напоминающую по стройности хотя бы теорию систем массового обслуживания.
В чем же тут дело? А в том, что, как было, по-видимому, впервые замечено профессором Б. Г. Юдиным и впоследствии уточнено академиком Н. Н. Моисеевым, крупнейшим советским специалистом в области системного анализа, центральной процедурой в системном анализе является построение обобщенной модели, отображающей все факторы и взаимосвязи реальной ситуации, которые могут проявиться в процессе решения [3, 4, 5]. Иными словами, построение математических моделей является основой всего системного анализа, центральным этапом исследования или проектирования любой системы [5].
Конечно же, по сравнению с гордым и звучным термином "системный анализ", "моделирование" звучит куда более скромно, тем более что каждому понятно - любое моделирование сопряжено с совсем уж приземленными вещами: сбором, сортировкой и обработкой данных. К тому же эти экспериментальные данные и факты подчас обладают целым рядом неприятных особенностей: то их слишком много, и не ясно, как их учесть или сократить; то их слишком мало, и не ясно, где их взять. Наконец, они просто противоречат друг другу или того хуже - данным вашего коллеги или оппонента. А если добавить сюда проблемы воспроизводимости, проблемы пропущенных данных, проблемы размерностей, трудности с организацией поиска, накопления и систематизации, то станет очевидным: в таких условиях не до высоких сияющих вершин системного анализа и общих теорий сложных систем. И тем не менее именно моделирование является сутью системного анализа. Разберемся с этим более подробно.
2. Принимаясь за дело, соберись с духом.
Козьма Прутков
Моделирование представляет собой один из основных методов познания, является формой отражения действительности и заключается в выяснении или воспроизведении тех или иных свойств реальных объектов, предметов и явлений с помощью других объектов, процессов, явлений, либо с помощью абстрактного описания в виде изображения, плана, карты, совокупности уравнений, алгоритмов и программ [4].
Возможности моделирования, то есть перенос результатов, полученных в ходе построения и исследования модели, на оригинал основаны на том, что модель в определенном смысле отображает (воспроизводит, моделирует, описывает, имитирует) некоторые интересующие исследователя черты объекта. Моделирование как форма отражения действительности широко распространено, и достаточно полная классификация возможных видов моделирования крайне затруднительна, хотя бы в силу многозначности понятия "модель", широко используемого не только в науке и технике, но и в искусстве, и в повседневной жизни. Тем не менее применительно к естественным и техническим наукам принято различать следующие виды моделирования:
- концептуальное моделирование, при котором совокупность уже известных фактов или представлений относительно исследуемого объекта или системы истолковывается с помощью некоторых специальных знаков, символов, операций над ними или с помощью естественного или искусственного языков;
- физическое моделирование, при котором модель и моделируемый объект представляют собой реальные объекты или процессы единой или различной физической природы, причем между процессами в объекте-оригинале и в модели выполняются некоторые соотношения подобия, вытекающие из схожести физических явлений;
- структурно-функциональное моделирование, при котором моделями являются схемы (блок-схемы), графики, чертежи, диаграммы, таблицы, рисунки, дополненные специальными правилами их объединения и преобразования;
- математическое (логико-математическое) моделирование, при котором моделирование, включая построение модели, осуществляется средствами математики и логики;
- имитационное (программное) моделирование, при котором логико-математическая модель исследуемого объекта представляет собой алгоритм функционирования объекта, реализованный в виде программного комплекса для компьютера.
Разумеется, перечисленные выше виды моделирования не являются взаимоисключающими и могут применяться при исследовании сложных объектов либо одновременно, либо в некоторой комбинации. Кроме того, в некотором смысле концептуальное и, скажем, структурно-функциональное моделирование неразличимы между собой, так как те же блок-схемы, конечно же, являются специальными знаками с установленными операциями над ними.
Традиционно под моделированием на ЭВМ понималось лишь имитационное моделирование. Можно, однако, увидеть, что и при других видах моделирования компьютер может быть весьма полезен, за исключением разве физического моделирования, где компьютер вообще-то тоже может использоваться, но, скорее, для целей управления процессом моделирования. Например при математическом моделировании выполнение одного из основных этапов - построение математических моделей по экспериментальным данным - в настоящее время просто немыслимо без компьютера. В последние годы, благодаря развитию графического интерфейса и графических пакетов, широкое развитие получило компьютерное, структурно-функциональное моделирование, о котором подробно поговорим ниже. Положено начало использованию компьютера даже при концептуальном моделировании, где он используется, например, при построении систем искусственного интеллекта.
Таким образом, мы видим, что понятие "компьютерное моделирование" значительно шире традиционного понятия "моделирование на ЭВМ" и нуждается в уточнении, учитывающем сегодняшние реалии.
Начнем с термина "компьютерная модель". В настоящее время под компьютерной моделью чаще всего понимают:
- условный образ объекта или некоторой системы объектов (или процессов), описанный с помощью взаимосвязанных компьютерных таблиц, блок-схем, диаграмм, графиков, рисунков, анимационных фрагментов, гипертекстов и т. д. и отображающий структуру и взаимосвязи между элементами объекта. Компьютерные модели такого вида мы будем называть структурно-функциональными;
- отдельную программу, совокупность программ, программный комплекс, позволяющий с помощью последовательности вычислений и графического отображения их результатов, воспроизводить (имитировать) процессы функционирования объекта, системы объектов при условии воздействия на объект различных, как правило случайных, факторов. Такие модели мы будем далее называть имитационными моделями.
Компьютерное моделирование - метод решения задачи анализа или синтеза сложной системы на основе использования ее компьютерной модели. Суть компьютерного моделирования заключена в получении количественных и качественных результатов по имеющейся модели. Качественные выводы, получаемые по результатам анализа, позволяют обнаружить неизвестные ранее свойства сложной системы: ее структуру, динамику развития, устойчивость, целостность и др. Количественные выводы в основном носят характер прогноза некоторых будущих или объяснения прошлых значений переменных, характеризирующих систему.
Предметом компьютерного моделирования могут быть: экономическая деятельность фирмы или банка, промышленное предприятие, информационно-вычислительная сеть, технологический процесс, любой реальный объект или процесс, например процесс инфляции, и вообще - любая Сложная Система. Цели компьютерного моделирования могут быть различными, однако наиболее часто моделирование является, как уже отмечалось ранее, центральной процедурой системного анализа, причем под системным анализом мы далее понимаем совокупность методологических средств, используемых для подготовки и принятия решений экономического, организационного, социального или технического характера.
Компьютерная модель сложной системы должна по возможности отображать все основные факторы и взаимосвязи, характеризующие реальные ситуации, критерии и ограничения. Модель должна быть достаточно универсальной, чтобы по возможности описывать близкие по назначению объекты, и в то же время достаточно простой, чтобы позволить выполнить необходимые исследования с разумными затратами.
Все это говорит о том, что моделирование систем, рассматриваемое в целом, представляет собой скорее искусство, чем сформировавшуюся науку с самостоятельным набором средств отображения явлений и процессов реального мира. Поэтому исключительно сложной, а по нашему мнению, и невозможной, являются попытки классификации задач компьютерного моделирования или создания достаточно универсальных инструментальных средств компьютерного моделирования произвольных объектов. Однако если преднамеренно сузить класс рассматриваемых объектов, ограничившись, например, задачами компьютерного моделирования при системном анализе объектов экономико-организационного управления, то возможно отобрать ряд достаточно универсальных подходов и программных средств. Начнем со структурно- функционального моделирования.
3. Где начало того конца, которым оканчивается начало?
Козьма Прутков
Истоки структурно-функционального моделирования, по-видимому, следует искать в теоретических основах электрических цепей, электронике и радиотехнике, где впервые широко стали использоваться различные блок-схемы. Дальнейшее развитие структурно-функциональное моделирование получило в теории автоматического управления (ТАУ), где был развит аппарат, включающий в себя не только правила составления и преобразования, но и достаточно общую методологию анализа и синтеза структурных схем, основанную на том, что каждой математической операции над сигналами поставлен в соответствие определенный элементарный структурный блок. Хотя динамические структурно-функциональные схемы теории автоматического управления обладают широчайшими возможностями для анализа непрерывных, линейных динамических систем, описываемых дифференциальными уравнениями, они плохо подходят для описания процессов в экономико-организационных системах, где связи между отдельными блоками имеют гораздо более широкое толкование и редко могут быть сведены к некоторой функции времени (сигналу). Не очень удобны они и для описания алгоритмов и программ, для которых понятие "элементарный блок" существенно отличается от принятого в ТАУ. В частности, для составления блок-схем алгоритмов и программ, потребность в которых появилась в начале 60-х, понадобились символы, соответствующие основным операциям машинной обработки данных, их накоплению, сортировке и передаче. В результате довольно длительной разработки и последующей эволюции были созданы и нашли широкое применение государственные стандарты на составление и использование блок-схем алгоритмов и программ, вошедшие впоследствии в перечень обязательных документов Единой системы программной документации (ЕСПД). Использование стандартов на блок-схемы алгоритмов и программ весьма жестко контролировалось как Госфондом алгоритмов и программ (ГАП), так и другими "компетентными органами", причем описание любой программы и любого алгоритма должно было содержать блок-схему, даже и при отсутствии особой нужды.
Дальнейшее развитие блок-схем, связано с развитием автоматизированных систем управления производством (АСУП), появившихся в начале 70-х, в которых, в отличие от алгоритмов и программ, блок-схемы стали выполнять несколько иные функции. Основным назначением графических символов при проектировании АСУП явилось именно моделирование объекта автоматизации и процессов функционирования самой АСУП. Символика проектов АСУП включала в себя прежде всего функциональные блоки, предназначенные для отображения основных функций сбора, накопления, передачи и обработки данных. Наряду с ними в состав условных графических обозначений были включены и символы, позволяющие описывать разнообразные структуры объектов управления. На использование символов при проектировании АСУП разработаны специальные ГОСТы, регламентирующие состав, размеры и вид символов, а так же правила их использования. В целом, совокупность символов для АСУП и правил их использования образуют простейший язык структурно-функционального моделирования, применяющийся при системном анализе и проектировании автоматизированных экономико-организационных систем. Можно только сожалеть о том, что развитие подобных языков моделирования в СССР приостановилось в начале 80-х, однако в последние годы ситуация в этой области стала меняться к лучшему благодаря появлению отечественного инструментально программного комплекса "CASE-Аналитик", о котором речь пойдет ниже.
Современные методы структурно-функционального анализа и моделирования сложных систем были заложены благодаря трудам профессора Массачусетского технологического института Дугласа Росса, который впервые использовал понятие "структурный анализ" сорок лет назад, пытаясь создать алгоритмический язык АРТ, ориентированный на модульное программирование. Дальнейшее развитие идеи описания сложных объектов как иерархических, многоуровневых модульных систем с помощью относительно небольшого набора типовых элементов привело к появлению SADT (Structured Analyses and Design Technique), что в дословном переводе означает "технология структурного анализа и проектирования", а по существу является методологией структурно-функционального моделирования и анализа сложных систем [10]. Со времени своего появления SADT постоянно совершенствовалась и широко использовалась для эффективного решения целого ряда проблем - таких как совершенствование управления финансами и материально-техническим снабжением крупных фирм, разработка программного обеспечения АСУ телефонными сетями, долгосрочное и стратегическое планирование деятельности фирм, проектирование вычислительных систем и сетей и др.
Центральной идеей SADT является, по определению авторов, SA-блок - универсальная единица универсальной пунктуации для неограниченного строго структурного анализа. Несмотря на такое мудреное название под таинственным SA-блоком скрывается обычный функциональный блок, характеризующийся наличием входа, выхода, механизма и управления. Другим фундаментальным понятием SADT является принцип иерархической декомпозиции сверху вниз, позволяющий анализировать сколь угодно сложные системы. При ближайшем рассмотрении его тоже открытием не назовешь, так как любой метод структурного анализа использует декомпозицию, которая собственно и составляет один из основных принципов познания. Оригинальным же в SADT является эффективный метод кодирования связей, основанный на использовании специальных ICOM-кодов и позволивший не только упростить процедуру моделирования, но и автоматизировать процедуры структурно-функционального анализа.
Одним из первых программных комплексов структурно-функционального анализа на основе SADT был пакет AUTOIDEF0, разработанный в рамках программы ВВС США по созданию интегрированной автоматизированной системы управления производством (Integreted Computer Aided Manufacturing). В основе пакета лежит подмножество SADT, названное IDEF0. AUTOIDEF0 предназначался для облегчения процесса создания и рецензирования SADT-диаграмм и моделей для географически удаленных аэрокосмических подрядчиков. Поскольку модели часто рецензировались и исправлялись, система функционировала на диалоговых устройствах и сетях связи и включала в себя тогда еще редкие дисплеи с векторной графикой и графопостроители. Система AUTOIDEF0 предоставляла удаленным пользователям командно-ориентированную графическую среду, управляемую с помощью иерархического меню, которое облегчало работу с библиотекой диаграмм и графическими средствами. Одновременно могло создаваться, храниться, обрабатываться, публиковаться и архивироваться множество различных моделей, построенных по единой методологии средствами SADT.
4. Если у тебя спрошено будет: что полезнее, солнце или месяц? - ответствуй: месяц. Ибо солнце светит днем, когда и без того светло; а месяц - ночью.
Козьма Прутков
Другим программным продуктом, реализующим методологию структурно-функционального анализа SADT, является Design/IDEF производства компании Meta Software Corp. [11]. Он ориентирован на проектирование и моделирование сложных систем широкого назначения, связанных с автоматизацией и компьютеризацией производства, а также с задачами экономико-организационного управления и бизнес-планирования. Design/IDEF имеет быструю и высококачественную графику, включающую возможности создания SADT-моделей, содержит встроенный словарь данных, позволяющий хранить неограниченную информацию об объектах и моделях, допускает коллективную работу над моделью, позволяет генерировать отчеты по результатам системного анализа. Рассмотрим, что нового по сравнению с уже применяющимися на практике методами моделирования может дать подход, основанный на SADT-методологии.
Первой отличительной чертой SADT-методологии является принцип построения модели сверху вниз, который мы рассмотрим на примере угольной промышленности России. Такой принцип построения модели означает, что можно, начиная с довольно простых макроэкономических моделей развития топливно-энергетического комплекса в целом и моделей экономического развития угольной промышленности, дойти, если нужно, до отдельных технологических процессов на шахтах и карьерах [8, 9]. При этом, в соответствии с назначением модели, на каждом уровне можно сформулировать обоснованные требования к точности и разрешающей способности модели.
Очевидно, что на первом этапе построения иерархии моделей можно и нужно начать с достаточно грубых (эскизных) моделей. Поскольку методология SADT позволяет уточнять модели с помощью раскрытия SADT-блоков высшего уровня иерархии, новые штрихи при необходимости могут быть добавлены без изменения тех моделей, которые уже построены. Таким образом, SADT реализует иерархическое, многоуровневое моделирование, и в этом ее второе отличие от известных подходов.
Третьей особенностью моделирования на основе SADT является возможность одновременно со структурированием проблемы разрабатывать структуру базы данных, а точнее - баз данных, так как на разных уровнях иерархического моделирования целесообразно иметь отдельные базы данных. В пакете DESIGN/IDEF автоматизирован процесс описания базы данных, соответствующей структуре модели. Таким образом, одновременно с иерархической структурой модели мы получаем и структуру распределенной базы данных. Для моделирования с базами данных используется язык SQL, [11].
И наконец, четвертой, исключительно важной особенностью SADT является возможность приведения IDEFO-модели к цветной сети Петри (пакеты той же фирмы - DESIGN/CPN, DESIGN/WORKFLOW ANALYSIS, [12]).
Обобщая возможности методологии SADT+DESIGN/IDEFO+DESIGN/CPN+DESIGN/WFA, сделаем следующее заключение. Применение методологии SADT и пакетов программ DESIGN/IDEFO/CPN позволяет унифицировать различные блоки модели сложной системы, распараллелить процесс составления модели и объединить отдельные модули в единую иерархическую динамическую модель.
Еще одним широко известным инструментальным средством структурно-функционального моделирования, основанным на стандарте IDEF0, является пакет Bpwin, предлагаемый компанией MacroProject. Он предназначен для моделирования и оптимизации бизнес-процессов и автоматизирует многие рутинные процессы, связанные с построением моделей экономико-организационных систем, с помощью техники "drag&drop". Для лучшего понимания, описания или иллюстрации процесса моделирования в Bpwin предусмотрены различные способы отображения данных, а также мультимедийные вставки. Кроме того, пакет включает поддержку стоимостного анализа деятельности с помощью механизмов оценки изменений производительности системы. Несомненным достоинством Bpwin является возможность связи с известным инструментальным средством разработки баз данных Erwin (разработчик - компания Logic Works); это позволяет в процессе моделирования экономико-организационной системы одновременно разработать модель базы данных.
В последние годы для структурно-функционального анализа в России все чаще применяется отечественное инструментальное средство "CASE-Аналитик", разработанное научно-техническим предприятием "Эйтэкс" ("МакроПроджект"). "Эйтэкс" было создано на базе НИИ приборостроения и вобрало отечественный опыт создания подобных систем, [7]. "CASE-Аналитик" предназначен для автоматизации проектирования и внедрения систем обработки информации и управления самого широкого класса: информационно-вычислительных сетей, организационно-управленческих АСУ всех уровней, банковских и бухгалтерских систем, систем автоматизации эксперимента, делопроизводства и пр. В основе "CASE-Аналитик" лежат удобные средства построения строгой и наглядной структурно-функциональной модели системы, причем модель представляет собой иерархию диаграмм потоков информации и функциональных связей, автоматически отображаемых в базе данных. Пакет позволяет строить и редактировать потоковые диаграммы, осуществлять поиск по диаграммам и данным, экспортировать и импортировать данные из других пакетов и, наконец, оформлять проектные документы в соответствии с ГОСТ 34.xxx и 19.xxx. Последнее обстоятельство немаловажно для комфортной работы отечественных специалистов. Дополнительные преимущества пакета - удобный интерфейс пользователя в форме иерархического меню, наличие развитой системы справок, полная документация на русском языке и сравнительно невысокая цена. На наш взгляд, "CASE-Аналитик" достойно представляет российские программные средства структурно-функционального анализа сложных систем на рынке инструментальных средств.
Близкими по назначению и характеристикам к пакетам структурно-функционального моделирования являются, с одной стороны, средства поддержки презентаций, а с другой - программные системы комплексной автоматизации предпроектного анализа и проектирования информационных систем.
Первые, более простые и широко распространенные, обычно используются на начальной стадии проектирования. Они включают программы построения блок-схем и диаграмм, средства деловой графики и создания демонстрационных приложений (слайд-шоу, мультимедиа-шоу, анимация). Некоторые из них содержат встроенные пакеты с развитыми математическими функциями и позволяют выполнять сложную обработку данных, необходимую при построении функциональных моделей. (Прекрасный обзор программных продуктов поддержки презентаций, подготовленный С. Орловым, опубликован в журнале "ComputerWeek", [16].)
Программные средства, предназначенные для комплексной автоматизации предпроектного анализа и проектирования информационных систем, к которым, вообще говоря, относятся Bpwin и "CASE-Аналитик", помимо средств собственно структурно-функционального моделирования обычно содержат средства моделирования и проектирования баз данных, стоимостного анализа, средства оценки рисков, контроля и управления реализацией проектов. Они, естественно, значительно дороже и сложнее, чем пакеты типа DESIGN/IDEF0, и в настоящем обзоре подробно рассматриваться не будут.
5. Но с другой стороны: солнце лучше тем, что светит и греет; а месяц только светит, и то лишь в лунную ночь!
Козьма Прутков
Другим видом компьютерного моделирования, как было отмечено выше, является имитационное моделирование. Оно появилось ранее структурно-функционального моделирования, хотя, по логике вещей, при моделировании сложных объектов это, вообще говоря, следующая фаза моделирования. Причина в том, что структурно-функциональное моделирование окончательно сформировалось лишь с развитием графических оболочек, которые совершенно необходимы для структурно-функционального моделирования; в то время как имитационное моделирование хотя и может использовать графический интерфейс, в гораздо меньшей степени зависит от него.
Имитационное моделирование основано на применении логико-математической модели сложной системы - со всеми вытекающими особенностями и осложнениям. Во-первых, построение математической модели в отличие от структурно-функционального моделирования требует большого объема детальной информации о системе, включая всевозможные логические и количественные соотношения. Во-вторых, выбор математического аппарата существенно сказывается на самой имитационной модели и на выборе инструментальных средств. Ясно, что выбор излишне сложного математического аппарата (скажем, систем дифференциальных уравнений в частных производных) или привлечение большого числа методов из различных разделов математики значительно усложнит задачу имитационного моделирования. В-третьих, при построении логико-математической модели всегда приходится решать проблему выбора между сложностью модели и ее точностью, удобством использования и ее универсальностью, - поскольку эти критерии, как правило, противоречивы. В частности, излишне сложные модели редко удается довести до этапа, на котором они могут быть реально использованы: обнаруживается, что-либо не все константы уравнений известны, либо не все зависимости могут быть представлены в виде соотношений. Ничего хорошего не сулит и слишком простая модель: она может не учитывать те или иные особенности объекта или среды. Именно поэтому составление логико-математической модели и использование ее для имитационного моделирования было, есть и будет искусством, причем, как и в настоящем искусстве, здесь присутствует и каторжная черновая подготовительная работа, находится место и гениальным озарениям, приводящим к изящным решениям. Чтобы добиться успеха при моделировании сложных систем, в первую очередь требуется доскональное знание объекта моделирования, четкое понимание назначения строящейся имитационной модели и, наконец, владение техникой имитационного моделирования.
Инструментальные средства имитационного моделирования, или, как ранее говорили, языки моделирования, появились довольно давно, почти одновременно с Алголом и Фортраном, и прошли путь от бурного развития в 70-х годах, когда они ежегодно рождались десятками, до современного стабильного состояния, когда доминирует лишь несколько языков. Наиболее широко используемые в настоящее время языки имитационного моделирования и, следовательно, инструментальные средства, их реализующие, подразделяются на три большие группы: языки имитационного моделирования непрерывных динамических систем; языки имитационного моделирования дискретных систем; универсальные языки.
Языки имитационного моделирования непрерывных систем предназначены для моделирования динамических объектов с непрерывным фазовым пространством и непрерывным временем. Как правило, такие объекты описываются с помощью систем дифференциальных (интегро-дифференциальных) уравнений. Системы уравнений могут быть детерминированными или стохастическими, причем в последнем случае в имитационную систему встраиваются средства статистического моделирования и обработки. Классическим языком первого типа является язык DYNAMO, разработанный Дж. Форрестером, [13]. Примером языка имитационного моделирования второго типа является СИМФОР, в котором к возможностям DYNAMO добавлены средства статистического моделирования и обработки. Другим примером может служить пакет "Экспресс-Радиус", разработанный в Институте проблем управления Российской академии наук, [19]. В пакете "Экспресс" возможности моделирования непрерывных и нелинейных динамических систем дополнены удобным графическим интерфейсом, позволяющим автоматизировать составление программ.
Язык DYNAMO в тех или иных формах использовался во многих работах, но, по-видимому, наиболее впечатляющим успехом является его применение для глобального моделирования мировой экономической системы, выполненного группой японских университетов под патронажем ООН (проект "FUGI"), с которым можно ознакомиться на сервере http://suissgate.t.soka.ac.jp/fugimodel. Надо отметить, что сейчас в США множество фирм оказывает консалтинговые услуги по моделированию систем на основе инструментальных средств, реализующих принципы DYNAMO. Более того, существует научное общество, которое развивает и совершенствует методы системного анализа и моделирования систем на основе методологии Дж. Форрестера. Подробности можно узнать на сервере Массачусетского технологического института (MIT).
6. Всякая вещь есть форма проявления беспредельного разнообразия.
Козьма Прутков
Другим долгожителем в мире языков имитационного моделирования является широко известный и распространенный язык для моделирования дискретных систем - GPSS (General Purpose Simulating System). Появившийся впервые еще в 1961 году, он выдержал множество модификаций для самых различных операционных систем и ЭВМ и в то же время сохранил почти неизменными внутреннюю организацию и основные блоки [15]. Основными понятиями языка GPSS являются транзакт, блок, оператор. Транзакт GPSS - это динамический объект, под которым может подразумеваться клиент, требование, вызов или заявка на обслуживание прибором обслуживания. То есть основное назначение GPSS - это моделирование систем массового обслуживания, хотя наличие дополнительных встроенных средств позволяет моделировать и некоторые другие системы (например, распределение ресурсов между потребителями). Транзакты в GPSS могут создаваться (вводиться), уничтожаться (выводиться), задерживаться, размножаться, сливаться, накапливаться и т. д. Именно благодаря наличию транзакта GPSS обладает такой изящностью и простотой. Другим фундаментальным понятием GPSS является понятие "блок". Блок GPSS представляет собой некоторый самостоятельный элемент моделируемой системы. Каждый блок реализует одну или несколько операций над транзактом, группой транзактов или параметрами транзактов, а совокупность блоков составляет моделирующую программу. Таким образом, GPSS имеет блочную структуру и, вообще говоря, легко может быть приспособлен и для структурно-функционального моделирования не очень сложных систем. GPSS достаточно легок в освоении, а наличие в нем функций, переменных, стандартных атрибутов, графики и статистических блоков существенно расширяет его возможности.
И все же несмотря на столь явные достоинства GPSS интерес к нему в конце 80-х стал угасать, что, на наш взгляд, можно объяснить двумя обстоятельствами. Во-первых, в эти годы существенно усложнились объекты анализа: они стали в основном иерархическими, с большим количеством взаимосвязей и лучше описываются сетевыми моделями, - а надо признать, что GPSS малопригоден для моделирования сетей. Во-вторых, именно в эти годы значительных успехов достигли языки объектно-ориентированного программирования, позволяющие строить исключительно гибкие инструментальные средства имитационного моделирования.
Однако в последние годы интерес к GPSS вновь возрос, в чем можно убедиться, ознакомившись с новейшей версией GPSS/H+PROOF, разработанной корпорацией Wolverine Software, [14]. В этом пакете авторы, оставив неизменным ядро GPSS, добавили к нему графические средства манипулирования с блок-схемами, добавили возможность использования анимации и разработали гибкий интерфейс связи с С++, что, по существу, неограниченно расширило его возможности. Результаты подобных усовершенствований не заставили себя ждать. На первой Internet-конференции по компьютерному моделированию, которая проходила в ноябре 1996 года на базе Афинского национального университета, значительное число работ опиралось на использование GPSS/H+PROOF. В настоящее время в США, где GPSS наиболее популярен, организовано несколько интерактивных серверов GPSS, куда пользователь может обращаться как для решения своих конкретных задач, так и, что гораздо более важно, для использования библиотек готовых имитационных модулей.
К числу широко известных языков имитационного моделирования относится также язык СЛАМ, разработанный профессором Университета Пердью Аленом Прицкером в начале 70-х и с тех пор постоянно совершенствуемый созданной в 1973 году компанией Pritsker Corporation [20]. О популярности СЛАМ и вообще о широте использования методов имитационного моделирования можно судить по масштабам деятельности фирмы Прицкера: через сервер компании, расположенный в Индианаполисе, программное обеспечение инсталлировали более чем 6 тыс. пользователей в 40 странах мира; в настоящее время фирма оказывает консультационные работы для 2 тыс. клиентов. Организована сеть консалтинговых фирм, связанных между собой через Internet, в 19 странах Азии, Европы, Африки и Южной Америки. Более тысячи преподавателей университетов используют для обучения студентов системы имитационного моделирования, основанные на СЛАМ.
В основе языка СЛАМ лежит простая идея - объединить достоинства GPSS и DYNAMO таким образом, чтобы, допуская раздельное применение этих языков, можно было при необходимости использовать их совместно. Реализация этого принципа на ЭВМ с цифровыми дисплеями хотя и давала некоторые преимущества при моделировании, однако не вносила качественных изменений в процесс моделирования. Переход к графическим интерфейсам раскрыл все преимущества этого принципа.
7. Что имеем - не храним. Потерявши - плачем.
Козьма Прутков
Особое место среди языков имитационного моделирования занимает СИМУЛА-67, разработанный в Норвежском вычислительном центре У. И. Далом, Б. Мюрхаугом и К. Нюгордом, [6]. В нем впервые получила практическое воплощение концепция ядра языка как средства иерархического, структурированного описания класса объектов, - концепция, последующее развитие которой привело к созданию объектно-ориентированного программирования. Термином "объект" в СИМУЛА были обозначены программные компоненты, обладающие собственными локальными данными (атрибутами) и способные выполнять некоторые действия. В роли атрибутов могут выступать прочие программные компоненты, переменные, массивы и ссылки на другие объекты. Действия, выполняемые объектом, задаются с помощью последовательности операторов, называемых сценарием функционирования. Каждый объект обладает системным атрибутом, указывающим на исполняемый оператор его правил действий, который называется локальным управлением. Во время работы СИМУЛА-программы могут сосуществовать несколько объектов, находящихся на разных стадиях исполнения своих сценариев функционирования, а управляющая программа передает управление от одного объекта к другому, активизируя их по заложенному в ней сценарию. Исключительность СИМУЛА заключается в том, что он является весьма удобным средством создания самих языков имитационного моделирования. Средствами СИМУЛА довольно легко реализовать, скажем, GPSS или СЛАМ, не говоря уже о более простых языках моделирования, таких как DYNAMO. Развитые средства организации и ведения библиотек позволяют легко построить любой язык моделирования как совокупность некоторых классов, аналогичных рассмотренным в [17].
Конечно, при том многообразии средств компьютерного моделирования, в особенности структурно-функционального, которые появляются чуть ли не ежедневно, трудно дать их полный обзор, да, наверное, в этом и нет необходимости. Главное, на наш взгляд, обозначить тенденции развития этого сектора программных продуктов. Хочется верить, нам это удалось, так как упомянутые выше средства если и не покрывают весь спектр существующих, то достаточно полно его отображают. Уверенность в этом придает анализ обзора американских компаний, занимающихся разработкой и сопровождением программных средств, оптимизации, системного анализа, нейронными сетями и пр., который опубликован в периодическом журнале по исследованиям операций и моделированию систем [21].
Литература:
1. Бусленко Н. П., Шрейдер Ю. А. Метод статистических испытаний. Москва, 1961 г.
2. Бусленко Н. П. Моделирование сложных систем. Москва, 1961 г.
3. Юдин Б. Г. Системный анализ. - М.: БСЭ, 1976 г.
4. Бирюков Б. В., Гастеев Ю. А., Геллер Е. С. Моделирование. - М.: БСЭ, 1974 г.
5. Моисеев Н. Н. Математические задачи системного анализа. - М.: Наука, 1981 г.
6. Дал У. И., Мюрхауг Б., Нюгорд К. Универсальный язык моделирования. - М.: Мир, 1969 г.
7. Гэйн К., Сарсон Т. Структурный системный анализ средства и методы. В 2-х частях. Пер. с англ. под ред. А. В. Козлинского. - М.: Эйтекс, 1993 г.
8. Малышев Ю. Н. Угольная промышленность России, ее состояние и перспективы. Журнал "Уголь", #1, 1995 г.
9. Бахвалов Л. А. Метамоделирование процессов реструктуризации и функционирования горной промышленности. Горный информационно-аналитический бюллетень. - М.: Московский государственный горный университет. Выпуск 1. 1996 г.
10. Дэвид А. Марка, Клемент Мак-Гоуэн. Методология структурного анализа и проектирования. Пер. с англ. Москва, 1993 г., стр. 240, иллюстрации.
11. Методология динамического моделирования IDEFO/CPN/WFA. Учебный курс по методологиям IDEF. Метатехнология. Москва, 1995 г.
12. Питерсон Дж. Теория сетей Петри и моделирование систем. Пер. с анг. М.: Мир, 1984 г., стр.264.
13. Дж. Форрестер. Мировая динамика. - М.: Наука, 1978 г.
14. Using Proof Animation (Wolverine). Wolverine Software Corporation, 1995, page 374.
15. Thomas J. Schriber. An Introduction to Simulation Using GPSS/H. John Wile & Sons, 1991, ISBN, 0-471-04334-6, page 425.
16. Орлов С. Программные продукты поддержки презентаций. Computer World, #39, 1995 г., стр. 28-31.
17. Андрианов А. Н., Бычков С. П., Хорошилов А. И. Программирование на языке СИМУЛА-67. - М.: Наука, 1985 г.
18. Бахвалов Л. А. Моделирование динамики России на основе модели Форрестера. Приборы и системы управления. В печати. 1997 г.
19. Дорри М. Х., Рощин А. А. Инструментальные средства "Экспресс-Радиус" для автоматизации динамических расчетов систем управления. Приборы и системы управления, #3, 1996 г.
20. А. Прицкер. Моделирование на СЛАМ 2. - М.: Наука, 1984 г.
21. OR/MS today. October 1995. Volum 22, No. 5.