Имя материала: Имитационное моделирование экономических процессов

Автор: Снетков Н.Н.

§5. управление модельным временем в matlab

Задача корректного управления модельным временем, то есть «временем жизни» моделируемой системы, возлагается на разработчика независимо от того, какие инструменты создания модели он использует. Принципиально отличие Simu-link от универсальных средств программирования состоит в том, что логическая структура S-модели не зависит от способа управления модельным временем. Более того, исследователь может выбирать способ изменения модельного времени для каждого сеанса моделирования индивидуально.

Тем не менее и при использовании Simulink модельное время остается «спинным мозгом», согласующим работу всех компонент S-модели. Поэтому при подготовке каждого модельного эксперимента должны быть получены ответы на три вопроса:

Какой способ изменения (приращения) времени целесообразно использовать (с переменным или постоянным шагом).

С какой дискретностью следует изменять модельное время.

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

 

Выбор шага моделирования

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

 

128

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

Ранее мы рассматривали то, что в окне Simulink имеется меню Simulation (рис. 5.4).

Данное меню играет основную роль при проведении исследования на модели. Посредством команд этого меню разработчик получает возможность не только динамически управлять сеансом моделирования, но и изменять многие важней-

 

129

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

Важной командой этого меню является Simulation Parameters. По данной команде открывается диалоговое окно настроек параметров моделирования. Для нас представляют интерес вкладки:

Solver (Расчет) - установка параметров расчета модели;

Workspace I/O (Ввод/вывод данных в рабочую область) -установка параметров обмена данными с рабочей областью MATLAB;

•          Diagnostics (Диагностика) - выбор уровня диагностики. Установка параметров управления модельным временем

с помощью вкладки Solver рис. 5.5.

130

Параметры моделирования разделены на три группы:

Simulation time (интервал моделирования); величина интервала моделирования задается посредством указания начального (Start time) и конечного (Stop time) значений модельного времени;

Solver options (параметры расчета) - выбор метода реализации (расчета) модели;

Output options (Параметры вывода) - соответствующие элементы позволяют указать периодичность записи параметров модели в рабочую область (при моделировании с переменным шагом).

Под выбором метода расчета модели понимается следующее. Имея структуру исследуемой системы в виде блок-диаграммы, разработчик может в ходе моделирования выбирать метод отображения динамики системы. С помощью двух раскрывающихся списков Type (Тип) система может быть отнесена к одному из следующих классов:

С дискретным состоянием и дискретным временем перехода из одного состояния в другое.

С дискретным состоянием и непрерывным временем переходов.

С непрерывным состоянием и дискретным временем переходов.

С непрерывным состоянием и непрерывным временем переходов.

Первый список (слева) позволяет выбрать способ изменения модельного времени; он содержит два пункта:

Variable-step (моделирование с переменным шагом);

•          Fixed-step (моделирование с фиксированным шагом). Как правило, Variable-step используется для моделирования непрерывных систем, а Fixed-step - дискретных.

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

 

131

Остальные пункты списка обеспечивают выбор метода расчета нового состояния для непрерывных систем. Эти методы различны для переменного (Variable-step) и фиксированного (Variable-step) шага времени, но основаны на единой методике - решении обыкновенных дифференциальных уравнений (ODE).

Ниже двух раскрывающихся списков Type находится область, содержимое которой меняется в зависимости от выбранного способа изменения модельного времени. При выборе Fixed-step в данной области появляется текстовое поле Fixed-step size (величина фиксированного шага) позволяющее указывать величину шага моделирования (рис. 5.6). Величина шага моделирования по умолчанию устанавливается системой автоматически (auto). Требуемая величина шага может быть введена вместо значения auto либо в форме числа, либо в виде вычисляемого выражения (то же самое относится и ко всем параметрам, устанавливаемым системой автоматически).

При выборе Fixed-step необходимо также задать режим расчета (Mode). Для параметра Mode доступны три варианта:

MultiTasking (Многозадачный) - необходимо использовать, если в модели присутствуют параллельно работающие подсистемы и результат работы модели зависит от временных параметров этих подсистем. Режим позволяет выявить несоответствие скорости и дискретности сигналов, пересылаемых блоками друг другу.

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

Auto (Автоматический выбор режима) - позволяет Simulink автоматически устанавливать режим MultiTasking для тех моделей, в которых используются блоки с различными скоростями передачи сигналов, и режим SingleTasking для моделей, в которых содержатся блоки, оперирующие одинаковыми скоростями.

 

132

При выборе Variable-step в области появляются поля для установки трех параметров:

Мах step size - максимальный шаг расчета. По умолчанию он устанавливается автоматически (auto) и его значение в этом случае равно (SfopTime -StartTime)/50. Довольно часто это значение оказывается слишком большим, и наблюдаемые графики представляют собой ломаные (а не плавные) линии. В этом случае величину максимального шага расчета необходимо задавать явным образом.

Міп step size - минимальный шаг расчета.

Initial step size - начальное значение шага моделирования.

 

133

При моделировании непрерывных систем с использованием переменного шага необходимо указать точность вычислений: относительную (Relative tolerance) и абсолютную (Absolute tolerance). По умолчанию они равны соответственно 10-3 и auto.

134

Приведем пример моделирования потока заявок на обслуживание. Предположим, необходимо моделировать поток посетителей супермаркета, подходящих к кассе для оплаты покупки. Наблюдения показали (или из других источников поступила информация), что в вечернее время с 17.00 до 18.00 в среднем через каждые 15 мин. приходит очередной посетитель. Вопрос: как будет выглядеть очередность посетителей на протяжении данного промежутка времени? Модель потока посетителей может выглядеть следующим образом (рис. 5.7).

Блок MATLAB function имитирует случайные числа в соответствии с экспоненциальным законом распределения. С этой целью используется функция exprnd с параметром 0.25, что соответствует среднему времени 15 мин. (15/60). Блок Discrete Time Integrator суммирует случайные числа, т.е. формирует время работы кассы нарастающим итогом. Блок Display показывает суммарное время работы кассы (в нашем случае оно будет случайное). Блок Scope1 отражает: по вертикали -общее время работы, которое складывается из случайных временных интервалов; по горизонтали - количество посетителей. С этой осью совпадает шаг моделирования.

В случае моделирования потока покупателей и стоимости их покупки управление модельным временем осуществляется по особым состояниям.

135

Используя средства Simulink доработаем модель так, чтобы управлять величиной шага моделирования при изменении модельного времени по особым состояниям (рис. 5.8).

Нижняя часть модели обеспечивает формирование отрезков времени, длина которых распределена по заданному закону (экспоненциальному), и продвижение модельного времени. Верхняя часть модели имитирует случайную величину стоимости их покупки. Средняя стоимость покупки в модели принята за 0,3 тыс. руб. Из результатов одного прогона модели видно, что за 3 часа 20 минут в кассе супермаркета будет 1 тыс. 700 рублей. Понятно, что и моделируемая ситуация и сама модель очень просты. Но в данном случае для нас важен подход к решению подобных задач.

 

Синхронизация параллельных процессов

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

Для корректного управления модельным временем в таких моделях необходимо:

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

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

Обеспечить приращение модельного времени на интервал времени до ближайшего события в управляющем процессе.

Контролировать условия окончания сеанса моделирования.

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

136

хода его к кассе. Потому процесс оплаты является подчиненным по отношению к процессу подхода покупателей к кассе. Если интервал между покупателями значительно больше длительности расчета в кассе, то продвижение модельного времени будет определяться только событиями управляющего процесса (потоком покупателей). Блок-диаграмма такой системы не будет отличаться от рассмотренной ранее (см. рис. 5.8). Если же интервал между покупателями в кассе соизмерим с временем обслуживания в кассе, то необходимо отразить в модели дополнительное условие: «обслуживание» очередного покупателя не может начаться до тех пор, пока не завершится «обслуживание» предыдущего. При такой постановке задачи оба процесса становятся равноправными с точки зрения влияния на значение модельного времени. Очередной шаг модельного времени в этом случае вычисляется как сумма двух временных интервалов: промежутка до нового покупателя и длительности обслуживания его в кассе. Модель будет иметь вид, показанный на рис. 5.9. Результаты работы модели представлены на рис. 5.10-5.13.

137

138

 

139

При моделировании аналогичного процесса, но с двумя кассами, необходимо учитывать, что они работают одновременно и совершенно независимо друг от друга, т.е. асинхронно. Предположим, что сеанс моделирования должен быть остановлен по истечении 300 единиц модельного времени. Модель будет иметь вид, представленный на рис. 5.14.

В данной модели используется способ продвижения модельного времени, суть которого состоит в том, что в каждом такте выбирается большая из величин Т1 и Т2. Где Т1 и Т2 -время суммарного обслуживания очередного покупателя в 1-й и во 2-й кассе соответственно.

При этом исходим из того, что суммарное время обслуживания каждого покупателя состоит из двух составляющих:

 

140

Ожидание (в течение времени Гож);

Обслуживание в кассе (Гобсл).

Т1 Гож1 + Гобсл1 Т2 = Гож2 + Гобсл2.

 

Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |