1.运算符及其优先级
现在归纳一下 LING0 中的三类运算 符:算术运算符、逻辑运算符和关系运算符。
算术运算符有 5 种:+(加法),—(减法或负号),*(乘法),/(除法),^(求幂)。
逻辑运算符有 9 种:#AND#(与),#OR#(或),#NOT#(非),#EQ#(等于),#NE# (不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于)。
逻 辑运算的结果只有“真”(TRUE)和“假”(FALSE)两个值,LINGO 中用数字 1 代表 TRUE, 其他值(典型的值是 0)都是 FALSE。
关系运算符有 3 种:<(即<=,小于等于),=(等于),>(即>=,大于等于)。注意在 数学规划中约束一般没有严格小于、严格大于关系。
- 这些运算符的优先级 (同一优先级按从左到右的顺序执行;如果有括号 “()”,则括号内的表达式优先进行计算)。
2.函数总览
LINGO 中还包括相当丰富的数学函数和控制语句。在 LINGO 中建立优化模型时可以引用 大量的内部函数,这些函数以”@”符号打头。
2.1 常用的数学函数
@ABS(X) 返回变量 X 的绝对值。
@COS(X) 返回变量 X 的余弦值(X 的单位是弧度)。
@EXP(X) 返回 e X 的值(其中 e 为自然对数的底,即 2.718281…)。
@FLOOR( X) 返回的整数部分(向最靠近 0 的方向取整)。
@LGM(X) 返回变量 X 的 gamma(伽玛)函数的自然对数值(当 X 为整数时 LGM(X) = LOG(X-1)!;当 X 不为整数时,采用线性插值得到结果)。
@LOG(X) 返回变量 X 的自然对数值。
@SIGN(X) 返回变量 X 的符号值( X < 0 时返回-1, X >= 0 时返回+1)。 @SIN(X) 返回变量 X 的正弦值(X 的单位是弧度)。
@SMAX(list ) 返回一列数(list)的最大值。
@SMIN(list ) 返回一列数(list)的最小值。
@TAN(X) 返回变量 X 的正切值(X 的单位是弧度)。
2.2 集合循环函数
集合循环函数的用法如下:
@function( setname [ ( set_index_list)[ | condition]] : expression_list); 其中 function 是集合函数名,有 FOR、MAX、MIN、SUM 四种; setname 是集合名; set_index_list 是集合索引列表(不需使用索引时可以省略);condition 是用逻辑表