интересно
Предыдущая | Содержание | Следующая

Управление модельным временем

События модели происходят в некотором модельном времени. Модельное время - это виртуальное время, в котором автоматически упорядочиваются все события, причем не обязательно пропорционально реальному времени, в котором развивается моделируемый процесс. Например:

реальное время развития процесса - 3 года;

модель процесса, охватывающая эти 3 года, выполняется на компьютере за 1 с;

все события при выполнении модели выстроены в нужном порядке, и все статистические данные в результате ее выполнения замерены.

Масштаб времени - это число, которое задает длительность моделирования одной единицы модельного времени, пересчитанной в секунды, в секундах астрономического реального времени при выполнении модели. Относительный масштаб времени - это дробь, показывающая, сколько единиц модельного времени помещается в одной единице процессорного времени при выполнении модели в компьютере.

Можно выделить четыре разновидности масштаба времени:

1.Реальный масштаб времени - вводится значение выбранной единицы измерения модельного времени, выраженное в секундах. Например, если в качестве единицы модельного времени выбран 1 ч, а в качестве масштаба задать число 3600, то модель будет выполняться со скоростью реального процесса, а интервалы времени между событиями в модели будут равны интервалам времени между реальными событиями в моделируемом объекте (с точностью до поправок на погрешности при задании исходных данных). Относительный масштаб в этом случае равен 1:1.

2.Максималъно ускоренный масштаб времени - задается число 0. В этом случае время моделирования определяется чисто процессорным временем выполнения модели. Например, если в модели произошли три события, причем длительность модельного времени между первым и вторым событиями составляет 1 мин, а между вторым и третьим интервал модельного времени равен 24 ч, то в компьютере соответствующие интервалы астрономического времени - это длительность выполнения управляющих программ имитатора, т.е. оба интервала приблизительно равны. Они зависят от используемого процессора ЭВМ и могут измеряться малыми долями секунды. Это обстоятельство позволяет достигнуть максимального быстродействия модели и автоматически исключать из процесса моделирования непроизводительные отрезки модельного времени (например, в ночное время фирма не работает). Относительный масштаб в этом случае практически трудно определить.

3 .Пропорционально ускоренный масштаб времени - вводится значение выбранной единицы измерения модельного времени, выраженное в секундах. Причем это значение меньше выбранной единицы. Например, если в качестве единицы модельного времени выбран 1 ч, а в качестве масштаба задать число 0,1, то модель будет выполняться быстрее реального процесса. Причем 1 ч реального процесса будет моделироваться в ЭВМ в течение 0,1 с (с учетом погрешностей), т.е. примерно в 36 000 раз быстрее. Относительный масштаб равен 1:36 000.

^.Замедленный масштаб времени - вводится значение выбранной единицы измерения модельного времени, выраженное в секундах. Причем это значение меньше выбранной единицы. Например, если в качестве единицы модельного времени выбран 1 ч, а в качестве масштаба задать число 7 200, то модель будет выполняться медленнее реального процесса. Причем 1 ч реального процесса будет моделироваться в ЭВМ в течение 2 ч, т.е. примерно в 2 раза медленнее. Относительный масштаб равен 2:1. Замедленный масштаб не представляет интереса для проведения исследований с моделями. Однако замедленная работа необходима при исследовании самого имитатора и характеристик его координатора (например, при калибровке общего модельного таймера).

Механизм планирования событий и модельный таймер. Рассмотрим механизм планирования событий. В процессе моделирования образуются управляющие структуры данных. На фазе инициализации для каждого узла в памяти ЭВМ выделяется блок управления узлом kcb.

Эти блоки уничтожаются при завершении моделирования. Если в процессе прогона модели появляется новый транзакт, то на все время его существования образуется блок управления транзактом tcb. При входе транзакта в узел возникает блок управления событием ecb, который уничтожается после выхода транзакта из этого узла. Если транзакт захватывает какое-то количество единиц ресурса определенного типа, то к нему присоединяется блок управления ресурсом rcb с идентификатором этого ресурса; в этом блоке отмечается используемое количество единиц. Если ресурс полностью освобожден, то rcb уничтожается.

В действительности tcb, ecb и rcb не уничтожаются; они переводятся в соответствующие списки отработанных структур, откуда будут извлечены вновь при возникновении новых транзактов и событий. По окончании одного прогона модели все kcb, tcb, ecb и rcb, включая отработанные, будут уничтожены специальной программой - мусорщиком.

Число управляющих структур tcb и ecb в любой конкретный момент случайно. Конфигурация взаимосвязей kcb, tcb и ecb также изменяется от события к событию. Алгоритм планирования интервала времени (t, t+d) между двумя ближайшими событиями можно пояснить на примере фрагмента конкретной конфигурации (рис. 2.12).

Транзакт, вошедший в узел, получает (или уже имеет) информацию о том, в какой следующий узел он должен перейти. При этом образуется ecb, в котором проставляется значение интервала времени задержки транзакта в этом узле (переменная ct типа float, ct > 0). Все ecb планируемых событий сцеплены в список, где они упорядочены по возрастанию величины ct.

События, у которых ct=0, готовы к своему завершению, если, кроме этого, выполнены и другие условия: например, если узел, в который транзакт должен перейти (узел-приемник), не занят.

В узле типа queue (очередь) может произойти только одно событие после того, как все транзакты покинут очередь. При входе нового транзакта в пустую очередь будет образован новый ecb.

Узел типа serv (обслуживающий прибор) может принять в себя столько транзактов, сколько он имеет обслуживающих каналов. Если такому узлу дать возможность приоритетного обслуживания, то более приоритетные транзакты будут входить в каналы, вытесняя менее приоритетные в стек (пару ecb->tcb), который динамически создается для такого узла. После обслуживания приоритетного транзакта пара ecb->tcb возвращается в список планируемых ecb с соблюдением его упорядоченности.

Очередь на рис. 2.12 содержит три транзакта (ecb 2 и tcb 1, tcb 2, tcb 3), а обслуживающий прибор, имеющий два канала (пс=2), содержит два транзакта с приоритетами рг=4 и рг=3, в то время как в стек вытеснены три транзакта с прерыванием их обслуживания (рг=2, рг=2 и рг=0).

Программный имитатор имеет в своем составе специальную функцию - координатор network. Координатор использует следующие правила для определения транзакта, который надо перевести из одного узла в другой, а также для завершения соответствующего события и активизации на время d непрерывного компонента модели объекта.

1. Начиная с первого ecb в списке планируемых событий выбирается первый транзакт, который можно продвинуть в следующий узел; в соответствующем ecb этого транзакта ct=0. Когда такой транзакт найден, определено и очередное событие.

2. Если среди всех ecb, имеющих ct=0, не нашлось транзакта, который можно продвинуть дальше, то в списке планируемых событий выбирается первый ecb, у которого ct > 0. Далее величине d присваивается значение ct, величина ct в данном ecb получает нулевое значение, а у всех последующих в списке ecb значения их ct уменьшаются на величину d. После этого производятся обращения к моделям непрерывных компонентов с передачей им параметра d, а показание общего модельного таймера увеличивается на величину d. Потом делается попытка продвинуть транзакт, связанный с этим ecb, в следующий узел. Пункт 2 выполняется до тех пор, пока не будет выбран транзакт для продвижения либо пока координатор network не сделает вывод о том, что по какой-то причине все узлы заблокированы и моделирование не может быть продолжено.

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

Рассмотренный алгоритм только поясняет специфику автоматического управления событиями; в реальной системе работает другой - скоростной алгоритм управления временем.