Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций МТС (Д,ОБ) очное заочное.docx
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
788 Кб
Скачать
☆
  1. Приоритеты в имитационной системе

Секция состоит из записей вида:

ГЛУБ n = t

ГЛУБ n1 / n2 = t

Здесь:

n, n1, n2 - номера приоритетов (от 0 до 255);

t - глубина действия приоритета в минутах.

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

Первая форма записи означает, что приоритету n задается глубина действия t; вторая - устанавливается глубина действия t для всех приоритетов с n1 по n2 включительно.

Примеры:

ГЛУБ0/5 =15

- для каждого приоритета с 0-го по 5-й устанавливается глубина действия, равная 15 мин.

ГЛУБ6=2:30

- для шестого приоритета устанавливается глубина действия 2 час 30 мин.

  1. Таблица взаимосвязи операций

Секция содержит записи, вызывающие постановку в очередь новых операций при выполнении или невыполнении каких-либо операций, то есть фактически описывает технологию работы станции. В этой секции, в отличие от других, одна запись может быть продолжена на несколько строк, при этом нельзя разрывать ключевые слова, числа и определенные пользователем имена. Каждая новая запись должна начинаться с новой строки.

Синтаксис секции весьма сложен, поэтому его описание снабжено большим количеством примеров, предназначенных для облегчения понимания синтаксических конструкций.

Общий вид записи:

INIT (CHAIN1) {(CHAIN2) {… CHAINn}}

Конструкция INIT описывает причину начала технологической цепочки (это может быть или успешное завершение какой либо операции, или удаление операции из очереди. Конструкция CHAINi описывает саму технологическую цепочку. Смысл записи таков – если произошло событие, описанное в INIT, то начинается выполнение всех технологических цепочек, описанных в записи.

Конструкция INIT

Имеет два вида:

ПРИ EVENT {ВСЕГДА}

ПРИ НЕ EVENT

Конструкция EVENT описывает произошедшее событие. Событием является успешное завершение какой-либо операции. Первая запись означает, что цепочка задействуется при успешном выполнении операции, описанной в EVENT, вторая – при удалении операции из очереди.

Если заканчивается операция, поставленная в очередь из расписания или являющаяся последней в какой-либо технологической цепочке, то это считается событием завершения операции и инициируется соответствующая запись. Если же закончившаяся операция была промежуточным элементом цепочки, то будет инициироваться только та запись, соответствующая этой операции, в конструкции INIT которой есть ключевое слово ВСЕГДА. Пример, поясняющий это правило, помещен в конце раздела.

Конструкция EVENT

Может принимать две формы. Простая форма:

ОП n

Здесь n – номер операции. Событие состоит в выполнении или удалении соответствующей операции.

Групповая форма.

cgroup

cgroup – имя определенной пользователем группы операций. Событие состоит в выполнении или удалении одной из операций, входящих в группу.

Группа операций должна быть определена раньше ее использования. Группа операций определяется специальной записью вида:

ГРУППА “cgroup” EVENT {,EVENT…}

Имя cgroup не должно превышать 12 символов и может состоять из больших и маленьких русских и латинских букв, цифр и символа подчеркивания '_'. Прочие символы использовать нельзя.

Запись означает, что в группу входят все перечисленные в списке конструкций EVENT операции, как указанные явно, так и входящие в ранее определенные группы.

Примеры:

ГРУППА “ПРИЕМ_НА_1” ОП1,ОП2,ОП3

ГРУППА “ПРИЕМ_НА_2” ОП5,ОП6,ОП7

ГРУППА “ПРИЕМ” “ ПРИЕМ_НА_1”,ОП4,”ПРИЕМ_НА_2”

Описанную здесь группу операций ПРИЕМ составят операции с номерами с 1 по 7.

Примеры конструкции INIT:

ПРИ ОП 4

ПРИ НЕ “ ПРИЕМ”

Для конкретной операции и для конкретной группы операций может быть задано только по одной записи следующих трех групп: ПРИ …, ПРИ НЕ … и ПРИ…ВСЕГДА.

Конструкция CHAIN

Описывает технологическую цепочку и весьма многообразна. Цепочка состоит из звеньев различных типов. Типы звеньев можно разделить на две группы: звено-условие и звено-действие. Общий вид цепочки, начинающейся со звена-условия:

ЕСЛИ CONDITION ТО (CHAIN1) {И (CHAIN2){ И … (CHAINn)}}

{ИНАЧЕ (CHAINn+1) {И (CHAINn+2){ И … (CHAINm)}}}

Ключевое слово И может быть заменено символом &

Здесь конструкция CONDITION, описанная ниже, задает некоторое условие, а CHAINi – это цепочки. Смысл такого звена следующий: при выполнении условия, заданного в CONDITION, выполняются цепочки CHAIN с 1-ой по n, а при невыполнении – с n+1 по m.

Будем называть звено звеном без разветвления, если оно имеет вид:

ЕСЛИ CONDITION ТО (CHAIN)

то есть если к нему присоединена только одна цепочка.

Конструкция CONDITION

Представляет собой выражение, состоящее из конструкций EXPRESSION, которые могут принимать значения либо "истина", либо "ложь", соединенных при помощи логических операций И (может быть обозначена также знаком &) и ИЛИ (может быть обозначена знаком |), а также круглых скобок.

Кроме того может иметь вид

“ccond”

! “ccond”

Имя ccond должно быть определенным ранее пользователем именем условия. Вместо этого имени подставляется само условие. Запись вида !ccond означает что условие ccond не выполняется.

Имя условия задается записью вида

УСЛОВИЕ “ccond” CONDITION

Требования к имени ccond те же, что и в записи ГРУППА.

Конструкция EXPRESSION

Имеет следующий вид:

ELEMENT1 {± ELEMENT2 {± ELEMENT3 {±...}}} SIGN VALUE

Вместо ± должен стоять либо +, либо -.

Конструкция ELEMENT описывает сравниваемые элементы, конструкция SIGN – способ сравнения, VALUE – значение с которым сравниваются элементы и время в которое они сравниваются.

Конструкция ELEMENT

Имеет одну из следующих форм:

БУ n

БУ n (ni)

Ф n

и означает в первом случае значение емкости n-го элемента, во втором – значение емкости ni-го частичного элемента n-го элемента, в третьем – значение фиксатора. Фиксатор нельзя включать в сумму.

Пример записи конструкции ELEMENT:

БУ1+БУ3+БУ22(2)+БУ11 – правильная запись;

БУ1-БУ2 – правильная запись;

БУ1+БУ3+Ф13+БУ2(3) – неправильная запись (в сумме присутствует фиксатор).

Конструкция SIGN

Это один из следующих знаков сравнения:

= (равно);

< (меньше);

> (больше);

<= (меньше или равно);

>= (больше или равно);

!= (не равно).

Конструкция VALUE

Может иметь следующий вид:

N[{T+t}{!}] или n[{T-t}{!}]

n

n – величина, с которой сравниваются элементы. t – смещение времени проверки относительно текущего времени. Если не задано, то 0. Добавление ! означает, что проверять условие надо не только в указанный момент, но и до конца расчетного периода.

Примеры конструкции EXPRESSION:

БУ1+БУ2+БУ3!=100

– сумма бункерных элементов не равна 100;

Ф3 = 5

– значение на фиксаторе 3 равно 5;

БУ1+БУ2(3)<= 12[T+5!]

– сумма бункерного элемента 1 и 3-го частичного элемента бункерного элемента 2 не больше 12, начиная с момента через 5 минут от текущего и до конца расчетного периода.

Примеры конструкций CONDITION:

(БУ1+БУ2>10 И Ф1=1) ИЛИ (БУ1+БУ2Б<=10 И Ф1=2)

то же самое можно записать так:

УСЛОВИЕ "МОЕ_УСЛОВИЕ" БУ1+БУ2>10

(Ф1=1 И "МОЕ_УСЛОВИЕ" ) / (Ф1=2 & !"МОЕ_УСЛОВИЕ")

Общий вид цепочки, начинающейся со звена-действия:

ACT ЗАТЕМ (CHAIN1) {(CHAIN2){ … (CHAINn)}}

Здесь конструкция ACT, описанная ниже, задает некоторое действие, а CHAINi – это цепочки. Смысл такого звена следующий: выполняется действие, заданное в ACT, затем выполняются цепочки CHAIN с 1-ой по n.

Как и в случае звена-условия будем называть звено звеном без разветвления, если оно имеет вид:

ACT ЗАТЕМ (CHAIN)

то есть если к нему присоединена только одна цепочка.

Конструкция ACT

Принимает разные формы. В простейшем случае – это конструкция STATEMENT.

Конструкция STATEMENT

Конструкция STATEMENT может иметь одну из следующих трех

форм:

OPERATION

или

cfunction[БУ n1{(ni1)}:OPERATION1,БУ n2{(i2)}:OPERATION2{,...}]

или

КРАХ

Конструкция OPERATION задает номер и параметры ставящейся в очередь операции.

Имя cfunction – это имя одной из двух функций MIN или MAX. В очередь (с соответствующими параметрами) будет поставлена та операция из списка в квадратных скобках, для которой значение емкости бункерного элемента (или частичного элемента, если задан индекс в круглых скобках), соответствующего этой операции, является соответственно минимальным или максимальным.

Ключевое слово КРАХ вызывает немедленное аварийное окончание расчета.

Конструкция OPERATION

ОП n { ( PARM {, PARM {, PARM {, PARM }}} ) }.

Здесь n – номер операции;

PARM – конструкция, задающая один из четырех параметров. В одной конструкции OPERATION любой из 4-ех параметров может быть задан только один раз.

Конструкция PARM

Имеет вид:

ПР npr

ВП nspr или ВП Фnfsp

ВХ ne или ВХ Фnfe

УНИК {t}

Т + t или T – t

Первая форма задает значение приоритета для операции (если не задан, то принимается равным 0), вторая – внутренний приоритет или номер фиксатора который содержит внутренний приоритет в момент постановки операции в очередь; третья – номер входа (по умолчанию – 0) или номер фиксатора который содержит номер входа в момент постановки операции в очередь . Четвертая форма (если задана) означает, что если операция N должна быть поставлена в момент времени T0 то, если в очереди уже есть операция N со временем поступления T1, если T1<=T0 и T0-T1<=t, то операция в T0 в очередь не ставится, а если T1>T0 и T1-T0<=t, то операция ставится в очередь в T0 и снимается из очереди операция, поставленная в T1. Если ключевое слово УНИК задано без параметра t, то он интервалы проверки неограниченны, если УНИК не задан вообще, то уникальность операции в очереди не проверяется. Пятая форма задает смещение времени постановки операции относительно текущего времени (по умолчанию – 0). Каждая из форм в одной конструкции OPERATION может встречаться только один раз. Вместо русской буквы Т можно задавать латинскую букву T.

Конструкция OPERATION вызывает постановку в очередь указанной в ней операции с соответствующим приоритетом, номером входа в момент времени, определяемый текущим моментом и заданным смещением.

Примеры конструкции STATEMENT:

ОП1(Вх4,ПР5,Т+5,УНИК60)

MIN[БУ1:ОП1(УНИК,вх6), БУ2:ОП1(ВХ8)]

Кроме того конструкция ACT может иметь вид:

ЖДАТЬ( CHAIN1, CHAIN2 ... {, CHAINn})

Смысл этой конструкции в том, что звено считается выполненным и происходит переход к следующему звену цепи, когда все цепи CHAINi будут выполнены.

Пример цепи с такой конструкцией: