- •Введение
- •1. Имитационное моделирование
- •1.1. Уровни абстракции в имитационном моделировании
- •1.2. Основные подходы в имитационном моделировании
- •2. Модель и ее назначение
- •2.1. Виды моделей
- •2.2. Этапы вычислительного эксперимента
- •2.3. Построение математической модели
- •2.4. Построение компьютерной модели
- •2.5. Оценка адекватности модели
- •2.6. Исследование модели
- •3. Динамическая система. Основные подходы к моделированию
- •3.1. Понятие динамической системы
- •3.2. Компонентное моделирование
- •3.3. Объектно-ориентированное моделирование
- •4. Гибридная система
- •4.1. Определение гибридной системы
- •4.2. Гибридное время
- •4.3. Гибридный автомат
- •4.4. События
- •5. Поведение гибридного автомата
- •5.1. Бесконечные траектории примитивного гибридного автомата
- •5.2. Вырожденное поведение
- •5.3. Гибридный автомат с несколькими длительными состояниями
- •6. Композиция гибридных автоматов
- •6.1. Изолированные системы
- •6.2. Открытый примитивный гибридный автомат
- •6.3. Блок-схемы открытых автоматов
- •6.4. Открытый гибридный автомат с контактами
- •7. Компонентные модели
- •7.1. Иерархические системы
- •7.2. Блоки и связи
- •7.3. Ориентированные блоки и связи
- •7.4. Совокупная система
- •7.5. Неориентированные блоки и связи
- •Оглавление
2.4. Построение компьютерной модели
Итак, математическая модель построена, и теперь нужно написать реализующую ее программу.
На исторически ранних этапах компьютерного моделирования эти программы создавались либо на языках программирования «высокого уровня» (Фортране, Алголе), либо даже на языке Ассемблера. Код на Ассемблере давал иногда очень серьезный выигрыш в быстродействии. ЭВМ того периода выполняли всего лишь десятки и сотни тысяч операций в секунду, а не сотни миллионов, как современные настольные компьютеры, поэтому стоило бороться за оптимальное выполнение каждой «машинной» команды. Традиционным языком программирования для построения компьютерных моделей являлся все же Фортран. Практически все стандартные библиотеки численных методов и функций, составлявшие основу всех моделей, и по сей день пишутся на Фортране. Применявшаяся в те годы технология программирования требовала на создание моделей очень много времени.
Начиная с 1960-х гг. было разработано множество систем или пакетов моделирования, автоматизирующих прежде всего этот этап. В системе автоматизации моделирования (далее просто «система моделирования») математическая модель записывается на некотором формальном входном языке моделирования и затем автоматически, с помощью соответствующего транслятора, переводится на язык, понятный компьютеру. Часто в качестве промежуточного используется какой-нибудь универсальный язык программирования (Fortran, Algol, C, Pascal, Java и др.). В этом случае трансляция производится в два этапа: на первом этапе описание на языке моделирования транслируется в промежуточный текст на языке программирования, а на втором этапе этот текст компилируется каким-либо компилятором языка программирования, написанным для конкретной операционной системы и компьютера. В моделирующую программу помимо сгенерированного кода, необходимого для реализации конкретной модели, автоматически включают уже готовые модули поддержки периода исполнения, предоставляемые системой моделирования (механизм продвижения модельного времени, численные библиотеки, графические функции). Система моделирования должна также автоматически переводить входные данные модели, записанные в форме, удобной для анализа человеком, в машинную форму представления и аналогичную операцию производить над выходными данными в машинной форме. Иными словами, интерпретировать входные и выходные данные, чтобы облегчить работу проектировщику.
С точки зрения пользователя современных пакетов, построение компьютерной модели сводится в основном к переводу описания модели с языка математики на входной язык используемой системы и к выбору численного метода из имеющихся для получения требуемого решения.
Перевод исходного описания на язык моделирования осуществляется достаточно просто. Современные системы имеют дружественный графический интерфейс и входной язык, очень близкий к «традиционному математическому». Например, в пакете Model Vision Studium для того, чтобы создать описание модели маятника на языке MVL по исходному математическому, нужно дополнительно объявить используемые переменные, задать необходимые начальные значения и практически в неизмененном виде переписать имеющиеся уравнения движения. Пользователям пакета Simulink придется выполнить больше дополнительной работы и «собрать» эти уравнения из стандартных звеньев, таких как «интегратор», «сумматор» и «усилитель». В результате, какое бы описание мы не использовали, пакетом автоматически создается моделирующая программа, соответствующая введенной математической модели, и, надо отметить, что в большинстве случаев это делается без ошибок.
В то же время выбор численного метода может стать источником многих проблем, начиная от неэффективности вычислений и кончая получением неверных результатов. Проблема создания и автоматического выбора численного метода, гарантирующего либо построение решения с заданной точностью, либо обнаружение причин, не позволяющих это сделать, остается нерешенной.