
- •А.А. Бочкарев
- •Санкт-Петербург
- •Введение
- •Раздел 1. Общие вопросы имитационного моделирования
- •1. Введение в моделирование. Понятие имитационного моделирования
- •1.1. Понятие модели
- •1.2. Понятие моделирования
- •1.3. Классификация моделей
- •1.4. Цель и задачи моделирования
- •1.5. Особенности имитационного моделирования и его преимущества
- •Контрольные вопросы
- •2. Основы теории и технологии имитационного моделирования систем
- •2.1. Уровни абстракции и основные подходы в имитационном моделировании
- •2.2. Этапы исследования систем с помощью имитационного моделирования
- •2.3. Виды моделирования
- •Контрольные вопросы
- •3. Программное обеспечение имитационного моделирования
- •3.1. Классификация программных средств имитационного моделирования
- •3.2. Возможности программных средств имитационного моделирования
- •Контрольные вопросы
- •4. Основы теории вероятностей и статистики
- •4.1. Понятие случайной величины
- •4.2. Основные законы распределения дискретной случайной величины
- •4.3. Основные законы распределения непрерывной случайной величины
- •Контрольные вопросы
- •5. Проблема создания адекватных и детальных имитационных моделей
- •5.1. Понятия адекватности, верификации и валидации моделей
- •5.2. Выбор оптимального уровня детализации моделей
- •5.3. Верификация моделирующих компьютерных программ
- •5.4. Методы повышения валидации и доверия к модели
- •Контрольные вопросы
5.3. Верификация моделирующих компьютерных программ
В этом разделе рассмотрены восемь методов, которые можно использовать при отладке компьютерной программы для имитационной модели. Одни из этих методов применимы к любым компьютерным программам, другие же предназначены исключительно для имитационного моделирования.
Метод 1
При разработке имитационной модели компьютерную про грамму лучше писать и отлаживать по модулям или подпрограммам. На примере имитационной модели, содержащей 1 О тыс. операторов, не сложно убедиться, что не стоит писать сразу всю программу, перед тем как попытаться выполнить ее отладку. Если запустить такую большую программу непроверенной, она скорее всего не будет выполняться, а определить, где в ней содержатся ошибки, будет чрезвычайно трудно. Поэтому следует сначала написать и отладить основную про грамму, а также некоторые ключевые подпрограммы, возможно, представив остальные необходимые программы как «фиктивные» или «заглушки~. Затем нужно добавлять и последовательно отлаживать дополнительные подпрограммы или уровни детализации, до тех пор пока модель не станет удовлетворительно отображать исследуемую систему. Всегда лучше начинать со «среднего уровня детализации» модели (который затем будет постепенно усложняться до нужного уровня), нежели сразу приступить к разработке сложной модели. Иначе модель может получиться более сложной, чем необходимо, и чрезмерно дорогой при выполнении.
Пример 5.4. При создании модели банка с несколькими кассами и возможностью перехода из одной очереди в другую лучше всего сначала написать и отладить программу, в которой клиенты не переходят из очереди в очередь.
Метод 2
Когда разрабатываются крупные имитационные модели, желательно, чтобы компьютерную программу проверяли несколько человек, так как разработчик может слишком свыкнуться со своей программой и не заметить ошибки. В некоторых организациях этот подход осуществляется на практике. Он называется структурным разбором. Например, всех членов группы, работающей над созданием имитационной модели, то есть специалистов по системному анализу, программистов и других работников, собирают вместе и каждому выдают копии подпрограмм, нуждающихся в отладке. Затем разработчик проводит их проверку, но не переходит от одного оператора к другому, пока все не убедятся, что оператор правильный.
Метод 3
Иногда, чтобы убедиться, что получены удовлетворительные результаты, достаточно выполнить прогон имитационной модели с различными входными параметрами. В некоторых случаях можно точно вычислить простые рабочие показатели и воспользоваться ими для сравнения.
Пример 5.5. Можно утверждать, что для многих систем массового обслуживания с s параллельными устройствами обслуживания средняя занятость устройств при продолжительном периоде работы ρ (коэффициент использования системы массового обслуживания) будет ρ = λ/(sω), (где sω – скорость обслуживания в системе, когда заняты все устройства обслуживания). Таким образом, если средняя занятость, полученная в результате прогона имитационной модели, близка к коэффициенту использования ρ – система работает правильно.
Метод 4
Одним из наиболее мощных методов, применяемых для отладки дискретно-событийных имитационных программ, является трассировка. При трассировке состояние моделируемой системы, то есть содержание списка событий, переменные состояния, некоторые статистические счетчики и другие данные, выводятся на экран после возникновения каждого события и сравниваются с вычислениями, полученными вручную, чтобы убедиться, что система функционирует так, как требуется. При трассировке желательно оценить все возможные ветви программ, а также способность программ обрабатывать «предельные» условия. Иногда при такой полной оценке может понадобиться, чтобы для модели были подготовлены специальные (возможно, детерминированные) входные данные. Большинство пакетов имитационного моделирования дают возможность проводить трассировку.
Пакетная трассировка часто предоставляет большой объем выходных данных, которые должны быть проверены по событиям на ошибки. К сожалению, некоторая ключевая информация при трассировке может быть упущена (то есть аналитик может не запросить ее) или, что еще хуже, определенная ошибка может не произойти при «коротком» прогоне имитационной модели с целью отладки. Любые затруднения потребуют повторного прогона имитационной модели. Поэтому обычно для поиска ошибок лучше использовать интерактивный отладчик.
Интерактивный отладчик позволяет аналитику остановить прогон имитационной модели в выбранный момент времени и изучить или изменить значения некоторых переменных. Последняя возможность может использоваться для того, чтобы вызвать возникновение некоторых типов ошибок. Интерактивными отладчиками снабжены многие современные пакеты имитационного моделирования.
Метод 5
Прогон имитационной модели по возможности должен быть выполнен при упрощающих допущениях, для которых известны или могут быть легко вычислены истинные характеристики модели.
Метод 6
В некоторых типах имитационных моделей бывает полезно просмотреть анимацию выходных данных моделирования.
Пример 5.6. Разработанная имитационная модель сети перекрестков потока автомобилей после отладки некоторое время использовалась для изучения влияния различных режимов регулировки движения с помощью светофоров. Однако анимация смоделированного движения машин показала, что в действительности они сталкиваются на перекрестках. При проверке компьютерной программы обнаружили несколько ранее не найденных ошибок.
Метод 7
Иногда для проверки достоверности программы требуется вычислить выборочное среднее значение и выборочную дисперсию для каждого входного распределения вероятностей и сравнить их с требуемым (например, за прошлое время) средним значением и дисперсией. Метод предполагает, что значения правильно сгенерированы из этих распределений.
Пример 5.7. Определение параметров гамма-распределения и распределения Вейбулла отличается в различных пакетах имитационного моделирования и книгах. Следовательно, в этом случае данный метод будет очень полезен.
Метод 8
Чтобы меньше программировать, можно воспользоваться коммерческим пакетом имитационного моделирования. Однако применять его следует осторожно (особенно, если он недавно появился), поскольку в нем могут быть неявные ошибки. Кроме того, пакеты имитационного моделирования содержат мощные макрооператоры высокого уровня, которые иногда могут быть плохо документированы.