Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В.Д. Боев, Р.П. Сыпченко.docx
Скачиваний:
179
Добавлен:
19.09.2019
Размер:
7.07 Mб
Скачать

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. После выгрузки из тех же автомобилей вновь формируется транспорт.

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

Таблица 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 для работы с текстовыми объектами и потоками данных.