Исходные данные:
Задача: смоделировать эту деятельность.
Создаем два объекта в справочнике "Функциональные объекты": "Бензин" и "Заправочная колонка". В Окне свойств этих объектов на вкладке Параметры имитации задаем параметры в соответствии с Рис.1 и Рис.2.
Создаем диаграмму процесса «Обслуживание клиента» (Рис.3):
Создаем диаграмму процесса "Пополнение хранилища бензина" (Рис.4):
В итоге, должна получиться следующая структура дерева объектов справочника "Деятельность" в Навигаторе (Рис.5):
Моделируем правила возникновения экземпляров стартового события «Приехал клиент». Для этого заполняем параметры на вкладке Правила возникновения (Окно свойств объекта справочника "События" → вкладка Параметры имитации) в соответствии с Рис.6:
Настройки Интервала возникновения экземпляров стартового события будут одинаковыми для всех трех правил возникновения экземпляров стартового события (Рис.7):
Распределение моментов времени возникновения экземпляров стартового события зададим законом распределения.
Закон распределения для первого правила возникновения экземпляров стартового события представлен на Рис.8:
Закон распределения для второго правила возникновения экземпляров стартового события представлен на Рис.9:
Закон распределения для третьего правила возникновения экземпляров стартового события представлен на Рис.10:
В итоге, при нажатии на гиперссылку Смоделировать моменты возникновения событий, должна получиться следующая гистограмма (Рис.11):
Задаем параметры в Окне свойств объекта "Заправка машины" справочника "Деятельность" в соответствии с Рис.12:
Задаем параметры стрелки, следующей после оператора "Исключающее ИЛИ" (Рис.13). Вторая стрелка, следующая после оператора "Исключающее ИЛИ", имеет тип "Поток управления по умолчанию", ее параметры не заполняются.
Задаем параметры в Окне свойств объекта "Заливка бензина в хранилище" справочника "Деятельность" в соответствии с Рис.14:
Запускаем имитацию двух моделей процессов «Обслуживание клиента» и "Пополнение хранилища бензина". В Окне свойств имитации задаем параметры в соответствии с Рис.15:
Анализ данных имитации начнем еще во время ее проведения. В окне Ход имитации будем наблюдать за изменением значений экземпляра системной переменной "Количество" имитирующего материального ресурса "Бензин" на вкладке Переменные (Рис.16):
По окончании имитации проанализируем полученное в результате значение экземпляра переменной "Количество", оно оказалось довольно большим.
Для того чтобы выяснить причины такого большого значения экземпляра переменной "Количество", перейдем на вкладку Процессы и проанализируем количество экземпляров имитирующей операции "Заливка бензина в хранилище" (Рис.17). Очевидно, что количество запущенных экземпляров данной имитирующей операции также слишком велико.
Закроем окно Ход имитации и продолжим анализ результатов имитации в Окне свойств имитации. Для этого нажмем гиперссылку Статистика по переменным и проанализируем динамику изменения значений экземпляра переменной «Количество» имитирующего материального ресурса "Бензин" (Рис.18):
Что может быть причиной столь частого запуска экземпляров имитирующей операции "Заливка бензина в хранилище"?
Мы не до конца продумали условия перехода к следующему шагу экземпляра имитирующего процесса "Обслуживание клиента" в точке ветвления (см. Рис.3). По заданным нами условиями получается, что как только значение экземпляра переменной "Количество" имитирующего материального ресурса "Бензин" становится меньше 1000, то каждый новый экземпляр имитирующего процесса "Обслуживание клиента" в точке ветвления запускает выполнение экземпляра имитирующего процесса "Пополнение хранилища бензином". А так быть не должно, это логическая ошибка. Необходимо задать условия таким образом, чтобы запуск экземпляра имитирующего процесса "Пополнение хранилища бензином" осуществлялся только один раз по достижении экземпляром переменной "Количество" значения 1000. И в течение времени выполнения экземпляра имитирующего процесса "Пополнение хранилища бензином" новые экземпляры этого имитирующего процесса не запускались.
Внесем изменения в модель по результатам имитации.
Объявим новую переменную "Флажок с требованием наполнить хранилище" для объекта "Бензин" справочника "Материальные объекты" (Рис.19):
В Окне свойств объекта "Сообщение о необходимости пополнить хранилище бензина" справочника "Деятельность" на вкладке Действия с переменными укажем действие, которое необходимо совершить с экземпляром переменной «Флажок с требованием наполнить хранилище» во время имитации (Рис.20):
В Окне свойств объекта "Заливка бензина в хранилище" справочника "Деятельность" на вкладке Действия с переменными также зададим действие, которое во время имитации необходимо совершить с экземпляром переменной «Флажок с требованием наполнить хранилище» (Рис.21):
В Окне свойств стрелки, следующей за шлюзом на диаграмме процесса "Обслуживание клиента", добавим еще одно условие на вкладке Условия (Рис.22):
Таким образом, мы модифицировали модель. Теперь как только значение экземпляра переменной "Количество" имитирующего материального ресурса "Бензин" становится меньше 1000 литров, запускается на выполнение экземпляр имитирующего процесса "Пополнение хранилища бензина" и меняется значение экземпляра переменной "Флажок с требованием наполнить хранилище". Новые экземпляры имитирующего процесса "Пополнение хранилища бензина" не будут запускаться до тех пор, пока значение экземпляра переменной "Флажок с требованием наполнить хранилище" не вернется в начальное состояние и не станет равным 0.
Запустим имитацию измененной модели, оставив без изменения настройки в Окне свойств имитации.
Во время имитации проанализируем изменение значений экземпляра системной переменной "Количество" имитирующего материального ресурса "Бензин" в окне Ход имитации на вкладке Переменные (Рис.23):
Откроем вкладку Процессы и проанализируем количество запущенных экземпляров имитирующего процесса "Пополнение хранилища бензина". Теперь количество запущенных экземпляров данного имитирующего процесса гораздо меньше (Рис.24):
Динамику изменения значений экземпляра переменной "Количество" имитирующего материального ресурса "Бензин" проанализируем в Окне свойств имитации по гиперссылке Статистика по переменным (Рис.25):
В окне Статистика переменной видно, что "лишние" экземпляры имитирующего процесса "Пополнение хранилища бензина" не запускаются на выполнение. Подробно выполнение запущенных экземпляров имитирующего процесса "Пополнение хранилища бензина" посмотрим в окне Хронология выполнения экземпляров процесса (Рис.26):
В окне Статистика переменной также видно, что некоторые экземпляры имитирующей операции "Заправка машины", пытались изменить значение экземпляра переменной «Количество», но не смогли по причине того, что значение экземпляра переменной достигло нижнего допустимого предела (Рис.27):
Проанализируем хронологию выполнения одного из таких экземпляров имитирующей операции, например, экземпляра под номером 201 (Рис.28). Количество экземпляров имитирующего процесса "Обслуживание клиента" и экземпляров имитирующей операции "Заправка машины" совпадает, поэтому рассматриваемый нами экземпляр имитирующей операции имеет такой же номер, как и экземпляр имитирующего процесса, номер которого мы видим в окне "Статистика по переменным" в параметре "Экземпляр процесса" - 201.
Необходимо помнить, что порядок событий, которые происходят при выполнении экземпляра имитирующей операции, определяется следующими временными интервалами и событиями:
Далее на примере статистики по имитирующему процессу "Обслуживание клиента" проанализируем полученные статистические данные (Рис.29):
Откроем гистограмму распределения длительностей экземпляров имитирующего процесса "Обслуживание клиента" (Рис.30):
Откроем гистограмму распределения времен, проведенных экземплярами имитирующего процесса "Обслуживание клиента" в очереди к имитирующему временному ресурсу "Заправочная колонка" (Рис.31):
Откроем гистограмму распределения времен, проведенных экземплярами имитирующего процесса "Обслуживание клиента" в ожидании имитирующего материального ресурса "Бензин" (Рис.32):