Алгоритмический язык высокого уровня ЯРД (Язык Разработки Диспозиций)

СОДЕРЖАНИЕ

 ВВЕДЕНИЕ
1. УНИВЕРСАЛЬНЫЙ БАЗИС ЯЗЫКА ЯРД
1.1. Константы
1.2. Переменные
1.3. Массивы
1.4. Процедуры
1.4.1. Стандартные процедуры
1.5. Выражения
1.5.1. Арифметические выражения, отношения, присваивания
1.5.2. Условные выражения
1.5.3. Составные выражения
1.6.Примеры вычислительных задач
2. СПЕЦИАЛЬНЫЕ СРЕДСТВА ЯЗЫКА ЯРД
2.1. Диспозиции
2.2. Анализ предметной ситуации и формирование решений
2.3. Пример проблемного программирования
ЛИТЕРАТУРА

ВВЕДЕНИЕ

    Система программирования (СП) на основе языка высокого уровня ЯРД (Язык Разработки Диспозиций) [1, 2] предназначена для программирования моделей принятия решений человеком в сложных системах управления с использованием математического аппарата диспозиций [3] в его экспликации [4]. СП ЯРД была создана в 1975-1977 для ЭВМ БЭСМ-6 с использованием машинно-ориентированных языков БЭМШ [5] и АСТРА [6].
    Отметим, что в СССР было создано всего лишь три универсальных языка программирования высокого уровня (не считая ряда модификаций зарубежных языков). К их числу можно отнести РЕФАЛ (REcursive Functions Algorithmic Language, В.Ф. Турчин, 1966), ЯРД (1977) и язык визуального программирования и моделирования ДРАКОН (язык блок-схем с элементами CASE-технологий, создан в 1998 с первоначальной разработкой в рамках космической программы БУРАН). К специализированным языкам относятся: язык формульных вычислений Аналитик для ЭВМ серии МИР (1968, ИК АН УССР), машинно-ориентированные языки Алмо (В.В. Богданов, Е.А. Ермаков, А.В. Маклаков, ~1970), Сигма (А.П.Ершов, А.Ф.Рар, Г.Г. Степанов, 1966-76), Эпсилон (А.Ф. Рар, 1968-70).
    В 1977-1980 средствами СП ЯРД были реализованы две сложных модели принятия решений: летчиком на этапе приземления пассажирского самолета [7] и диспетчера управления воздушным движением крупного аэропорта (Внуково, Пулково) [8]. Фактически эти модели обеспечивали автоматическое управление прецизионными математическими моделями соответствующих объектов. Отметим, что системы автоматического приземления самолетов появились только в 90-х годах, т.е. на 15 лет позднее, а задача автоматического управления воздушным движением не ставится и поныне.

1. УНИВЕРСАЛЬНЫЙ БАЗИС ЯЗЫКА ЯРД

     Базис языка ЯРД ориентирован на оперативное решение вычислительных задач средней сложности и задач комбинаторного характера, связанных с логическим анализом и классификацией. Язык достаточно прост для изучения и использования за счет небольшого количества основных понятий и типов конструкций. Программы на ЯРДе компактны, структурированы и хорошо обозримы. Все данные являются вещественными числами.
Законченной фразой языка является предложение, построенное по формату:
<имя объекта>ё<описание объекта>;
     Оно означает актуализацию объекта посредством его описания и определения его имени, которое далее может быть использовано при описании других объектов. Объекты описываются в порядке от элементарных к составным. Головной считается процедура, описанная последней.
Объектами языка являются константы, переменные, массивы, процедуры, соответствующие имена которых есть литералы, идентификаторы, указатели массивов, указатели процедур, а описания - выражения.

1.1. Константы

Константы однозначно определяются своими именами - литералами и специально не описываются. Константы представляют десятичные числа со знаком или без, с десятичной частью (отделяемой от целой части точкой) или без нее, в представлении с экспонентой или без экспоненты, например:
обычная константа Ю литерал ЯРДа:
234 Ю 234
-3,14 Ю -3.14
+0,0521 Ю 0.0521
1,2*105 Ю 1.2Е5
-0,01*10-4 Ю -0.01Е-4

1.2. Переменные

Переменные описываются явным образом посредством сопоставления их идентификаторам (последовательность из не более чем восьми букв и цифр, начинающаяся о буквы) начальных значений (если начальное значение несущественно, оно полагается нулевым), например: Нё207.5; АЛЬФАё1;

1..3. Массивы

     Массивы могут быть произвольной размерности. Имя массива - указатель содержит идентификатор массива и заключенный в квадратные скобки список индексов массива, в качестве которых могут быть литералы, идентификаторы переменных, указатели массивов и процедур, а также арифметические выражения. Индексация массивов начинается с единицы. Размещение элементов массивов производится по столбцам, т.е. в порядке изменения индексов от последнего к первому.
     При описании массива в списке индексов перечисляются их максимальные значения, а в правой части предложения - значения элементов массива в порядке по столбцам (при этом допускается использование множителей и круглых скобок любой вложенности для выделения повторяющихся наборов значений). Если начальные значения элементов несущественны, правая часть предложения пустая и массив заполняется нулями.
Примеры:   ТАБЛ [20,4,100]ё; МАС [3,4]ё2*(1,5,-6Е5,0.1,3*7.4);

1.4. Процедуры

     Имя процедуры - указатель содержит идентификатор процедуры и заключенный в круглые скобки список параметров процедуры. При описании процедур: параметры имеют смысл формальных параметров и должны быть только идентификаторами.
Локальные переменные вводятся посредством расширения списка параметров при описании процедуры и их начальные значения равны нулю. При обращении к процедуре такие объекты опускаются из списка параметров. Например, при следующей последовательности предложений:
Хё1; Уё2; ОБМЕН(С)ёС=Х, Х=У, У=С;
где переменная С локализована в процедуре ОБМЕН, результатом выполнения ОБМЕН() будет обмен значений переменных X и У.
     При обращении к процедуре параметры в списке указателя имеют смысл фактических параметров, при этом важно их соответствие формальным параметрам в отношении последовательности, характера их использования в теле процедуры и способа передачи. Фактические параметры могут быть литералами, идентификаторами переменных, указателями таблиц и процедур или арифметическими выражениями. Параметры могут передаваться в процедуру по значению или по ссыпке (последние выделяются префиксом "звездочка" как при описании процедуры, так и при обращении к ней). Передача по ссылке обязательна для объектов, которые используются в теле процедуры как указатели процедур, а также переменные и указатели массивов, значения элементов которых следует изменить.
     Выходным значением каждой процедуры является результат последнего вычисления, поэтому процедуры могут использоваться как функции, хотя цель процедуры может состоять и в изменении значений глобальных переменных (побочный эффект). Допускается рекурсивное определение и использование процедур.
Примеры:
     а) При следующей последовательности предложений:
F(А)ёА+10; P1(*А,В)ёА(В); F2()ёP1(*Р,4);
где параметр А в процедуре P1 используется как указатель процедуры, которому при обращении из F2 сопоставляется идентификатор процедуры F, результатом выполнения головной процедуры F2 будет значение 14.
     б) При следующей последовательности предложений:
X[2]ё1,2; Р(*А)ёА[1]=А[1]+А[2]; Ф()ёF(*Х);
где параметр А в процедуре F используется в качестве указателя массива, первому элементу которого присваивается новое значение и которому при обращении из Ф сопоставляется идентификатор массива X, результатом выполнения головной процедуры Ф будет формирование значения первого элемента массива X, равного 3.
     в) При следующей последовательности предложений:
Рё5; ОБР(*Ф)ёФ=О-Ф; ОР()ёОБР(*Р);
результатом выполнения головней процедуры ОР является изменение знака переменной Р.

1.4.1. Стандартные процедуры

Ряд указателей процедур стандартно зафиксирован в языке:
SQRT(Х) - корень квадратный;
LN(Х) - натуральный логарифм;
ЕХР(Х) – экспонента;
ЕNТ(Х) – выделение целой части;
SIGN(Х) – выделение знака (результат "нуль" - положительное, " не нуль" - отрицательное значение X);
АВS(Х) – абсолютная величина;
SIN(Х) – синус;
СOS(Х) – косинус;
ASIN(Х) – арксинус;
АТG(Х) – арктангенс;
RAND(X1, X2, X3) – генерация случайных чисел по равномерному закону распределения в диапазоне X1-X2 и с дискретизацией X3;
RANG(X1, X2, X3) – генерация случайных чисел по нормальному закону распределения со средним X1, стандартным отклонением X2 и дискретизацией X3;
PRINT – вывод на печать;
и некоторые другие.
Процедура PRINT имеет произвольное число аргументов: указателей форматов и списков объектов (идентификаторы, указатели массивов), значения которых выдаются на печать по формату, указанному перед очередным списком объектов. Выдача на печать последовательных элементов массива производится по конструкции вида: (<указатель массива>,N), где N - литерал, указывающий число элементов массива. Основные форматы печати:
nFm распечатка n объектов из следующего списка в форме с экспонентой и с m значащими цифрами мантиссы (поле печати по формату F включает m+7 позиций). Вспомогательными форматами являются:
nТ - отступ от начала строки на n позиций;
nХ - пропуск от последнего печатаемого символа n пробелов. Если nX располагается совместно с форматом F, то распечатка значений списка объектов производится с интервалом n пробелов;
n/ - пропуск n пустых строк;
‘текст’ - печать текста <текст>.
     Пример: Обращение к процедуре PRINT вида:
PRINT(5Т, 'значение X: ’,1F4, X, 'значение М[4], M[5]:’, 2F2, 1X, (М[4] ,2))
при Х=29600, М[4]=-0.8, М[5]=0.001 вызовет печать следующей строки:
     значение Х: 29600 значение М[4], M[5]: -0.8 0.001

1.5. Выражения

Выражения языка разделены на пять типов: арифметические, условные, составные, отношения и присваивания.

1.5.1. Арифметические выражения. отношения и присваивания

Данные типы выражений имеют традиционный смысл и их операндами могут быть литералы, идентификаторы, указатели массивов и процедур, а также арифметические выражения. Присваивание значений осмыслено для переменных и элементов массивов. Допустимо присваивание одного значения нескольким объектам, например: А=В=С=D[Е]=4.5. В арифметическом выражении ограничителями являются круглые скобки. Используемые операции, их обозначение и ранги имеют традиционный смысл (операции одного ранга выполняются слева направо).

1.5.2. Составные выражения

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

1.5.3. Условные выражения

     Условные выражения описывают схемы переходов и логические функции на основе использования следующих изобразительных средств:
а) условие следования (если-то): Й;
б) условие альтернативы (иначе, или): | ;
в) структурные (квадратные) скобки для выделения операндов - областей действия условий следования и альтернативы с учетом их одинакового (нулевого) ранга;
г) скобки цикла: открывающая _ и закрывающая ^, ограничивающие циклически выполняемые фрагменты выражений;
д) унарная операция отрицания: Ш"нуль" = "не нуль", Ш"не нуль" = "нуль";
е) унарная операция отмены условия - перфикс "точка", блокирующая альтернативные и следующие переходы в условном выражении от помеченного "точкой" операнда, используется для выделения концевых операндов в схемах условных переходов.
     При значении очередного операнда "нуль" производится переход к ближайшему справа альтернативному операнду, в противном случае - к ближайшему следующему операнду (если такие существуют). Результатом условного выражения является значение последнего вычисленного операнда (концевого).
     Операндами условного выражения могут быть любые выражения. Открывающая скобка цикла отмечает начало цикла, а закрывающая определяет возврат к началу цикла. Расположение скобок цикла не связано с расположением структурных скобок, и выход из цикла производится в соответствии со структурой условного выражения по условиям следования и альтернативы.
Примеры:
    1) описание логической формы (bЪc)Щ(dЪfЩg)ЩШa имеет вид В|СЙ[D|[FЙG]]ЙША
    2) описание функции f(а,в), зависящей от условий:
1,  если а>1Щb>1;
2,  если а<=1Щ0<b<=1;
3,  если а<=1Щb<=0Ща=b;
4,  если (а<=1Щb<=0)Ща#b;
имеет вид: F(А,В)ёА>1|В>1Й1|[А<]1Й [0<=ВЙB<=1Й2|[B<=0ЙА==BЙ3]]]|4;
    3) функция f(а):
0, если а<0;
1,  если а>=0;
может быть представлена в следующих вариантах описания: F(А)ёА<0Й0.|1; или F2(А)ёА>=0Й1|0;
     Здесь при описании в форме F результирующее значение "нуль" помечено операцией отмены условия, так как в противном случае от операнда "нуль" всегда будет выполняться переход к альтернативному операнду "единица" (т.е. процедура F не вырабатывала бы значение "нуль"). При описании в форме F2 такого приема не требуется, так как для операнда "нуль" нет альтернативного, а для операнда "единица" нет следующего операнда. Описание процедуры F может быть произведено и посредством формирования значения вспомогательной, локальной переменной:
F1А(А,B) ёА<0Й[В=0,1]|В=1,В;
F1В(А,B)ёВ=1,А<0ЙВ=0,В;
    4) описание процедуры вычисления N! с использованием скобок цикла может быть произведено в следующих вариантах:
ФАКТ(N ,Ф, М )ёФ=М=1,_М< NЙ[Ф=Ф*М,М=М+1^] ,Ф;
ФАКТ(N,Ф)ёФ=1,_N>0Й[ Ф=Ф*N,N=N-1^] ,Ф;
ФАКТ(N, Ф)ёФ=1,_Ф=Ф*М,N=N-1,N>0Й^,Ф;

1.6. Примеры вычислительных задач

     I. Требуется составить программу вычисления частных производных первого и второго порядка функции F(х1,…,хn). Пусть х01,…,х0n - точка, в которой вычисляются производные, d1,…,dn - выбранные конечные приращения аргументов. Значение функции F в точке, где все аргументы хk, кроме двух (k=1,2,...,n, k#i,j), принимают значения х0k, а аргументы хi и хj имеют собственно значения х0i+adiС и х0j+bdj (i#j, a,b=±1), обозначим Fai,bj. Используя все 2n(n-1) таких значений, а также значения F0 функции F в центральной точке. Пусть S - сумма всех значений Fai,bj :
 Sai = сумма Fai,bj, i=1,2, ...,n, i#j, a,b=±1, Si,j = Fi,j - Fi,-j - F-i,j + F-i,-j .
     Тогда для частных производных аi= d F/d xi и аij=d F/d xij справедливы приближенные формулы:
ai = (Si-Sj)/(4di(n-1)), aij = Si,j/(4djdij), aii = ((Si+S-i)/(2(n-1))-F0-S/(2(n-1)(n-2)))/d i2.
     Текст данной процедуры на языке Pascal  будет выглядеть следующим образом:
procedure ПРОИЗВ(N:integer,F0:real;var X0,D,Al,A2: array of real); var i,j:integer; F0,S,A,AA,B,BB,Y:real;S1,S2: array [1..N,1..N] of real; label M1,M2;
begin
 for i:=1 to N do begin X[i]:=X0[i];S1[0,i]:= 0;S1[1,i]:=0;for j:=i+1 to N do S2[i,j]:=0;end;
 F0:=F(X,N);S:=0; for i:=1 to N do begin A:=1;AA:=0;
  Ml: X[i]:=X0[i]+A*D[i];for j=i+1 to N do begin B:=1;BB:=0;
   M2: X[j]:=X0[j]+B*D[j];Y:=F(X,N);S:=S+Y; S1[AA,i]:=S1[AA,i] j+Y;S1[BB,j]:=S[BB,j]+Y,
   S2[i,j]:=S2[i,j]+A*B*Y;if B>0 then begin B:=-1;BB:=1;goto M2;end;
  X[j]:=X0[j];end;
  if A>0 then begin A:=-1;AA:=1;goto M1;end;
 X[i]:=X0[i];end;
 for i:=1 to N do begin A1[i]:=(S1[0,i]-S1[1,i])/(4*(N-1)*D[i]);
  A2[i,i]:=((S1[0,i]+S1[1,i]-S/(N-2))/(2*(N-1))-F0)/D[i]^2;
  for j:=i+1 to N do A2[i,j]:=S2[i,j]/(4*D[i]*D[j]; end;end;
end;
     Аналогичное описание на ЯРДе будет иметь вид:
ПРОИЗВ(N,*F,*X0,*D,*A1,*A2,*X,*S1,*S2,i,j,F0,S,A,AA,B,BB,Y)ё
i=1,_i<NЙX[i]=X0[i]=[S1[1,i]=S1[2,i]=0, j=i+1,_j<NЙ[S2[i,j]=0,j=j+1^],i=i+1^],
F0=F(*X,N),S=0,i=1,_i<NЙ[A=1,AA=1,_X[i]=X0[i]+A*D[j],j=i+1,_j<NЙ[B=BB=1,_X[j]=X0[j]+A*D[j],
  Y=F(*X,N),S=S+Y,S1[AA,i]=S1[AA,i]+Y,S1[BB,j]=S1[BB,j]+Y,S2[i,j]=S2[i,j]+A*B*Y,
  B>0Й[B=-1,BB=2^],X[j]=X0[j],j=j+1^],
 A>0Й[A=-1,AA=2^], X[i]=X0[i],i=i+1^],
i=1,_i<N  |  [A1[ i]=(S1[1,i]+S1[2,i] )/(4*(N-1)*D[i]),
 A2[i,i]=((S1[1,i]+S1[2,i]-S/(N-2))/(2*(N-1))-F0)/D[i]^2,
 j=i+1,_j<NЙ[A2[i,j]=S2[i,j]/(4*D[i]*D[j]),j=j+1^],i=i+1^];
     Отличие последнего описания состоит в следующем:
1) нумерация массивов начинается, с единицы, поэтому для индексации массива S1 устанавливаются начальные значения АА=1,ВВ=1;
2) в связи с отсутствием меток и оператора goto возвраты на метки М1,М2 заменены циклами;
3) локальные переменные i,j,F0,S, АА,А,ВВ,В,У вводятся посредством расширения списка параметров процедуры;
4) так как массивы являются только статичнsvb и глобальными объектами, то список формальных параметров расширен идентификаторами массивов Х,S1,S2, размер которых следует определять при обращении.
     Обращение к процедуре ПРОИЗВ на ЯРДе может выглядеть следующим образом:
Мё20;ХНАЧ[20]ё<значения>;DХ[20]ё<значения>;ПР31[20,20]ё;ПР32[20,20]ё;ХТЕК[20]ё;S1[2,20]ё;S2[20,20]ё;
ФУНК(*Х,N,i,F)ёi=1,_i<N|[F=F+i*X[i]^2,i=i+1^],F;
СЧЕТ()ёПРОИЗВ(N,*ФУНК,*ХНАЧ,*DХ,* ПР31,*ПР32,*ХТЕК,*S1,*S2);

     II Пусть имеется 12 классов объектов, которые определены следующими комбинациями классифицирующих признаков Р1-Р8:
{Р1ЩР2ЩР7}, {Р1ЩР3ЩР7}, {Р1ЩР4ЩР5ЩР7},{Р1ЩР4ЩР6ЩР7},{ШР4ЩР8},
{Р1Щ(ШР2ЩШР3ЩШР4)ЩР7}, {Р1ЩР2ЩШР7ЩР8}, {Р1ЩР3ЩШР7ЩР8}, {Р1ЩР4Щ(ШР3ЩШР4)ЩР8}, {Р1ЩР4ЩР5ЩШР7ЩР8, {Р1ЩР4ЩР6ЩШР7ЩР8}, <остальное>,
причем все перечисленные конъюнкции предикатов не коммутативны. Требуется составить процедуру, формирующую описание произвольного объекта в виде набора признаков, наличие которых отвечает выполнению предикатов Р1-Р8. Будем считать, что при формировании очередного признака к описанию объекта осуществляется процедурами F1-F9. Тогда процедуру F, формирующую описание объектов, можно представить следующим образом:
                                | если P2 то F2                            |
     | если P1 то F1    | если P3 то F3                            |
     |                          | если P4 то F4 | если P5 то F5    |  если P7 то F7
F= | если P8 то F8                            | если P6 то F6    |
     | иначе F9
Описание данной процедуры на языке Pascal будет иметь вид:
procedure F;
begin
 if Pl then begin Fl();if P2 then begin F2(); goto M1;end
 else if P3 then begin F3();goto M1;end
 else if P4 then begin F4();if P5 then begin F5();goto M1;end else if P6 then F6();end;
 M1:if P7 then F6();end else if P8 then F8() else F9();
end;
     На языке ЯРД:

FёPlЙ[F1(),P2ЙF2(),P3Й[F3(),1]]|[P4ЙF4(),P5Й[F5(),1]|[P6Й[F6(),1]]]]]|[P7Й[F7(),1]]|[P8Й[F8(),1]]|F9();
Здесь предполагается, что процедуры Fi() могут вырабатывать нулевой результат, поэтому для исключения переходов от них по альтернативе использованы конструкции [Fi(),1]. Если все Fi() всегда вырабатывают ненулевой результат, то в процедуре F взамен можно использовать конструкции Fi().

2. СПЕЦИАЛЬНЫЕ СРЕДСТВА ЯЗЫКА ЯРД

     Проблемно-ориентированные средства предназначены для задач принятия решений, моделирования систем человек-машина, разработки информационно-советующих систем и обучающих тренажеров. Ниже рассмотрены модельные функции, одни из которых реализованы системно в СП ЯРД, а другие могут быть описаны в виде ЯРД-программ. Всему этому предшествует длительное изучение конкретной предметной деятельности, методология которого выходит за рамки настоящего рассмотрения.
     Общая схема организации модели принятия решений реализуется в ходе циклического пошагового процесса, элементами каждого шага которого являются 4 этапа: анализ ситуации, формирование решений, формирование команд, контроль выполнения решений, что реализуется следующими процедурами.

2.1. Диспозиции

     Понятие диспозиции было введено в работе [3] и адаптировано к задачам принятия решений в сложных системах управления в работах [4, 8]. Под диспозицией понимается процедура со структурой сложного графа, в вершинах которого находятся исполняемые процедуры уровня 1, а переход по ребру к следующей вершине  осуществляются по результатам работы процедуры предыдущей вершины, и выбор ребра перехода может осуществляться неоднозначно. Переход к следующей вершине осуществляется по номеру ребра, соответствующего значению переменной Link, которое формируют процедуры уровня 1. В Link может быть сформировано и несколько значений, тогда переход осуществляется случайным выбором из соответствующих ребер. Значение Link обнуляется при переходе к следующей вершине.

2.2. Анализ предметной ситуации и формирование решений

     Текущая предметная ситуация определяется значениями входных Z={zi} и управляющих U={ui} переменных, в результате которого формируется обобщенное описание текущей ситуации (при выполнении соответствующей диспозиции) в виде набора информационных комплексов (ИК) Аt={аi, аj, аk, …}, отражающих соотношения между предметными переменными Z, U, существенные для принятия решений. Формирование набора ИК осуществляется последовательными присваиваниями значений переменной Set.
     Формирование набора обобщенных решений (ОР) производится согласно модельного списка, в котором ИК сопоставляются ОР. Каждое решение хi=ljvkпmпnуsуp содержит следующие элементы: -
lj – оператор решения, указывающий на общую процедуру выполнения решения;
vk – переменная решения, указывающая на управляемую переменную ui из U, значение которой устанавливается в результате выполнения решения ;
пmпn – до двух пояснений решения, указывающих на процедуру вычисления устанавливаемого значения переменной ui из U;
уsуp –  до двух условий выполнения решения, указывающие на условия, которым должна удовлетворять предметная ситуация, определяющие завершение выполнения решения.
     Пара, состоящая из ИК и ОР, представляет один шаг принятия решений. Последовательность таких шагов формирует план решения конкретной задачи. Такие планы запоминаются в системной памяти, их общие шаги объединяются, в результате чего формируется структура сложно взаимосвязанного графа. В этом графе тем шагам, которые чаще используются для управления, увеличиваются их веса. Далее эта память используется в режиме стратегического планирования для генерации полного плана решения сходных задач с шагами, имеющими большие веса.

2.3. Пример проблемного программирования

     Пусть на некотором этапе анализа ситуации необходимо оценить текущее положение k-го воздушного судна (ВС) по высоте Н относительно эшелона передачи Нпер в соседний сектор (эшелоны через 300 м) и, если самолет не достиг Нпер (текущий назначенный эшелон), оценить соответствие Н и требуемого текущего эшелона Нтр.
     Пусть оператор Т7(х,у,i) проверяет условия х=у, х>у, х<у и для этих альтернатив формирует ИК аi, аi+1, аi+2, из которых могут быть: а21 означает Н=Нпер, а21 означает Н>Нпер, а22 означает Н<Нпер, а42 означает Н=Нтр, а43 означает Н>Нтр, а44 означает Н<Нтр, что описывается ЯРД-процедурой:
Т7(х,н,а,в)ёу+150<хЙв=2|[у-150>хЙв=3]| в=1,Set=а+в-1,Link=в;
Фрагмент диспозиции D4, выполняющий этот анализ, имеет вид:
и описывается на ЯРДе следующим образом:
D4ёК4,Т7(Н[k], Нпер[k],20)Й[ [1ЙК7]|[2ЙК8]|[3ЙК9];
D4ёК7,Т7(Н[k], Нтр[k],42)Й[ [1ЙК11]|[2ЙК9]|[3ЙК11];
D4ёК8,Т7(Н[k], Нтр[k],42)Й[ [1ЙК9]|[2|3ЙК12];
     Описание элементов обобщенных решений имеет вид:
v1ёНтр[k]; п4ёНпер[k];  п9ёRAND(Н[k],Нпер[k],300); у12ёENT((Н[k]+150)/300)*300=Нтр[k];
а модельный список Q1 связи ИК с ОР имеет графическую структуру вида:

и описывается на ЯРДе следующим образом:
Q1ёа20|[а21Йа43]|[а22Йа44]Й[l0,v0,п0]|[а42Й[ а21|а22]Й[[l0,v0,п0]|[l0,v1,п9,у12]]];
где решение l0,v0,п0 означает «продолжать движение, а решение l0,v1,п9,у12 означает v1=п9, т.е. команду ВС Нтр[k]=RAND(Н[k],Нпер[k],300) до выполнения условия у12.
     Общая организация процесса принятия решений при управлении одним самолетом может быть описана следующей головной ЯРД-программой:
ОРГ()ёT=0,_МПР(1,3)|Fcr()<F0Й[D4,МПР(1,1),Fcr()<FoptЙМПР(1,2),ШFц()Й[T=T+dT,ВД()^]|[D4,Fy=Fcr(),МПР(1,4)]];
где: T – текущее время; dT – интервал дискретизации Т; Fcr() – процедура оценки качества управления;  F0 – уровень нарушения Fcr(); Fopt – оптимальный уровень Fcr(); Fц() – процедура, оценивающая достижение цели; ВД() – процедура модели воздушного движения; D4 – диспозиция оценки ситуации; МПР(a,b) – системная процедура, организующая процесс принятия решений в зависимости от значения b: b=1 - формирование решений и команд; b=2 - поиск оптимального плана в памяти планов; b=3 - проверка условий выполнения решений; b=4 - запоминание выполненного плана в памяти планов.
     Более подробно вопросы моделирования принятия решений рассмотрены в [1, 4, 7, 8].

ЛИТЕРАТУРА

1. Кулаичев А.П., Новиков П.П. Концептуальное описание языка для моделирования принятия решений. Проблемы радиоэлектроники, N9, М., 1976.
2. Кулаичев А.П. Программная система для моделирования принятия решений (диссертация на соискание ученой степени кандидата физико-математических наук). М., 1980.
3. Борщов В.Б., Шрейдер Ю.А. Алгоритмы, алгоритмические языки и диспозиции. Кибернетика. №4, 1965.
4. Новиков П.П. Принятие решений человеком в авиационных системах. М.: Воздушный транспорт, 1978.
5. Бочкова Э.Ф., Езерова Г.Н., Морозова Л.Б., Штаркман В.С. Руководство по работе с программами на автокоде БЕМШ. М.: 1974.
6. Михелев В.М., Вершубский В.Ю. АСТРА – язык для записи Алгоритмов Системного программирования и ТРАнсляции. Препринт ИПМ, №61, 1976.
7. Кулаичев А.П., Новиков П.П. Управление приземлением самолета на основе модели принятия решений летчиком. Вопросы радиоэлектроники, сер. Общетехническая, N11, М., 1972.
8. Новиков П.П., Кулаичев А.П., Петрова Т.Е., Бороденков Б.М. Диспозиционный программный комплекс для моделирования систем УВД (в 5 томах). ВИНИТИ № 02850042377, М., 1985.