Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа модели. ; Модель разгрузки транспортов
; Модель разгрузки транспортов ; Задание исходных данных 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 для работы с текстовыми объектами и потоками данных. Date: 2015-07-17; view: 468; Нарушение авторских прав |