Целочисленные и вещественные выражения
Целочисленные выражения
Целочисленные выражения составляются из целочисленных констант, целочисленных данных, целочисленных переменных решений и стандартных целочисленных операторов, таких как +, -, *, div, mod (или %). Оператор div выполняет целочисленное деление (например, 8 div 3 == 2), а оператор mod или % выполняет деление с остатком. Кроме того, OPL поддерживает функцию abs, которая возвращает модуль значения аргумента, и встроенную константу maxint, которая представляет максимально допустимое целое число в OPL.
Обратите внимание, что выражения с большими целочисленными значениями могут вызвать переполнение. В следующем примере обнаруживается переполнение.
int a=maxint+2;
float b=infinity+2;
execute {
writeln(a);
writeln(b);
}
На вкладке Неполадки в IDE отображается сообщение об ошибке.
Большинство целочисленных выражений (таких как % и div) нельзя использовать в ограничениях из моделей CPLEX, однако они поддерживаются в моделях CP. См. также раздел Доступные ограничения при программировании в ограничениях.
Вещественные выражения
Вещественные выражения составляются из вещественных чисел, вещественных данных и переменных, а также операторов, таких как +, -, /, *. Кроме того, в языке OPL предусмотрена вещественная константа infinity, представляющая бесконечность, а также различные вещественные функции. Дополнительная информация приведена в разделе Функции OPL в кратком справочнике по языку.
Условные выражения
Условные выражения выглядят следующим образом:
(condition)?thenExpr : elseExpr
где condition - это основное условие без переменной решения. Если условие condition выполнено, то выбирается вариант thenExpr ; в противном случае выбирается вариант elseExpr.
Примеры
int value = ...;
int signValue = (value>0) ? 1 : (value<0) ? -1 : 0;
int absValue = (value>=0) ? value : -value;
Дополнительная информация о числовых функциях приведена в разделе Summary table of OPL functions в кратком справочнике по языку.
Вычисление выражений
В число целочисленных выражений входят комбинаторные выражения. Например с помощью функции count можно подсчитать число вхождений конкретного значения в массиве переменных решений. Такое выражение применимо в контексте моделирования ограничений только в том случае, если ограничения входят в состав модели, обрабатываемой службой CP Optimizer (после оператора using CP;).
Ограничение
count(x, 2) == 3;
указывает, что массив переменных x должен содержать три переменных со значением 2.
Дополнительная информация приведена в разделе count в книге Краткий справочник по языку.