Файл: Вдовин Суркова Валентинов Теория систем и системный анализ.pdf
Добавлен: 12.02.2019
Просмотров: 22764
Скачиваний: 342
534
535
снимаются отмеченные выше проблемы, возникающие при руч-
ном кодировании модели в виде Pilgrim-файла:
•автоматическая генерация программного кода позволяет
пользователю не задумываться о структуре и синтаксисе про-
граммы, уделяя все внимание структуре и параметрам самой
модели и ее узлов;
•генерация функций описания узлов конструктором исклю-
чает ошибки, связанные с неправильной последовательностью
указания позиционных параметров или пропуском некоторых
из них;
•анализируя модель, конструктор не позволяет пользовате-
лю выполнять заведомо неверные действия, а также предупре-
ждает о возможных ошибках;
•поддержка конструктором множества плоскостей обеспе-
чивает создание иерархических моделей, что может быть очень
удобно при выполнении моделей с большим количеством узлов.
Действительно, не только восприятие, но и отображение больших
моделей в виде плоского одноуровневого графа на бумаге или
экране монитора дос таточно затруднено.
II. Разработка имитационной модели экономического про-
цесса с помощью графического конструктора Pilgrim-5.
Пример. Имеется предприятие, принимающее заказы на
изготовление продукции ти пов А и В. Заказы на продукцию типа
А поступают в среднем раз в 30 дней, а на продукцию типа В —
раз в 5 дней. Для производства продукции типа А необходимо
10 дней, а для продукции типа В — 2 дня. Одновременно может
идти производство только по одному заказу. При этом заказы
на продукцию А являются первоочередны ми. Все сведения о
выполнении заказов типов А и В фиксируются в отдельных до-
кументах. Модель строится для исследования очереди задержек
заказов.
Порядок выполнения.
1. Создание графа модели.
1. Рассмотрим в качестве автономных процессов:
•производство и фиксацию выполненных заказов;
•формирование заказов и очередь заказов на производство.
2. Определим единицу модельного времени для последую-
щего формирования параметров модели. Очевидно, в данном
примере за единицу времени удобно взять один рабочий день.
3. Запустим конструктор на выполнение.
4. В основном меню выберем “Файл” -> “Создать”. В резуль-
тате в рабочей области экрана появится пустое окно с именем
“Плоскость 1”. Это пустая корневая плоскость.
5. Из панели узлов в левой части экрана перетащим в пло-
скость построения узлы типов parent, serv. В панели узлов также
найдем узел типа ag и щелкнем мышью по узлу ag. Надпись на
панели сменится на term. Добавим в плоскость построения два
узла типа term. Расположим узлы в рабочей области так, как
показано на рис. 3.49.
6. Зададим имена узлов. Для этого нужно дважды щелкнуть
мышью по каждому из узлов и в появившемся диалоговом окне
в поле “Имя” вместо находящегося там “Object...” ввести: “Про-
изводство” для узла 102; “Отчет А” для узла 103, “Отчет В” для
узла 104. Узел 101 будет содержать подуровень формирования
заказов; он будет рассмотрен позже.
7. Определим маршруты транзактов. Для этого захватим
изображение круга с перекрестием на панели узлов и перета-
щим на узел “Производство”. После отпускания кнопки мыши
за курсором потя нется стрелка. Далее необходимо щелкнуть
мышью по узлу “Отчет А”, в результате чего появится стрелка,
символизирующая маршрут прохождения транзактов из узла
“Производство” в “Отчет А”.
Предостережение. Необходимо сначала указывать узел-
источник, а потом — узел-приемник. Последующая смена на-
правления невозможна. При создании неверного маршрута не-
обходимо его удалить через свойства узла и потом задать новый.
По окончании этого этапа должен появиться экран, подобный
приведенному на рис. 3.50.
536
537
Рис. 3.49. Окно создания узлов и графа корневой плоскости
Рис. 3.50. Окна графа плоскости 10 и определения параметров слоя
536
537
Рис. 3.49. Окно создания узлов и графа корневой плоскости
Рис. 3.50. Окна графа плоскости 10 и определения параметров слоя
538
539
8. Создадим плоскость формирования заявок. Дважды щел-
кнем по узлу “Object 101”, в результате чего получим новую
пустую плоскость 10 с именем “Object 101”. В этой плоскости
теми же операциями, что и ранее, создадим граф, как показано
на рис. 3.50. Останемся в этой плоскости.
9. Можно увидеть, что в информационной строке в нижней
части экрана красным цветом отображены надписи “Вход не
назначен” и “Выход не назначен”. В нашем случае плоскость 10
не будет иметь входа, так как сама предназначена для генера-
ции заявок, однако выход необходимо назначить. В левой части
экрана щелкнем по кнопке “Слой”. В диалоговом окне введем имя
слоя “Заказы” и выход 107. Вход установим на значение “none”,
т. е. отсутствующий. Результат приведен на рис. 3.50. После на-
жатия кнопки “ОК” одна из красных надписей в информацион-
ной строке будет заменена на “Выход: 107”.
2. Определение глобальных переменных модели
Определим переменные модели. Очевидно, для работы мо-
жет понадобиться переменная времени обслуживания заявки.
На левой панели щелкнем по кнопке “Переменные”. Появится
соответствующее диалоговое окно (рис. 3.51). В нем необходимо
ввести: имя переменной proc_time, тип переменной int. Значение
можно не указывать, так как оно будет определяться при вы-
полнении модели в зависимости от типа продукции.
3. Определение свойств узлов.
1. Определим свойства узлов плоскости 10. Узел 105 будет
формировать заказы типа А, узел 106 - типа В. Необходи-
мо дважды щелкнуть мышью по узлу 105, в результате чего
появится диалого вое окно “Свойства узла”. В нем щелкнуть по
кнопке “Определить параметры”. В результате появится окно
определения параметров узлов типа ag (рис. 3.52). Очевидно, для
заявок типа А значение “Приоритет” нужно указать равным 1.
На выборе закона распределения не будем останавливаться,
выберем его как norm — нормальное. В строке “Мат. ожидание”
(Параметр 1) введем значение 30, а “Отклонение” (Параметр 2)
примем равным 10. Повторим процедуру для узла 106. Но значе-
ние приоритета укажем 2, математическое ожидание примем
Рис. 3.51.
Окно определения глобальных переменных модели
538
539
8. Создадим плоскость формирования заявок. Дважды щел-
кнем по узлу “Object 101”, в результате чего получим новую
пустую плоскость 10 с именем “Object 101”. В этой плоскости
теми же операциями, что и ранее, создадим граф, как показано
на рис. 3.50. Останемся в этой плоскости.
9. Можно увидеть, что в информационной строке в нижней
части экрана красным цветом отображены надписи “Вход не
назначен” и “Выход не назначен”. В нашем случае плоскость 10
не будет иметь входа, так как сама предназначена для генера-
ции заявок, однако выход необходимо назначить. В левой части
экрана щелкнем по кнопке “Слой”. В диалоговом окне введем имя
слоя “Заказы” и выход 107. Вход установим на значение “none”,
т. е. отсутствующий. Результат приведен на рис. 3.50. После на-
жатия кнопки “ОК” одна из красных надписей в информацион-
ной строке будет заменена на “Выход: 107”.
2. Определение глобальных переменных модели
Определим переменные модели. Очевидно, для работы мо-
жет понадобиться переменная времени обслуживания заявки.
На левой панели щелкнем по кнопке “Переменные”. Появится
соответствующее диалоговое окно (рис. 3.51). В нем необходимо
ввести: имя переменной proc_time, тип переменной int. Значение
можно не указывать, так как оно будет определяться при вы-
полнении модели в зависимости от типа продукции.
3. Определение свойств узлов.
1. Определим свойства узлов плоскости 10. Узел 105 будет
формировать заказы типа А, узел 106 - типа В. Необходи-
мо дважды щелкнуть мышью по узлу 105, в результате чего
появится диалого
вое окно “Свойства узла”. В нем щелкнуть по
кнопке “Определить параметры”. В результате появится окно
определения параметров узлов типа ag (рис. 3.52). Очевидно, для
заявок типа А значение “Приоритет” нужно указать равным 1.
На выборе закона распределения не будем останавливаться,
выберем его как norm — нормальное. В строке “Мат. ожидание”
(Параметр 1) введем значение 30, а “Отклонение” (Параметр 2)
примем равным 10. Повторим процедуру для узла 106. Но значе-
ние приоритета укажем 2, математическое ожидание примем
Рис. 3.51. Окно определения глобальных переменных модели