Лекция: Декларации компонент модели

В дальнейшем для формального описания операторов используемформу Бэкуса—Наура (сокр. БНФ, Бэкуса—Наура форма) — формальную систему описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ-конструкция состоит из предложений вида

<определяемый символ> ::= <посл.1> | <посл.2> |... | <посл.n>,

описывающих правила. Такое правило означает, что символ <определяемый символ> может заменяться на одну из последовательностей посл.1, посл.2, ..., посл.n. Знак определения обычно выглядит как ::=. Кроме того, используются квадратные скобки: [A] — элемент A входит или не входит.

Декларации объектов модели AMPL имеют следующий общий вид

<объект> <имя объекта> [<алиас>] [<индексное выражение>] [<тело>]

<объект>::= set | param | var | arc | minimize | maximize | subject to | node

Декларации параметров

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

param <имя_переменной> <алиас> <индексное_выражение> <атрибуты>;

<алиас> ::=<литерал>

<индексное выражение>::=<set_expression_list

<арифметический_оператор>::=+ | — | less | * | / | mod | div | ^| ** |

<унарный оператор>::= + | -

<оператор редукции>::= sum | prod | max | min

Необязательные атрибуты деклараций параметров могут разделяться запятыми, ниже приведены указанные атрибуты:

Атрибут: Примечание
binary Ограничивает возможные значения переменной 0 или 1.
integer Ограничивает возможные значения переменной целочисленными значениями
symbolic Если задано symbolic, то должно также быть заданы in sexpr, а также исключаются атрибуты, требующие задания числовых значений, такие как >=<выражение>
>= <выражение> >= задает нижнюю границу
<= <выражение > <= задает верхнюю границу
:= < выражение > := задает начальное значение
default < выражение > Задает значение по умолчанию для начальных значений, которые могут быть заданы в разделе данных data
= < выражение > Задает определенную переменную

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

param comb {i in 0..n, k in 0..m} :=

if k = 0 or k = i then 1 else comb[i-1,k-1] + comb[i-1,k];

еще рефераты
Еще работы по информатике