Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Разработка имитационных моделей в виде приложений с интерфейсом
8.1.5. Блок SEEK
Блок SEEK устанавливает позицию текущей строки потока данных. Формат блока:
SEEK A,[B]
Операнд А - новая позиция текущей строки.
Операнд В - номер потока данных, по умолчанию равен 1.
Позиция текущей строки - это односвязный индекс, указывающий позицию следующей строки, которую необходимо считать или записать. Она не может быть меньше единицы. При попытке установить ее меньше единицы позиция текущей строки устанавливается равной единице.
31 - код ошибки: файл не был открыт.
Пример:
SEEK (Stroka+P1),(Potok+3)
В этом примере, когда транзакт входит в блок SEEK, операнд А вычисляется, округляется и используется как номер потока данных. Операнд В также вычисляется, округляется и используется как номер потока данных.
8.2. Разработка модели в GPSS World
8.2.1. Постановка задачи
На склад, имеющий 10 пунктов выгрузки, прибывают транспорта с материальными средствами (МС). В транспорте могут быть автомобили различной грузоподъемности. Всего количество типов автомобилей, отличающихся грузоподъемностью, которое может быть в транспорте, распределено по нормальному закону с математическим ожиданием 6 автомобилей и стандартным отклонением 1 автомобиль. Количество автомобилей одного типа в транспорте также распределено по нормальному закону с математическим ожиданием 11 автомобилей и стандартным отклонением 2 автомобиля. Интервалы времени прибытия транспортов распределены по экспоненциальному закону со средним значением 9 часов. Время разгрузки автомобиля зависит от его типа и подчиняется экспоненциальному закону. Среднее время выгрузки МС приведено в табл. 8.1. После выгрузки из тех же автомобилей вновь формируется транспорт.
Построить модель функционирования пунктов выгрузки в течение трех суток с целью определения среднего времени выгрузки транспортов и коэффициентов загрузки пунктов выгрузки при рациональной организации работ на складе.
Характеристики | Тип автомобиля | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
Среднее время выгрузки, мин | 8 | 10 | 12 | 7 | 6 | 9 | 11 | 5 | 13 | 10 |
Для имитации транспорта в целом и одного автомобиля следует использовать транзакты. Пункты выгрузки в модели будут представлять ОКУ.
8.2.2. Программа модели
; Модель разгрузки транспортов ; Задание исходных данных IntTp EQU 720 ; Средний интервал поступления транспортов MOTip EQU 6 ; Матожидание типов автомобилей в транспорте SOTip EQU 1 ; Стандартное отклонение типов автомобилей MatA EQU 11 ; Матожидание автомобилей одного типа SOtkA EQU 2 ; Стандартное отклонение автомобилей одного типа KolPun EQU 10 ; Количество пунктов выгрузки VrMod EQU 1440 ; Время моделирования ; Определение функций и булевых переменных SrVrA FUNCTION P3,D10 ; Среднее время выгрузки 1,8/2,10/3,12/4,7/5,6/6,9/7,11/8,5/9,13/10,10 TipAvt FUNCTION RN64,C2 ; Число типов автомобилей 0,1/1,7 ; Сегмент имитации поступления и обработки сообщений GENERATE (Exponential(33,0,IntTp)) ; Источник транспортов SAVEVALUE 1,0 ; Обнуление счетчика ASSIGN 5,AC1 ; Абсолютное модельное время входа транспорта ASSIGN 2,(INT(Normal(77,MOTip,SOTip)-1)) ;Число типов SPLIT *2 ; Транзактов - по числу типов автомобилей ASSIGN 2+,1 ; Запомнить число типов автомобилей ASSIGN 4,(INT(Normal(55,MatA,SOtkA)-1));Автомобили SPLIT *4 ; Транзактов - по числу автомобилей ASSIGN 4+,1 ; Запомнить число автомобилей одного типа TEST L X1,KolPun,Met1 ; Есть свободные пункты выгрузки? SAVEVALUE 1+,1 Met2 SELECT MIN 3,1,KolPun,,FR ; Выбор пункта с min загрузкой TEST NE P3,0,Met1 ; Есть пункты с min загрузкой? QUEUE P3 ; Встать в очередь SEIZE P3 ; Занять пункт выгрузки DEPART P3 ; Покинуть очередь ADVANCE (Exponential(73,0,FN$SrVrA)) ; Выгрузка RELEASE P3 ; Освободить АРМ UNLINK PunSb,Met2,1 ; Автомобиль на выгрузку ASSEMBLE *4 ; Собрать автомобили одного типа ASSEMBLE *2 ; Собрать автомобили всех типов ASSIGN 6,AC1 ; Время выхода транспорта SAVEVALUE VrVigS+,(P6-P5) ; Суммарное время выгрузки VigTr TERMINATE ; Выгруженные транспорта Met1 LINK PunSb,FIFO ; Автомобили, ожидающие выгрузки ; Сегмент задания времени моделирования GENERATE VrMod TEST NE N$VigTr,0,Met3 SAVEVALUE VrVig,(X$VrVigS/N$VigTr) ; Среднее время выгрузки Met3 TERMINATE 1
Замысел построения модели заключается в следующем. Блок GENERATE имитирует поступление транзактов. Один транзакт - один транспорт. Затем случайным образом определяется количество типов автомобилей в транспорте и заносится в параметр 2 транзакта. Исходный (порождающий) транзакт - транспорт копируется блоком SPLIT и результат копирования - число автомобилей различных типов в прибывшем транспорте копируется вторым блоком SPLIT. Результат копирования - число транзактов, равное числу автомобилей в транспорте. Число автомобилей одного типа заносится в параметр 4 всех транзактов, имитирующих автомобили данного типа.
Далее первые десять транзактов-автомобилей (по числу пунктов выгрузки) поступают на блок SELECT, остальные - в список пользователя с именем PunSb. По мере освобождения пунктов выгрузки из списка пользователя выводятся транзакты и направляются на блок SELECT с меткой Met2. Результат работы блока SELECT - номер пункта выгрузки с минимальным коэффициентом загрузки заносится в параметр 3 вошедшего транзакта. Если результатом поиска блока SELECT является P3=0, т. е. номер нужного блока не найден, то транзакт блоком TEST снова отправляется в список пользователя. При успешном поиске транзакт занимает соответствующий пункт выгрузки.
Разгруженные автомобили первым блоком ASSEMBLE сначала собираются по каждому типу автомобилей отдельно, а вторым блоком ASSEMBLE - по всем типам.
При входе транзакта-транспорта в модель и выходе из нее в параметры 5 и 6 записывается соответствующее модельное время. Оно используется для расчета времени разгрузки транспорта. Суммарное время разгрузки всех транспортов накапливается в ячейке VrVigS.
Для работы с GPSS-моделью можно создать в какой-либо другой системе программирования, например, Delphi, интерфейс, который должен позволять осуществлять ввод исходных данных и вывод результатов моделирования. Например, в приведенной программе модели разгрузки транспортов вводить посредством интерфейса характеристики, для ввода которых используется команда EQU, а также среднее время выгрузки из одного автомобиля. При этом, естественно, необходимо разработать процедуры, формирующие в Delphi соответствующие строки программы GPSS-модели. Сама GPSS-программа также потребует модификации, для проведения которой нужно будет использовать команду INCLUDE и рассмотренные в п. 8.1 блоки OPEN, CLOSE, READ, WRITE для работы с текстовыми объектами и потоками данных.
8.3. Создание стартовой формы приложения - имитационной модели
Работа над новым проектом начинается с создания стартовой формы - окна, которое появляется при запуске приложения.
При запуске Delphi автоматически создаётся новый проект. Вид экрана после запуска Delphi показан на рис. 8.1. Можно использовать этот проект для создания нового приложения. По умолчанию этот проект имеет название Project1.
Стартовая форма создается путем изменения свойств формы Forml (см. рис. 8.1) .Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки. Свойства перечислены на вкладке Properties (свойства) окна Object Inspector.В левой колонке находятся имена свойств, а в правой - их значения.
Сначала надо изменить значение свойства Caption ( Заголовок ) - заменить Forml на Модель разгрузки транспортов. Для этого щелкнуть мышью в поле Caption.В результате этого в правой колонке, где находится текущее значение свойства - текст Forml, появляется курсор (рис. 8.2.).
Используя клавишу <Backspase>, надо удалить Forml и ввести Модель разгрузки транспортов.
Аналогичным образом можно установить значения свойств Height и Width, которые определяют высоту и ширину формы. Этим свойствам надо присвоить значения 530 и 715. Размер формы и элементов управления, а также положение формы на экране и элементов управления на поверхности формы задаются в пикселях, точках экрана.
При выборе некоторых свойств, например Color (цвет), которое определяет цвет фона формы, после значения свойств выводится значок выпадающего списка. В результате щелчка на нем появляется список допустимых значений свойства, из которого можно выбрать нужное значение (рис. 8.3).
При разработке формы Form1 имитационной модели оставим свойство Color неизменным.
В поле значения свойства Font расположена командная кнопка с тремя точками, при нажатии на которую появляется стандартное диалоговое окно Windows выбора шрифта и его свойств (рис. 8.4). Для рассматриваемого примера выбран шрифт Times New Roman размером 10.
Большинство свойств определяют внешний вид формы. Свойство Name определяет имя формы, которое используется в программе для управления формой.
Ниже в табл. 8.2 приведены измененные свойства формы разрабатываемой имитационной модели. Остальные свойства формы оставлены без изменения и в таблице не приведены.
Свойство | Обозначение | Значение |
---|---|---|
Имя формы | Name | Form1 |
Заголовок | Caption | Модель разгрузки транспортов |
Высота | Height | 530 |
Ширина | Width | 715 |
Шрифт | Font. Name | Times New Roman |
Размер шрифта | Font. Size | 10 |
Таблица содержит значения вложенных свойств: Name и Size. Перед именем вложенного свойства указывается имя свойства, его вмещающего. В данном случае имя вмещающего свойства Font. После установки значений свойств, перечисленных в табл. 8.2, форма должна выглядеть так, как изображено на рис. 8.5.
Создайте папки D:\ModRTr\Интерфей с и в последней сохраните проект. Чтобы сохранить проект, надо выполнить команду File/ Save Project As. Откроется окно Save Unit As. Выберите в нем и раскройте созданную ранее папку Интерфейс. В поле Имя файла введите имя программного модуля, например, Rasgruska, и щелкните кнопку Сохранить.
После этого щелчка в диалоговом окне Save Unit As появится диалоговое окно Save Project As. В поле имя файла введите, например, Rasgr_transporta и щелкните кнопку Сохранить.