Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операции. Основным процессом во время расчета модели является выполнение операции






 

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

Работа элементов в операции включает в себя:

- проверку возможности использования элементов в операции;

- изменение состояния элементов;

- сохранение параметров работы для последующей выдачи результатов.

Алгоритм проверки использования элемента заключается в следующем. В случае, когда на элемент поступает емкость , то для заданного момента времени условие будет принимать вид

,

где - состояние элемента до момента поступления емкости;

- предельная емкость (вместимость) элемента.

Т.е., состояние элемента не должно выходить за предельную вместимость элемента. Если с элемента будет сниматься емкость , то условие примет вид

,

т.е. с элемента не может убыть более того, что на нем находилось.

Однако если учитывать не только момент поступления емкости, необходимо учитывать эффект «забегания вперед». Пусть в момент времени (рис. 8) на элемент в одной из предыдущих операций была занесена емкость , а в момент она была удалена. В момент времени текущая операция должна занести на элемент емкость . В соответствии с условием для момента времени это возможно. Однако если рассматривать состояние элемента на всем интервале времени, то данное условие не будет выполняться на интервале времени , поскольку . В этом случае определяется задержка из-за данного элемента и условие проверяется для нового момента времени .

 

 

 

 


Рис. 8.

Эффект «забегания вперед»

 

 

Логические элементы, имеющие всего два состояния («занят» или «свободен»), занимаются всегда полностью. Поэтому для логического элемента поступление означает занятие его в момент , а убытие - освобождение в момент . Элемент считается занятым на время . Равенство единице величины поступающей емкости говорит о том, что логический элемент отображает лишь сам факт прохождения какого-то потока без отображения его величины и структуры. Проверка возможности использования логического элемента осуществляется так же, как показано на рис. 8. Таким образом, общее условие возможности использование элемента в операции с учетом эффекта «забегания вперед» имеет вид:

.

 

Для того чтобы операция выполнилась, данное условие должно соблюдаться для всех входящих в нее элементов. При возникновении задержки из-за элемента в операции она относится на базисный элемент, поскольку только на базисных элементах возможны стоянки и остановки. В этом случае фактические времена занятия и освобождения элементов «сдвигаются» на величину возникшей задержки, т.е. и , а время занятия базисного элемента пропорционально увеличивается (рис. 9).

 

 

 
 

 


Рис. 9.

Задержка из-за логического элемента

 

 

Если задержка возникает из-за занятости первого базисного элемента в операции, то сдвигается время начала выполнения операции на величину задержки (рис. 10).

 

 

 
 

 


Рис. 10.

Задержка из-за базисного элемента

 

 

Операция может состоять из нескольких однородных вариантов (например, прием поезда на несколько путей парка). Варианты в этом случае записываются в порядке предпочтения. При выполнении операции выбирается вариант с минимальными задержками. Алгоритм выбора варианта имеет вид:

 

,

где - номер наилучшего варианта;

- задержки при выполнении r -го варианта, r = 1…S;

S – количество вариантов в операции.

 

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

11 представлен пример выбора варианта технологии в операции, состоящей из трех равноценных вариантов. На время начала выполнения операция не может выполниться ни по одному из вариантов (причинами могут быть занятость элементов, входящих в варианты).

 

 
 

 


Рис. 11.

Определение времени задержки

 

 

Возникает задержка , которая «сдвигает» начало выполнения операции на более позднее время. Первыми в момент времени оказались свободными элементы варианта 1. Однако поскольку уже с момента времени элементы варианта вновь окажутся занятыми, а интервал времени между ними недостаточен для выполнения операции , то по данному варианту операция выполниться не сможет. Следующими за элементами первого варианта в момент времени освобождаются элементы варианта 3. Здесь уже интервал времени, на котором элементы, входящие в данный вариант, свободны, достаточен для выполнения операции. Суммарная задержка составит, таким образом, .

 

5.1. Некоторые синтаксические конструкции языка моделирования системы ИСТРА для создания операций

 

Каждая операция находится в отдельной секции и может состоять из одного или нескольких вариантов.

Разделителем между вариантами служит строка с записью ВАРИАНТ.

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

 

Каждая запись занимает одну строку. Перед любой записью может находиться метка, которая позволяет ссылаться на эту запись из других записей, находящихся ниже. Ссылка на нижестоящие записи запрещена. Метка имеет вид:

 

: @метка

 

Текстовая переменная @метка может состоять из больших и маленьких русских и латинских букв, цифр, а также символа '@' и символа подчеркивания '_'. Концом метки считается символ пробела. Максимальная длина метки - 12 символов, не считая двоеточия. Если задана метка большей длины, то программа автоматически отбрасывает все символы после двенадцатого. Примеры меток:

 

: Метка_один

: Label123

: 21

: @Train

 

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

 

5.1.1. Предельное время задержки операции

 

Предельное время задержки задается при помощи строки:

 

ПРЕДЕЛЬНАЯ ЗАДЕРЖКА = t

 

где t - время предельной задержки.

 

В каждой операции должна быть одна (и только одна!) такая запись, она может находиться в любом месте секции.

Метка перед этой записью не воспринимается программой.

 

5.1.2. Действия с логическими элементами

 

В случае, когда время задержки задается непосредственно, запись имеет следующий вид:

 

TYPE n: TIME1 + TIME2

 

Где n - номер логического элемента,

TYPE - задает тип логического элемента и может принимать следующий вид:

 

БА - базисный элемент,

БА(Ф) - базисный фиктивный,

ПР - промежуточный,

ПР(С) - промежуточный специальный,

 

 

Конструкция TIME1 задает время сдвига, а конструкция TIME2 - время занятости элемента. Они могут принимать следующий вид:

 

t - когда время задано точно,

t1/t2 LAW - когда время задается как случайная величина,

t1 и t2 - минимальное и максимальное возможное значение времени.

 

Конструкция LAW указывает закон распределения и может принимать одну из следующих четырех форм:

 

РАВН () - равномерное распределение,

 

НОРМ(М m, С s) - нормальный закон (Гаусса), с математическим ожиданием m и среднеквадратичным отклонением s,

 

ПУАС(И i) - закон Пуассона с интенсивностью i,

 

ЭРЛН(Е e, И i) - закон Эрланга с параметром Эрланга e и интенсивностью i. Закон Эрланга – частный случай гамма - распределения, когда параметр закона (альфа) – целое положительное число.

 

Параметры внутри скобок можно менять местами, т.е. конструкции

НОРМ(М100, С10) и НОРМ(С10, М100) эквивалентны.

 

Все параметры законов могут быть только целыми числами. Исключение - интенсивность в законе Эрланга, которая может задаваться в виде десятичной дроби, например:

 

ЭРЛН(Е4, И0.252)

 

Существуют следующие ограничения на величину параметров:

для НОРМ: 1 < = m < = 12000, 1 < = s < = 400;

для ПУАС: 1 < = i < = 700;

для ЭРЛН: 1 < = e < =100, 0.001 < = i < = 2.

 

Время выбирается на промежутке от t1 до t2 по следующему алгоритму. Для каждой записи с помощью датчика случайных чисел выбрасывается величина, задаваемая конструкцией LAW и проверяется, попадает ли она в промежуток между t1 и t2. Если не попадает, то вычисление случайной величины повторяется, пока она на попадет в требуемые границы.

 

Пример:

 

ПРЕДЕЛЬНАЯ ЗАДЕРЖКА=1440

БА1: 0+5/10РАВН() * Перегон

БУ11=0+50

Ф80< =7

Ф90< =0

БУ2+1

 

В случае, когда время занятости задается ссылкой на другие записи, запись имеет вид:

 

TYPE n: TIME1 + [@метка1 {+ @метка2 {+...}}]

 

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

 

Пример:

 

БА1: 1+5

: m1 ПР(С)3: 5+2/4РАВН()

: Метка БА(Ф)2: 5/15ПУАС(И10)+5/15ПУАС(И10)

ПР4: 15/25НОРМ(С4, М20)+[m1+Метка]

 

 

5.1.3. Действие с параллельным элементом

 

Для параллельного элемента существует только одна форма записи:

 

ПА n: [@метка]

 

Здесь n - номер элемента,

@метка должна соответствовать строке, описывающей базисный элемент.

 

Пример:

 

ПРЕДЕЛЬНАЯ ЗАДЕРЖКА=120

: L1 БА(Ф)25: 0+40/60НОРМ(М40, С12)

ПР(С)25: 0+0

Ф83-1

: L2 ПА55: [L1]

 

5.1.4. Действия с фиксаторами

 

Для действий с фиксаторами в операциях используются следующие строки.

 

Занесение значения на фиксатор:

Ф n < = q

 

Проверка на равенство:

Ф n = q

 

Проверка на больше:

Ф n > q

 

Проверка на меньше:

Ф n < q

 

Увеличение значения фиксатора:

Ф n + q

 

Уменьшение значения фиксатора:

Ф n - q

 

Здесь всюду n - номер элемента, q - некоторое числовое значение.

 

 

5.1.5. Действия с бункерными элементами

 

Опишем сначала конструкцию ELEMENT. С ее помощью описывается бункерный элемент (или частичный элемент) с которым производятся действия. Конструкция имеет вид:

 

БУ n {(i)} +(-) VALUE

 

Здесь n - номер элемента,

i - номер частичного элемента для него (если задан).

VALUE - величина прибавляемой (+) или снимаемой (-) с элемента емкости.

Примеры записи бункерных элементов:

 

БУ5

БУ1(3)

 

Опишем также конструкцию VALUE, описывающую величину прибавляемой к элементу или снимаемой с него емкости. Она может принимать две формы.

 

Форму константы:

q

 

и форму случайного числа:

ql/qh LAW

 

где ql и qh (ql < qh) - границы, в которых может находиться случайная величина;

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

 

Примеры:

 

БУ2+11

БУ4(1)-10/15РАВН

 

5.1.6. Проверки элементов

 

Имеются три вида проверки для бункерных элементов:

 

- на равенство:

ELEMENT = q

 

- на больше:

ELEMENT > q

 

- на меньше:

ELEMENT < q

 

Здесь q - некоторое значение, с которым сравнивается текущее значение емкости указанного элемента.

 

5.1.7. Изменение емкости на явно указанную величину

 

Это следующие записи.

 

Добавление явно указанной емкости

 

ELEMENT + VALUE

 

Добавление явно указанной емкости при условии, что текущее значение емкости элемента равно 0 (в дальнейшем для краткости будем называть такое условие " с проверкой на 0")

 

ELEMENT = 0 + VALUE

 

5.1.8. Снятие явно указанной емкости

 

ELEMENT - VALUE

 

Снятие всей емкости, если величина текущей емкости элемента не меньше указанной величины:

 

ELEMENT -> q

 

Снятие всей текущей емкости с элемента. Если она больше указанной величины, то снимается указанная величина:

 

ELEMENT -< q

 

Снятие всей текущей емкости с проверкой на наличие емкости на элементе:

 

ELEMENT -!

 

Снятие всей текущей емкости (без проверки на наличие емкости на элементе):

 

ELEMENT -!!

 

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

 

Кроме того, возможно использование фиктивных бункерных элементов в следующих строках:

 

БУ(Ф) n{(i)} + VALUE

БУ(Ф) n{(i)} - VALUE

 

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

 

Для составных элементов (т.е. использования в записи для составного элемента в качестве конструкции ELEMENT форму БУ n, что будет означать весь элемент целиком, как сумму частичных) имеются некоторые ограничения в использовании. Например, если элемент 2 объявлен в секции бункерных элементов составным, то можно использовать строку

 

БУ2(1)+3

 

но нельзя

 

БУ2+3

 

5.1.9. Занесение емкости с запоминанием остатка и занесения остатка

 

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

 

Занесение с запоминанием остатка задается следующими строками:

 

ELEMENT + % VALUE

ELEMENT = 0 + % VALUE

 

Вторая строка, в дополнении к тому, что делает первая, требует проверки на 0.

 

На бункерный элемент, описываемый конструкцией ELEMENT, заносится вся величина, задаваемая конструкцией VALUE, если позволяет предельная емкость этого элемента. В противном случае элемент заполняется до предела, а остаток емкости запоминается. Этот остаток можно использовать при помощи записей вида:

 

ELEMENT + %

ELEMENT + %%

 

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

Пример:

 

: L3 БУ17-!

Ф101-1

БУ5-[L3]

: L4 БУ79+[L3]

ПР(С)50: 0+0

БУ21+%БУ79(1) * АГР

БУ45(1)+%

БУ39(1)+%

БУ38(1)+%

БУ34(1)+%%

 

Данный пример производит следующие действия: на элемент 21 заносится величина первого частичного элемента 79-го бункерного. Остаток от заносимой емкости, в случае, если вся емкость не поместилась на 21-й элемент, запоминается и заносится на другие элементы в следующем порядке - на первый частичный 45-го элемента до предельной вместимости. В случае невозможности занесения всего остатка на 45-й элемент, оставшаяся емкость заносится на первый частичный 39-го элемента и т.д. Если же и на первый частичный 38-го элемента невозможно занести оставшуюся емкость, она заносится на первый частичный 34-го элемента с условием возможности занесения всей оставшейся емкости.

 

Кроме того, имеются записи вида

 

ELEMENT + & VALUE

ELEMENT = 0 + & VALUE

 

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

 

Примеры блоков:

 

БУ1+%40

ПР2: 3+5

БУ2+%

БУ3(1)+%%

 

В качестве первой записи в этом блоке нельзя использовать запись БУ1+& 40, т.к. внутри блока находится запись ПР2: 3+5. Однако блок

 

БУ1 + & 40

БУ2 + %

БУ3(1) +%%

 

вполне законен. Он, в свою очередь, в отличие от первого блока не гарантирует того, что сначала будет заполняться элемент БУ2.

 

 

5.1.10. Изменение емкости элементов при помощи ссылки на другие элементы

Строки, описывающие это действие, имеют следующий вид:

 

ELEMENT + STATEMENT

ELEMENT - STATEMENT

ELEMENT =0+STATEMENT

 

Конструкция STATEMENT имеет вид:

 

ELEMENT1 {+ ELEMENT2 {+ ELEMENT3 {+...}}}

 

Ограничено использование данных конструкций для составного элемента. Использование его возможно, когда элементы, составляющие конструкцию STATEMENT, тоже составные.

 

Пример:

 

БУ1 + БУ2 +БУ3(3)+БУ4+БУ5+БУ7

 

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

 

Кроме того, имеются записи для занесения с запоминанием остатка:

 

ELEMENT + % STATEMENT

ELEMENT + & STATEMENT

ELEMENT = 0 + % STATEMENT

ELEMENT = 0 + & STATEMENT

 

Их действие аналогично соответствующим записям, описанным выше.

 

 

5.1.11. Изменение емкости элементов при помощи ссылки на другие строки

 

Строки, описывающие это действие, имеют следующий вид:

 

ELEMENT + STATEMENT

ELEMENT - STATEMENT

ELEMENT =0+STATEMENT

ELEMENT + % STATEMENT

ELEMENT + & STATEMENT

ELEMENT = 0 + % STATEMENT

ELEMENT = 0 + & STATEMENT

 

Конструкция STATEMENT имеет вид:

 

[@метка1 {SIGN @метка2 {SIGN @метка3 {SIGN...}}}]

 

Здесь SIGN один из арифметических знаков + или -, а метки указывают на расположенные выше строки, в которых производились изменения емкости.

 

 

Пример:

 

: М1 БУ1+3

: М2 БУ2+8

: М3 БУ 3 -10

БУ100+[М1+М2-М3]

 

Значение конструкции STATEMENT вычисляется как сумма и разность (в зависимости от знака) величин изменения емкости в указанных строках. Действия, задаваемые строками, аналогичны соответствующим вышеописанным строкам.

 

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

 

 

5.1.12. Строки, описывающие натурный лист

 

Состав описывается блоком строк, первая из которых (заголовок состава) имеет вид:

 

СОСТАВ n + nl/nh

 

Здесь n - номер составного бункерного элемента, соответствующего составу,

nl - минимальный объем состава,

nk - максимальный объем состава.

 

Концом блока служит либо конец варианта, либо строка

 

КОНЕЦ

 

Внутри блока могут находиться только строки вида:

 

НЗН i + VALUE

 

Здесь i - номер частичного элемента.

 

Пример состава:

 

СОСТАВ 21+10/15

НЗН 1+5

НЗН 2+5/10РАВН()

КОНЕЦ

 

 

5.1.13. Расформирование

 

Строка, описывающая роспуск имеет вид:

 

БУ ELEMENTLIST + [@метка](INDEXLIST)

 

Конструкция ELEMENTLIST имеет вид:

 

ELEMENT1 {, ELEMENT2 {, ELEMENT3 {,...}}}

 

Конструкция ELEMENT это либо номер несоставного бункерного элемента n, либо несколько последовательных номеров таких элементов, заданных в форме

 

n1...n2

 

Здесь n1 - номер наименьшего элемента,

n2 - номер наибольшего элемента.

 

Конструкция INDEXLIST имеет тот же вид, что и ELEMENTLIST, но вместо номеров бункерных элементов состоит из индексов частичных элементов. Число индексов в списке не должно превышать число бункерных элементов в списке. Если число индексов меньше числа бункерных элементов, то производится пополнение списка индексов до нужного количества посредством дополнения индексами, следующими за последним индексом, указанным в списке. Метка @метка должна указывать на строку, в которой производилось изменение емкости составного бункерного элемента.

 

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

 

Пример:

БУ 1, 3...5, 2, 6 + [M1](1...3, 5)

 

 

Программа установит следующее соответствие:

 

БУНКЕРНЫЙ ЭЛЕМЕНТ ИНДЕКС

1 1

3 2

4 3

5 5

2 6

6 7

 

 


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.