6. Для хранения данных моделей целесообразно использовать многокомпонентные СУБД, основанные на идеях ООП и соответствующие методологии моделирования.
При создании моделей сложных систем часто возникает необходимость в применении мощного математического аппарата одновременно с использованием преимуществ имитационного моделирования. Под математическим аппаратом здесь понимается современные методы численного решения дифференциальных уравнений (как обыкновенных, так и в частных производных). Слово «имитационное моделирование» используется в узком смысле, прежде всего как способ формализации знаний экспертов определённой предметной области с последующим решением полученной системы дискретных или простейших дифференциальных уравнений.
Математические модели обычно игнорируют проблему оптимального представления знаний экспертов о моделируемой системе и сосредотачиваются на задаче обработки этих знаний, которые выражены в непонятной для экспертов математической форме. Ниже перечислены некоторые недостатки математического моделирования, следующие отсюда:
1) большое количество неизвестных исходных данных, приводящее к огромным затратам на отладочные вычислительные эксперименты;
2) проблема верификации моделей, связанная с тем, что выходные данные моделей не соответствуют структуре предметной области;
3) недостаточный учёт нелинейных взаимодействий в системе, для которых известны лишь эмпирические оценки;
4) сложность развития моделей, обусловленная, прежде всего, тем, что излишняя степень их формализации не позволяет работать с ними эксперту – не математику.
С другой стороны, в рамках имитационного подхода практически невозможно рассматривать распределённые модели. Кроме того, с ростом сложности даже «точечных» моделей размерность соответствующих им систем уравнений начинает превосходить разумные пределы, а свойственная имитационным моделям простота теряется.
Математический и имитационный подходы имеет смысл сочетать, к примеру, при комплексном моделировании организма человека, – именно эта задача будет использоваться для иллюстрации предмета данной главы в разделе 2.3. Для такой сложной системы, как человек, без современных методов вычислительной математики не обойтись при моделировании физических процессов, например, при расчёте переноса веществ кровеносной (дыхательной) системой и при расчёте скоростей течения крови (воздуха), на котором происходит этот перенос. Однако не менее важным является использование в моделях сложных систем неточных эмпирических зависимостей – регуляторных закономерностей в человеческом организме, – и для этого необходим имитационный подход.
Конечно, было бы хорошо соединить эффективность математических методов с такими свойствами имитационных моделей, как наглядность, близость к предметной области и, главное, простота развития. Однако проблема заключается в отсутствии общепринятой основы для построения комплексных моделей, которые бы сочетали достоинства обоих подходов. Эта основа должна быть одинаково удобной как для имитационного представления структуры моделируемой системы, так и для её формализации и обработки математическими методами.
Процедурно-ориентированные библиотеки вычислительных алгоритмов на низкоуровневых языках типа FORTRAN и C [3] не подходят в качестве такой основы хотя бы потому, что задачу для них нельзя представить наглядно и следует формулировать на языке уравнений. Кроме того, какими бы универсальными ни были процедуры библиотек, часто требуется расширять их возможности (или, наоборот, сужать эти возможности для упрощения использования, для уменьшения затрат машинного времени и т.п.). Однако если библиотека реализована на процедурном (структурном) языке программирования, для незначительного изменения в ней какого-либо численного метода необходимо существенно корректировать его код. При этом неизвестно, будут ли после такой корректировки правильно работать программы, использовавшие данный численный метод в его первоначальном варианте. Ещё большие трудности возникают, когда появляются новые версии библиотеки – после этого нужно либо провести заново все необходимые изменения в коде, либо пользоваться старыми, но зато хорошо адаптированными к решаемым задачам, версиями численных методов.
В противоположность процедурным библиотекам вычислительной математики, наглядность и возможность развития свойственна средствам имитационного моделирования, подобным встроенному в математический пакет MatLab средству Simulink [10] и ведущим начало от высокоуровневых языков моделирования типа Dynamo и Stella. Однако эти средства пригодны лишь для не слишком сложных в математическом смысле задач (по причинам, описанным в разделе 2.1.3), и принятый в них подход не может служить основой для сочетания имитации с современной вычислительной математикой. В частности, он не подходит к решению уравнений в частных производных.
Данная глава (глава 2) имеет целью показать, что в качестве основы для совместной реализации математического и имитационного способов моделирования очень хорошо подходит объектно-ориентированный подход (ООП). А именно, что построенные на объектно-ориентированной основе модели
1) как имитационные модели, наглядны, пригодны к быстрому расширению и учёту большого числа разнородных закономерностей;
2) как математические модели, могут эффективно решать сложные, в том числе пространственно-распределённые задачи.
После того, как будут обоснованы эти утверждения и будет построена объектно-ориентированная структура обобщённой модели, получает смысл проведённая в главе 3 адаптация численных методов для работы с такими структурами и исследование их свойств.
Комплексные модели | |
Математические модели | Имитационные модели |
Моделирование сложных, в том числе распределённых, систем | Наглядность структуры Возможность быстрого развития |
Привязка процедур к данным, которые они обрабатывают | Агрегация Наследование |
Объектно-ориентированный подход | |
Рис. 2.1. ООП как основа для сочетания математического и имитационного моделирования |
Любая объектная модель базируется на понятии объекта как совокупности данных, к которым привязаны некоторые процедуры их обработки (методы). При этом каждое данное из этой совокупности также, в свою очередь, может являться объектом (понятие агрегации) (см. рис. 2.2). Если в процедурной модели процедуры манипулируют пассивно хранящимися данными, то в объектной сами данные – объекты – взаимодействуют между собой. Множество похожих объектов с одним и тем же набором свойств и методов образует класс, который, собственно, и является минимальным блоком программы, аналогом процедуры.
Согласно общепринятой терминологии, объектно-ориентированная модель отличается от просто объектной возможностью наследования классов объектов. При наследовании существующего класса (суперкласса) получается новый класс, называемый подклассом (см. рис. 2.2). Объекты подкласса имеют те же свойства, и могут участвовать в тех же взаимодействиях, что и объекты суперкласса. При этом подкласс может иметь новые свойства и новые методы, а также изменять методы своего суперкласса. Наследование облегчает изменение и расширение объектно-ориентированных систем.
Рис. 2.2. Понятия объектно-ориентированного подхода |