作为编程语言,Lingo具备基本的加减乘除运算;
同样也具有封装好的函数实现:循环,求和,求最大(小)值······
基本运算符号
LINGO中的算术运算符有以下5种:
+ 加法 | - 减法或负号 |
* 乘法 | / 除法 |
同样还有一个“^”幂次。
逻辑运算符号
在执行循环和求和等函数,需要用到逻辑判断,决定是否进行操作,就需要使用一些逻辑符号。
逻辑值之间的运算
它们操作的对象本身已经是逻辑值或逻辑表达式,计算结果也是逻辑值。
- #AND#(与)
- #OR#(或)
- #NOT#(非)
数与数之间的比较
它们操作的对象本身必须是两个数,计算得到的结果是逻辑值。
- #NE#(不等于)
- #GT#(大于)
- #GE#(大于等于)
- #LT#(小于)
- #LE#(小于等于)
函数
数学函数
- @MOD(X,Y):模函数,返回X对Y取模的结果,即X除以Y的余数,这里X和Y应该是整数。
- @POW(X,Y):指数函数,返回X^Y的值。
- @SIGN(X):符号函数,返回X的符号值(X < 0时返回-1, X > 0时返回+1, X = 0时返回0 )。
- @SIN(X):正弦函数,返回X的正弦值(X的单位是弧度)。
- @SMAX(list):最大值函数,返回一列数(list)的最大值。
- @SMIN(list):最小值函数,返回一列数(list)的最小值。
- @SQR(X):平方函数,返回X的平方(即X*X)的值。
- @SQRT(X):开平方函数,返回X的正的平方根的值。
- @TAN(X):正切函数,返回X的正切值(X的单位是弧度)。
变量定界函数
- @gin(x): 限制 x 为整数
- @bin(x): 限制 x 为 0 或 1
- @free(x): 取消 x 的非负限制,即x为任意实数
- @bnd(L, x, U): 限制 L<= x <= U
if函数
@if(logical_condition,true_result,false_result)
集合循环函数
for函数
@for(s:e)
表示对集合s中的每一个元素均进行操作e。
sum函数
@sum(s,e)
对于集合s的每一个元素,均进行e操作,然后求和。
max函数
@max(s:e)
对于集合s中的每一个元素,均进行e操作,然后取最大值,同理我们又有@min函数。
一个例题:
求向量(5,1,3,4,6,10)前5个数的最小值,后3个数的最大值。
model:
sets:
number/1. .6/: x;
endsets
data:
x=5 1 3 4 6 10;
enddata
M=@min(number(i)| i #le#5 : x);
N=@max(number(i)| i #ge#4: x);
end
prob函数
@prod(s,e)
对于集合s中的每一个元素均进行e操作,然后累积。
sets:
set4/1..10/:y;
endsets
data:
y=1,2,3,4,5,6,7,8,9,10;
enddata
p = @prod(set4(m):y(m));