Математическое моделирование

         

Блок и оператор LET для работы с C–величинами


В большинстве случаев при создании С-величн используют блок LET. При этом значение, данное каждой С-величине, остается таким же до конца моделирования, если только его не изменит какой-нибудь транзакт, вошедший через этот или другой блок, относящийся к данной С-величине. Имя С?величины записывается как X$n ,где n - символическое имя. В общем случае формат блока LET имеет вид:

LET A=B

В приведенной записи операнд А - имя С-величины (переменной), операнд В - значение, которое присваивается переменной, указанной в операнде А. Операнд В может быть константой, СЧА или выражением.

Блок LET может работать в нескольких режимах. Простейшим из них является режим назначения:

LET X$cost=27 ! С-величина X$cost принимает значение 27

LET X$fval=FN$val

*С-величина X$fval получает текущее значение функции val.

Блок LET может также использоваться для распечатки значений СЧА не в конце моделирования, как обычно, а в любой момент времени. В этом случае следует использовать следующую конструкцию:

GENERATE 80,,,1

LET X$stor80=S$.

TERMINATE

Используя такой сегмент, можно распечатать текущую емкость МНУ stor в момент времени 80

Блок LET (либо оператор LET) может использоваться в качестве счетчика. Так, например, запись

LET X$cvb=X$cvb+1

означает увеличение величины X$cvb на единицу. Однако для выполнения подобной операции в micro-GPSS предусмотрена более простая конструкция:

LET+ A,B



(или LET- A,B для уменьшения значения счетчика). В приведенной записи операнд А - это имя С-величины, а операнд В - величина, на которую изменяется значение счетчика. Таким образом, приведенное выше выражение может быть записано в виде:

LET+ X$cvb,1

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

1.      Режим замещения - старое значение параметра заменяется новым независимо от того, каким было это значение. Формат:

LET A=B


В приведенной записи операнд А - номер модифицируемого параметра, который обозначается как Рj (j = 1...12); операнд В - значение, присваиваемое параметру А.

2.      Режим приращения - новое значение параметра вычисляется путем сложения значения операнда В со старым значением параметра. Формат:

LET+ A,B

LET A=A+B

В приведенной записи операнд А - номер модифицируемого параметра Pj; операнд В - величина,на которую увеличивается текущее значение параметра Рj.

3.      Режим уменьшения (аналогично режиму 2). Формат :

LET- A,B

LET A=A-B

LET может использоваться не только как блок, но и как оператор. Следует напомнить, что большинство СЧА, в том числе и С-величины, имеют в качестве начального значения «0». Иногда бывает необходимо, чтобы в начале моделирования С-величина (или другой СЧА) имела начальное значение, отличное от 0.Это можно сделать с помощью оператора LET. Формат оператора:

LET A,B

В приведенной записи операнд А - имя С-величины (или другого СЧА); операнд В в общем случае - положительная константа, которая  присваивается С-величине в качестве начального значения. Так, присвоение C?величине cvx начального значения, равного 25, производится следующим образом:

LET X$cvx=25

Следует заметить,что оператор LET должен располагаться обязательно перед первым блоком GENERATE. Заметим также, что в этом случае операнд В не может быть выражением или СЧА, которые ранее нигде не были использованы.Это основное отличие между блоком LET и оператором LET.

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


Содержание раздела