русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операторы изменения последовательности движения заявок


Дата добавления: 2015-06-12; просмотров: 520; Нарушение авторских прав


К операторам, изменяющим последовательность продвижения заявок по системе, относятся операторы: DISPLACE (см. ЛР№6), TRANSFER (см. ЛР№4), TEST (см. ЛР№5), GATE (см. ЛР№4) и LOOP.

LOOP – организация циклов. Оператор LOOP предназначен для организации в модели циклов. Он имеет следу­ющий формат:

LOOP А,В

Операнд А – параметр заявки или параметр цикла, в котором содержится число повторений какого-либо участка модели. Операнд В – метка оператора, с которого начинается цикл. Операнды А и В могут быть именем, положительным целым числом, выра­жением в скобках, СЧА или СЧА*параметр, например: LOOP KolPovt,Start1– оператор с меткой Start1 является началом цикла, т. е. должен быть расположен рань­ше оператора LOOP. Когда заявка, пройдя участок модели, начинающийся оператором с меткой Start1, войдет в оператор LOOP, значение ее параметра с име­нем KolPovt уменьшается на 1. Если это значение не равно нулю, заявка переходит к оператору с меткой Start1, т. е. цикл повторяется. Если же после вычитания 1 значение параметра цикла равно нулю, следовательно, вы­полнено заданное число повторений, заявка переходит к следующему оператору. Если при входе заявки в оператор LOOP окажется, что параметра с именем KolPovt нет, произойдет останов по ошибке «обращение к несуществующему пара­метру».

При каждом входе заявки в оператор LOOP значение параметра цикла уменьшается на 1. Значит, значение параметра цикла можно использовать для выбора новых значений каких-либо факторов при очередном повторении. Однако это не всегда удобно, так как величина параметра цикла изменяется от большего к меньшему значению, а не наоборот. Функции, выполняемые оператором LOOP, могут быть реализованы, например, с использованием оператора TEST следую­щим образом:

. . .

ASSIGN 2,1

Met1 . . .

. . .

ASSIGN 2+,1



TEST G P2,10,Met1

Первым оператором ASSIGN в параметр 2 активной заявки заносится 1. Оператор с меткой Met1 является началом цикла. После выполнения последовательнос­ти операторов, составляющих тело цикла, второй оператор ASSIGN увеличивает значе­ние параметра 2 на 1. Оператор TEST проверяет значение параметра 2. Если оно меньше десяти, заявка направляется к оператору с меткой Met1 и вновь повто­ряется цикл, если больше – заявка проходит к следующему по порядку оператору. Значения параметра 2 изменяются в порядке возрастания.

Рассмотрим использование оператора LOOP для моделирования одноканальной СМО с ожиданием и ограниченной очередью на три заявки. Пусть требуется в любой момент времени знать номера заявок, на­ходящихся в очереди и на обслуживании. Реализация такой модели показана в примере 3.

 

Пример 3

; Задание длины очереди и булевой переменной

Emk EQU 3

Kontl1 BVARIABLE (Q$Dlina<Emk) ; Проверка длины очереди

; Сегмент имитации поступления и обслуживания заявок

GENERATE 2,,,7 ; Источник заявок

TEST E BV$Kont1,1,Met1 ; Есть ли место в очереди?

QUEUE Dlina ; Да, встать в очередь

; Учет номеров заявок, вошедших в очередь

ASSIGN 1, Emk ; Запись в параметр цикла

Met2 TEST E X*1,0,Met3 ; Есть ли свободное место?

SAVEVALUE P1,XN1 ; Да, записать номер заявки

TRANSFER ,Met4 ; Выйти из цикла

Met3 LOOP 1,Met2 ; Повторить или конец цикла

Met4 SEIZE Stan ; Занять устройство

DEPART Dlina ; Покинуть очередь

; Учет номеров заявок, покинувших очередь

ASSIGN 1, Emk ; Запись в параметр цикла

Met5 TEST E X*1,XN1,Met6 ; Есть ли заявка с таким номером?

SAVEVALUE P1,0 ; Да, тогда удалить

TRANSFER ,Met7 ; Выйти из цикла

Met6 LOOP 1,Met5 ; Повторить или конец цикла

; Учет номера заявки, находящейся на обслуживании

Met7 SAVEVALUE (Emk+1),XN1 ; Записать номер заявки

ADVANCE 4.5 ; Задержка на время обслуживания

RELEASE Stan ; Освободить ОУ

TERMINATE ; Обслуженные заявки

Met1 TERMINATE ; Потерянные заявки

; Задание времени моделирования

GENERATE 15

TERMINATE 1

 

Оператор GENERATE генерирует семь заявок с интервалами 2 единицы модель­ного времени, время прохождения которых представлено в таблице 39. В их нумерации, данной в скобках, отсутствует номер два (XN1=2), так как этот номер присвоен единственной заявке второго оператора GENERATE сег­мента задания времени моделирования.

Таблица 39
События Заявки
1(1) 2(3) 3(4) 4(5) 5(6) 6(7) 7(8)
Вход в модель
Занятие очереди
В очереди заявки 3, 4 4, 5 4, 5, 6 5, 6, 7 5, 6, 7
Занятие устройства 6,5
Освобождение устройства 6,5 15,5
Вывод из модели 6,5 15,5

Первый оператор TEST пропускает заявку к следующему оператору QUEUE, если в оче­реди на три заявки есть место. После постановки в очередь начинает работать сегмент учета номеров заявок, занявших место в очереди. Так как длина очереди ограничена тремя заявками, то в первый параметр – параметр цикла запи­сывается число три. Далее организуется с помощью оператора LOOP цикл, в кото­ром отыскивается возможность записи номера очередной заявки. Запи­сать номер заявки можно будет тогда, когда значение какой-нибудь одной из трех ячеек сохраняемых величин X1, Х2 или ХЗ будет равно нулю. Таких ячеек может быть больше одной, а заявка поступает одна, поэтому после записи номера осуществляется выход из цикла. Заявка занимает оператор SEIZE с меткой Met3 и покидает очередь с именем Dlina. Теперь начинает работать сегмент учета номеров заявок, покинувших очередь. Вначале в параметр цикла записывается число три (по длине очере­ди). Затем в цикле находится одна из сохраняемых ячеек X1, Х2 или ХЗ, в ко­торой записан номер заявки, покидающей очередь. Эта ячейка обнуляется. Так как учет номеров заявок, находящихся в очереди и на обслуживании, ведется раздельно, то в сохраняемую ячейку с номером (Emk+1), т. е. 3+1=4 записывается номер заявки, занявшей устройство Stan. После завершения обслуживания устройство Stan освобождается, а сохраняемая ячейка с номером (Emk+1) обнуляется, т. е. обслуженная заявка списыва­ется с учета и выводится из модели. Анализ результатов моделирования подтверждает правильность работы моде­ли. В t=14 восьмая заявка удалена из модели, так как очередь заполнена. Моделирование завершается в t=15. В очереди находятся пя­тая, шестая и седьмая заявки, а на обслуживании – четвертая.

 



<== предыдущая лекция | следующая лекция ==>
Операторы модификации атрибутов и параметров заявок | Операторы объектов аппаратной категории


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.